From 42d94b4664c9da7f113c1a29985d05efbd2e6eda Mon Sep 17 00:00:00 2001 From: tobyjaguar Date: Tue, 30 Apr 2019 21:00:29 -0400 Subject: [PATCH 1/3] copy over repo for submission --- README.md | 113 +- app/.gitignore | 23 + app/README.md | 68 + app/package.json | 31 + app/public/favicon.ico | Bin 0 -> 3870 bytes app/public/index.html | 41 + app/public/manifest.json | 15 + app/src/App.css | 25 + app/src/App.js | 34 + app/src/App.test.js | 9 + app/src/Assets/Logo/logo.png | Bin 0 -> 28579 bytes app/src/Assets/Logo/piggieface_02.png | Bin 0 -> 37696 bytes app/src/components/FetchData/index.js | 269 + app/src/components/Home/index.js | 230 + .../ListItems/AddressItems/index.js | 158 + .../ListItems/AuctionItems/index.js | 177 + .../components/ListItems/BoolItems/index.js | 125 + .../ListItems/ListOwnedTokens/index.js | 63 + .../components/ListItems/UintItems/index.js | 166 + app/src/components/LoadingContainer/index.js | 83 + app/src/components/PiggyToken/index.js | 167 + app/src/contracts/ERC165.json | 1287 + app/src/contracts/IERC165.json | 300 + app/src/contracts/Migrations.json | 1384 + app/src/contracts/PaymentToken.json | 70056 +++++++++++++++ app/src/contracts/SafeMath.json | 3287 + app/src/contracts/SmartPiggies.json | 70966 ++++++++++++++++ app/src/drizzleOptions.js | 20 + app/src/index.css | 14 + app/src/index.js | 12 + app/src/logo.png | Bin 0 -> 9097 bytes app/src/serviceWorker.js | 135 + app/yarn.lock | 12298 +++ contracts/ERC165.sol | 44 + contracts/IERC165.sol | 15 + contracts/Migrations.sol | 23 + contracts/SafeMath.sol | 65 + contracts/SmartPiggies.sol | 952 + migrations/1_initial_migration.js | 5 + migrations/2_deploy_contracts.js | 5 + .../openzeppelin-solidity/CHANGELOG.md | 32 + node_modules/openzeppelin-solidity/LICENSE | 22 + node_modules/openzeppelin-solidity/README.md | 58 + .../build/contracts/Address.json | 520 + .../build/contracts/AllowanceCrowdsale.json | 2341 + .../build/contracts/Arrays.json | 2153 + .../build/contracts/CappedCrowdsale.json | 1957 + .../build/contracts/CapperRole.json | 2496 + .../build/contracts/ConditionalEscrow.json | 952 + .../build/contracts/Counter.json | 565 + .../build/contracts/Crowdsale.json | 6832 ++ .../build/contracts/ECDSA.json | 2303 + .../build/contracts/ERC165.json | 1287 + .../build/contracts/ERC165Checker.json | 3667 + .../build/contracts/ERC20.json | 11934 +++ .../build/contracts/ERC20Burnable.json | 1107 + .../build/contracts/ERC20Capped.json | 1859 + .../build/contracts/ERC20Detailed.json | 1548 + .../build/contracts/ERC20Migrator.json | 4198 + .../build/contracts/ERC20Mintable.json | 1069 + .../build/contracts/ERC20Pausable.json | 2921 + .../build/contracts/ERC20TokenMetadata.json | 979 + .../build/contracts/ERC20WithMetadata.json | 988 + .../build/contracts/ERC721.json | 15443 ++++ .../build/contracts/ERC721Burnable.json | 1035 + .../build/contracts/ERC721Enumerable.json | 8715 ++ .../build/contracts/ERC721Full.json | 1076 + .../build/contracts/ERC721Holder.json | 639 + .../build/contracts/ERC721Metadata.json | 3500 + .../contracts/ERC721MetadataMintable.json | 1450 + .../build/contracts/ERC721Mintable.json | 1146 + .../build/contracts/ERC721Pausable.json | 1956 + .../build/contracts/Escrow.json | 2521 + .../build/contracts/FinalizableCrowdsale.json | 1561 + .../build/contracts/IERC165.json | 300 + .../build/contracts/IERC20.json | 1865 + .../build/contracts/IERC721.json | 2778 + .../build/contracts/IERC721Enumerable.json | 1002 + .../build/contracts/IERC721Full.json | 685 + .../build/contracts/IERC721Metadata.json | 885 + .../build/contracts/IERC721Receiver.json | 476 + .../contracts/IncreasingPriceCrowdsale.json | 3685 + .../IndividuallyCappedCrowdsale.json | 3046 + .../build/contracts/Math.json | 1885 + .../build/contracts/MerkleProof.json | 1811 + .../build/contracts/MintedCrowdsale.json | 929 + .../build/contracts/MinterRole.json | 2496 + .../build/contracts/Ownable.json | 2835 + .../build/contracts/Pausable.json | 1998 + .../build/contracts/PausableCrowdsale.json | 886 + .../build/contracts/PauserRole.json | 2496 + .../build/contracts/PaymentSplitter.json | 7451 ++ .../contracts/PostDeliveryCrowdsale.json | 2234 + .../build/contracts/PullPayment.json | 1458 + .../build/contracts/ReentrancyGuard.json | 765 + .../build/contracts/RefundEscrow.json | 3910 + .../build/contracts/RefundableCrowdsale.json | 3265 + .../RefundablePostDeliveryCrowdsale.json | 1126 + .../build/contracts/Roles.json | 2571 + .../build/contracts/SafeERC20.json | 4099 + .../build/contracts/SafeMath.json | 3287 + .../build/contracts/Secondary.json | 1653 + .../build/contracts/SignatureBouncer.json | 6358 ++ .../build/contracts/SignedSafeMath.json | 4735 ++ .../build/contracts/SignerRole.json | 2496 + .../build/contracts/TimedCrowdsale.json | 2886 + .../build/contracts/TokenTimelock.json | 2546 + .../build/contracts/TokenVesting.json | 10031 +++ .../build/contracts/WhitelistAdminRole.json | 2498 + .../build/contracts/WhitelistCrowdsale.json | 1045 + .../build/contracts/WhitelistedRole.json | 2702 + .../contracts/.npmignore | 2 + .../contracts/ARCHITECTURE.md | 27 + .../contracts/access/Roles.sol | 40 + .../contracts/access/roles/CapperRole.sol | 43 + .../contracts/access/roles/MinterRole.sol | 43 + .../contracts/access/roles/PauserRole.sol | 43 + .../contracts/access/roles/SignerRole.sol | 43 + .../access/roles/WhitelistAdminRole.sol | 47 + .../access/roles/WhitelistedRole.sol | 50 + .../contracts/crowdsale/Crowdsale.sol | 198 + .../distribution/FinalizableCrowdsale.sol | 51 + .../distribution/PostDeliveryCrowdsale.sol | 43 + .../distribution/RefundableCrowdsale.sol | 82 + .../RefundablePostDeliveryCrowdsale.sol | 20 + .../crowdsale/emission/AllowanceCrowdsale.sol | 51 + .../crowdsale/emission/MintedCrowdsale.sol | 21 + .../price/IncreasingPriceCrowdsale.sol | 78 + .../crowdsale/validation/CappedCrowdsale.sol | 48 + .../IndividuallyCappedCrowdsale.sol | 63 + .../validation/PausableCrowdsale.sol | 21 + .../crowdsale/validation/TimedCrowdsale.sol | 77 + .../validation/WhitelistCrowdsale.sol | 21 + .../contracts/cryptography/ECDSA.sol | 59 + .../contracts/cryptography/MerkleProof.sol | 34 + .../contracts/drafts/.gitkeep | 0 .../contracts/drafts/Counter.sol | 24 + .../drafts/ERC1046/TokenMetadata.sol | 24 + .../contracts/drafts/ERC20Migrator.sol | 100 + .../contracts/drafts/SignatureBouncer.sol | 120 + .../contracts/drafts/SignedSafeMath.sol | 60 + .../contracts/drafts/TokenVesting.sol | 172 + .../contracts/introspection/ERC165.sol | 44 + .../contracts/introspection/ERC165Checker.sol | 123 + .../contracts/introspection/IERC165.sol | 15 + .../contracts/lifecycle/Pausable.sol | 57 + .../contracts/math/Math.sol | 31 + .../contracts/math/SafeMath.sol | 65 + .../contracts/ownership/Ownable.sol | 72 + .../contracts/ownership/Secondary.sol | 46 + .../contracts/payment/PaymentSplitter.sol | 112 + .../contracts/payment/PullPayment.sol | 41 + .../payment/escrow/ConditionalEscrow.sol | 22 + .../contracts/payment/escrow/Escrow.sol | 54 + .../contracts/payment/escrow/RefundEscrow.sol | 92 + .../contracts/token/ERC20/ERC20.sol | 187 + .../contracts/token/ERC20/ERC20Burnable.sol | 26 + .../contracts/token/ERC20/ERC20Capped.sol | 28 + .../contracts/token/ERC20/ERC20Detailed.sol | 42 + .../contracts/token/ERC20/ERC20Mintable.sol | 21 + .../contracts/token/ERC20/ERC20Pausable.sol | 30 + .../contracts/token/ERC20/IERC20.sol | 23 + .../contracts/token/ERC20/SafeERC20.sol | 40 + .../contracts/token/ERC20/TokenTimelock.sol | 63 + .../contracts/token/ERC721/ERC721.sol | 285 + .../contracts/token/ERC721/ERC721Burnable.sol | 18 + .../token/ERC721/ERC721Enumerable.sol | 198 + .../contracts/token/ERC721/ERC721Full.sol | 17 + .../contracts/token/ERC721/ERC721Holder.sol | 9 + .../contracts/token/ERC721/ERC721Metadata.sol | 88 + .../token/ERC721/ERC721MetadataMintable.sol | 24 + .../contracts/token/ERC721/ERC721Mintable.sol | 21 + .../contracts/token/ERC721/ERC721Pausable.sol | 22 + .../contracts/token/ERC721/IERC721.sol | 27 + .../token/ERC721/IERC721Enumerable.sol | 14 + .../contracts/token/ERC721/IERC721Full.sol | 13 + .../token/ERC721/IERC721Metadata.sol | 13 + .../token/ERC721/IERC721Receiver.sol | 25 + .../contracts/utils/Address.sol | 26 + .../contracts/utils/Arrays.sol | 48 + .../contracts/utils/ReentrancyGuard.sol | 32 + .../openzeppelin-solidity/package.json | 94 + .../openzeppelin-solidity/test/TESTING.md | 3 + .../test/access/Roles.test.js | 64 + .../test/access/roles/CapperRole.test.js | 11 + .../test/access/roles/MinterRole.test.js | 11 + .../test/access/roles/PauserRole.test.js | 11 + .../test/access/roles/PublicRole.behavior.js | 121 + .../test/access/roles/SignerRole.test.js | 11 + .../access/roles/WhitelistAdminRole.test.js | 11 + .../test/access/roles/WhitelistedRole.test.js | 12 + .../test/crowdsale/AllowanceCrowdsale.test.js | 86 + .../test/crowdsale/CappedCrowdsale.test.js | 62 + .../test/crowdsale/Crowdsale.test.js | 126 + .../crowdsale/FinalizableCrowdsale.test.js | 49 + .../IncreasingPriceCrowdsale.test.js | 119 + .../IndividuallyCappedCrowdsale.test.js | 88 + .../crowdsale/MintedCrowdsale.behavior.js | 44 + .../test/crowdsale/MintedCrowdsale.test.js | 45 + .../test/crowdsale/PausableCrowdsale.test.js | 46 + .../crowdsale/PostDeliveryCrowdsale.test.js | 69 + .../crowdsale/RefundableCrowdsale.test.js | 104 + .../RefundablePostDeliveryCrowdsale.test.js | 103 + .../test/crowdsale/TimedCrowdsale.test.js | 81 + .../test/crowdsale/WhitelistCrowdsale.test.js | 57 + .../test/cryptography/ECDSA.test.js | 126 + .../test/cryptography/MerkleProof.test.js | 57 + .../test/drafts/Counter.test.js | 38 + .../test/drafts/ERC1046/TokenMetadata.test.js | 15 + .../test/drafts/ERC20Migrator.test.js | 151 + .../test/drafts/SignatureBouncer.test.js | 214 + .../test/drafts/SignedSafeMath.test.js | 138 + .../test/drafts/TokenVesting.test.js | 164 + .../test/examples/SampleCrowdsale.test.js | 107 + .../test/examples/SimpleToken.test.js | 36 + .../test/helpers/balanceDifference.js | 12 + .../test/helpers/constants.js | 8 + .../test/helpers/ether.js | 7 + .../test/helpers/expectEvent.js | 57 + .../test/helpers/makeInterfaceId.js | 25 + .../test/helpers/merkleTree.js | 135 + .../test/helpers/send.js | 26 + .../test/helpers/setup.js | 9 + .../test/helpers/shouldFail.js | 36 + .../test/helpers/sign.js | 74 + .../helpers/test/balanceDifference.test.js | 22 + .../test/helpers/test/ether.test.js | 16 + .../test/helpers/test/expectEvent.test.js | 375 + .../test/helpers/test/makeInterfaceId.test.js | 20 + .../test/helpers/test/send.test.js | 70 + .../test/helpers/test/shouldFail.test.js | 95 + .../test/helpers/test/time.test.js | 77 + .../test/helpers/time.js | 60 + .../test/helpers/web3.js | 10 + .../test/introspection/ERC165.test.js | 23 + .../test/introspection/ERC165Checker.test.js | 136 + .../SupportsInterface.behavior.js | 56 + .../test/lifecycle/Pausable.test.js | 109 + .../test/math/Math.test.js | 56 + .../test/math/SafeMath.test.js | 143 + .../test/ownership/Ownable.behavior.js | 44 + .../test/ownership/Ownable.test.js | 11 + .../test/ownership/Secondary.test.js | 57 + .../test/payment/PaymentSplitter.test.js | 114 + .../test/payment/PullPayment.test.js | 45 + .../payment/escrow/ConditionalEscrow.test.js | 36 + .../test/payment/escrow/Escrow.behavior.js | 92 + .../test/payment/escrow/Escrow.test.js | 11 + .../test/payment/escrow/RefundEscrow.test.js | 125 + .../test/token/ERC20/ERC20.test.js | 553 + .../test/token/ERC20/ERC20Burnable.test.js | 12 + .../test/token/ERC20/ERC20Capped.test.js | 25 + .../test/token/ERC20/ERC20Detailed.test.js | 25 + .../test/token/ERC20/ERC20Mintable.test.js | 20 + .../test/token/ERC20/ERC20Pausable.test.js | 246 + .../test/token/ERC20/SafeERC20.test.js | 93 + .../test/token/ERC20/TokenTimelock.test.js | 66 + .../ERC20/behaviors/ERC20Burnable.behavior.js | 103 + .../ERC20/behaviors/ERC20Capped.behavior.js | 32 + .../ERC20/behaviors/ERC20Mintable.behavior.js | 55 + .../test/token/ERC721/ERC721.behavior.js | 521 + .../test/token/ERC721/ERC721.test.js | 112 + .../test/token/ERC721/ERC721Burnable.test.js | 19 + .../test/token/ERC721/ERC721Full.test.js | 205 + .../test/token/ERC721/ERC721Holder.test.js | 18 + .../token/ERC721/ERC721MintBurn.behavior.js | 121 + .../test/token/ERC721/ERC721Mintable.test.js | 21 + .../test/token/ERC721/ERC721Pausable.test.js | 50 + .../ERC721/ERC721PausedToken.behavior.js | 84 + .../test/utils/Address.test.js | 19 + .../test/utils/Arrays.test.js | 83 + .../test/utils/ReentrancyGuard.test.js | 29 + package-lock.json | 13 + package.json | 26 + truffle-config.js | 47 + 275 files changed, 361746 insertions(+), 6 deletions(-) create mode 100644 app/.gitignore create mode 100644 app/README.md create mode 100644 app/package.json create mode 100644 app/public/favicon.ico create mode 100644 app/public/index.html create mode 100644 app/public/manifest.json create mode 100644 app/src/App.css create mode 100644 app/src/App.js create mode 100644 app/src/App.test.js create mode 100644 app/src/Assets/Logo/logo.png create mode 100644 app/src/Assets/Logo/piggieface_02.png create mode 100644 app/src/components/FetchData/index.js create mode 100644 app/src/components/Home/index.js create mode 100644 app/src/components/ListItems/AddressItems/index.js create mode 100644 app/src/components/ListItems/AuctionItems/index.js create mode 100644 app/src/components/ListItems/BoolItems/index.js create mode 100644 app/src/components/ListItems/ListOwnedTokens/index.js create mode 100644 app/src/components/ListItems/UintItems/index.js create mode 100644 app/src/components/LoadingContainer/index.js create mode 100644 app/src/components/PiggyToken/index.js create mode 100644 app/src/contracts/ERC165.json create mode 100644 app/src/contracts/IERC165.json create mode 100644 app/src/contracts/Migrations.json create mode 100644 app/src/contracts/PaymentToken.json create mode 100644 app/src/contracts/SafeMath.json create mode 100644 app/src/contracts/SmartPiggies.json create mode 100644 app/src/drizzleOptions.js create mode 100644 app/src/index.css create mode 100644 app/src/index.js create mode 100644 app/src/logo.png create mode 100644 app/src/serviceWorker.js create mode 100644 app/yarn.lock create mode 100644 contracts/ERC165.sol create mode 100644 contracts/IERC165.sol create mode 100644 contracts/Migrations.sol create mode 100644 contracts/SafeMath.sol create mode 100644 contracts/SmartPiggies.sol create mode 100644 migrations/1_initial_migration.js create mode 100644 migrations/2_deploy_contracts.js create mode 100644 node_modules/openzeppelin-solidity/CHANGELOG.md create mode 100644 node_modules/openzeppelin-solidity/LICENSE create mode 100644 node_modules/openzeppelin-solidity/README.md create mode 100644 node_modules/openzeppelin-solidity/build/contracts/Address.json create mode 100644 node_modules/openzeppelin-solidity/build/contracts/AllowanceCrowdsale.json create mode 100644 node_modules/openzeppelin-solidity/build/contracts/Arrays.json create mode 100644 node_modules/openzeppelin-solidity/build/contracts/CappedCrowdsale.json create mode 100644 node_modules/openzeppelin-solidity/build/contracts/CapperRole.json create mode 100644 node_modules/openzeppelin-solidity/build/contracts/ConditionalEscrow.json create mode 100644 node_modules/openzeppelin-solidity/build/contracts/Counter.json create mode 100644 node_modules/openzeppelin-solidity/build/contracts/Crowdsale.json create mode 100644 node_modules/openzeppelin-solidity/build/contracts/ECDSA.json create mode 100644 node_modules/openzeppelin-solidity/build/contracts/ERC165.json create mode 100644 node_modules/openzeppelin-solidity/build/contracts/ERC165Checker.json create mode 100644 node_modules/openzeppelin-solidity/build/contracts/ERC20.json create mode 100644 node_modules/openzeppelin-solidity/build/contracts/ERC20Burnable.json create mode 100644 node_modules/openzeppelin-solidity/build/contracts/ERC20Capped.json create mode 100644 node_modules/openzeppelin-solidity/build/contracts/ERC20Detailed.json create mode 100644 node_modules/openzeppelin-solidity/build/contracts/ERC20Migrator.json create mode 100644 node_modules/openzeppelin-solidity/build/contracts/ERC20Mintable.json create mode 100644 node_modules/openzeppelin-solidity/build/contracts/ERC20Pausable.json create mode 100644 node_modules/openzeppelin-solidity/build/contracts/ERC20TokenMetadata.json create mode 100644 node_modules/openzeppelin-solidity/build/contracts/ERC20WithMetadata.json create mode 100644 node_modules/openzeppelin-solidity/build/contracts/ERC721.json create mode 100644 node_modules/openzeppelin-solidity/build/contracts/ERC721Burnable.json create mode 100644 node_modules/openzeppelin-solidity/build/contracts/ERC721Enumerable.json create mode 100644 node_modules/openzeppelin-solidity/build/contracts/ERC721Full.json create mode 100644 node_modules/openzeppelin-solidity/build/contracts/ERC721Holder.json create mode 100644 node_modules/openzeppelin-solidity/build/contracts/ERC721Metadata.json create mode 100644 node_modules/openzeppelin-solidity/build/contracts/ERC721MetadataMintable.json create mode 100644 node_modules/openzeppelin-solidity/build/contracts/ERC721Mintable.json create mode 100644 node_modules/openzeppelin-solidity/build/contracts/ERC721Pausable.json create mode 100644 node_modules/openzeppelin-solidity/build/contracts/Escrow.json create mode 100644 node_modules/openzeppelin-solidity/build/contracts/FinalizableCrowdsale.json create mode 100644 node_modules/openzeppelin-solidity/build/contracts/IERC165.json create mode 100644 node_modules/openzeppelin-solidity/build/contracts/IERC20.json create mode 100644 node_modules/openzeppelin-solidity/build/contracts/IERC721.json create mode 100644 node_modules/openzeppelin-solidity/build/contracts/IERC721Enumerable.json create mode 100644 node_modules/openzeppelin-solidity/build/contracts/IERC721Full.json create mode 100644 node_modules/openzeppelin-solidity/build/contracts/IERC721Metadata.json create mode 100644 node_modules/openzeppelin-solidity/build/contracts/IERC721Receiver.json create mode 100644 node_modules/openzeppelin-solidity/build/contracts/IncreasingPriceCrowdsale.json create mode 100644 node_modules/openzeppelin-solidity/build/contracts/IndividuallyCappedCrowdsale.json create mode 100644 node_modules/openzeppelin-solidity/build/contracts/Math.json create mode 100644 node_modules/openzeppelin-solidity/build/contracts/MerkleProof.json create mode 100644 node_modules/openzeppelin-solidity/build/contracts/MintedCrowdsale.json create mode 100644 node_modules/openzeppelin-solidity/build/contracts/MinterRole.json create mode 100644 node_modules/openzeppelin-solidity/build/contracts/Ownable.json create mode 100644 node_modules/openzeppelin-solidity/build/contracts/Pausable.json create mode 100644 node_modules/openzeppelin-solidity/build/contracts/PausableCrowdsale.json create mode 100644 node_modules/openzeppelin-solidity/build/contracts/PauserRole.json create mode 100644 node_modules/openzeppelin-solidity/build/contracts/PaymentSplitter.json create mode 100644 node_modules/openzeppelin-solidity/build/contracts/PostDeliveryCrowdsale.json create mode 100644 node_modules/openzeppelin-solidity/build/contracts/PullPayment.json create mode 100644 node_modules/openzeppelin-solidity/build/contracts/ReentrancyGuard.json create mode 100644 node_modules/openzeppelin-solidity/build/contracts/RefundEscrow.json create mode 100644 node_modules/openzeppelin-solidity/build/contracts/RefundableCrowdsale.json create mode 100644 node_modules/openzeppelin-solidity/build/contracts/RefundablePostDeliveryCrowdsale.json create mode 100644 node_modules/openzeppelin-solidity/build/contracts/Roles.json create mode 100644 node_modules/openzeppelin-solidity/build/contracts/SafeERC20.json create mode 100644 node_modules/openzeppelin-solidity/build/contracts/SafeMath.json create mode 100644 node_modules/openzeppelin-solidity/build/contracts/Secondary.json create mode 100644 node_modules/openzeppelin-solidity/build/contracts/SignatureBouncer.json create mode 100644 node_modules/openzeppelin-solidity/build/contracts/SignedSafeMath.json create mode 100644 node_modules/openzeppelin-solidity/build/contracts/SignerRole.json create mode 100644 node_modules/openzeppelin-solidity/build/contracts/TimedCrowdsale.json create mode 100644 node_modules/openzeppelin-solidity/build/contracts/TokenTimelock.json create mode 100644 node_modules/openzeppelin-solidity/build/contracts/TokenVesting.json create mode 100644 node_modules/openzeppelin-solidity/build/contracts/WhitelistAdminRole.json create mode 100644 node_modules/openzeppelin-solidity/build/contracts/WhitelistCrowdsale.json create mode 100644 node_modules/openzeppelin-solidity/build/contracts/WhitelistedRole.json create mode 100644 node_modules/openzeppelin-solidity/contracts/.npmignore create mode 100644 node_modules/openzeppelin-solidity/contracts/ARCHITECTURE.md create mode 100644 node_modules/openzeppelin-solidity/contracts/access/Roles.sol create mode 100644 node_modules/openzeppelin-solidity/contracts/access/roles/CapperRole.sol create mode 100644 node_modules/openzeppelin-solidity/contracts/access/roles/MinterRole.sol create mode 100644 node_modules/openzeppelin-solidity/contracts/access/roles/PauserRole.sol create mode 100644 node_modules/openzeppelin-solidity/contracts/access/roles/SignerRole.sol create mode 100644 node_modules/openzeppelin-solidity/contracts/access/roles/WhitelistAdminRole.sol create mode 100644 node_modules/openzeppelin-solidity/contracts/access/roles/WhitelistedRole.sol create mode 100644 node_modules/openzeppelin-solidity/contracts/crowdsale/Crowdsale.sol create mode 100644 node_modules/openzeppelin-solidity/contracts/crowdsale/distribution/FinalizableCrowdsale.sol create mode 100644 node_modules/openzeppelin-solidity/contracts/crowdsale/distribution/PostDeliveryCrowdsale.sol create mode 100644 node_modules/openzeppelin-solidity/contracts/crowdsale/distribution/RefundableCrowdsale.sol create mode 100644 node_modules/openzeppelin-solidity/contracts/crowdsale/distribution/RefundablePostDeliveryCrowdsale.sol create mode 100644 node_modules/openzeppelin-solidity/contracts/crowdsale/emission/AllowanceCrowdsale.sol create mode 100644 node_modules/openzeppelin-solidity/contracts/crowdsale/emission/MintedCrowdsale.sol create mode 100644 node_modules/openzeppelin-solidity/contracts/crowdsale/price/IncreasingPriceCrowdsale.sol create mode 100644 node_modules/openzeppelin-solidity/contracts/crowdsale/validation/CappedCrowdsale.sol create mode 100644 node_modules/openzeppelin-solidity/contracts/crowdsale/validation/IndividuallyCappedCrowdsale.sol create mode 100644 node_modules/openzeppelin-solidity/contracts/crowdsale/validation/PausableCrowdsale.sol create mode 100644 node_modules/openzeppelin-solidity/contracts/crowdsale/validation/TimedCrowdsale.sol create mode 100644 node_modules/openzeppelin-solidity/contracts/crowdsale/validation/WhitelistCrowdsale.sol create mode 100644 node_modules/openzeppelin-solidity/contracts/cryptography/ECDSA.sol create mode 100644 node_modules/openzeppelin-solidity/contracts/cryptography/MerkleProof.sol create mode 100644 node_modules/openzeppelin-solidity/contracts/drafts/.gitkeep create mode 100644 node_modules/openzeppelin-solidity/contracts/drafts/Counter.sol create mode 100644 node_modules/openzeppelin-solidity/contracts/drafts/ERC1046/TokenMetadata.sol create mode 100644 node_modules/openzeppelin-solidity/contracts/drafts/ERC20Migrator.sol create mode 100644 node_modules/openzeppelin-solidity/contracts/drafts/SignatureBouncer.sol create mode 100644 node_modules/openzeppelin-solidity/contracts/drafts/SignedSafeMath.sol create mode 100644 node_modules/openzeppelin-solidity/contracts/drafts/TokenVesting.sol create mode 100644 node_modules/openzeppelin-solidity/contracts/introspection/ERC165.sol create mode 100644 node_modules/openzeppelin-solidity/contracts/introspection/ERC165Checker.sol create mode 100644 node_modules/openzeppelin-solidity/contracts/introspection/IERC165.sol create mode 100644 node_modules/openzeppelin-solidity/contracts/lifecycle/Pausable.sol create mode 100644 node_modules/openzeppelin-solidity/contracts/math/Math.sol create mode 100644 node_modules/openzeppelin-solidity/contracts/math/SafeMath.sol create mode 100644 node_modules/openzeppelin-solidity/contracts/ownership/Ownable.sol create mode 100644 node_modules/openzeppelin-solidity/contracts/ownership/Secondary.sol create mode 100644 node_modules/openzeppelin-solidity/contracts/payment/PaymentSplitter.sol create mode 100644 node_modules/openzeppelin-solidity/contracts/payment/PullPayment.sol create mode 100644 node_modules/openzeppelin-solidity/contracts/payment/escrow/ConditionalEscrow.sol create mode 100644 node_modules/openzeppelin-solidity/contracts/payment/escrow/Escrow.sol create mode 100644 node_modules/openzeppelin-solidity/contracts/payment/escrow/RefundEscrow.sol create mode 100644 node_modules/openzeppelin-solidity/contracts/token/ERC20/ERC20.sol create mode 100644 node_modules/openzeppelin-solidity/contracts/token/ERC20/ERC20Burnable.sol create mode 100644 node_modules/openzeppelin-solidity/contracts/token/ERC20/ERC20Capped.sol create mode 100644 node_modules/openzeppelin-solidity/contracts/token/ERC20/ERC20Detailed.sol create mode 100644 node_modules/openzeppelin-solidity/contracts/token/ERC20/ERC20Mintable.sol create mode 100644 node_modules/openzeppelin-solidity/contracts/token/ERC20/ERC20Pausable.sol create mode 100644 node_modules/openzeppelin-solidity/contracts/token/ERC20/IERC20.sol create mode 100644 node_modules/openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol create mode 100644 node_modules/openzeppelin-solidity/contracts/token/ERC20/TokenTimelock.sol create mode 100644 node_modules/openzeppelin-solidity/contracts/token/ERC721/ERC721.sol create mode 100644 node_modules/openzeppelin-solidity/contracts/token/ERC721/ERC721Burnable.sol create mode 100644 node_modules/openzeppelin-solidity/contracts/token/ERC721/ERC721Enumerable.sol create mode 100644 node_modules/openzeppelin-solidity/contracts/token/ERC721/ERC721Full.sol create mode 100644 node_modules/openzeppelin-solidity/contracts/token/ERC721/ERC721Holder.sol create mode 100644 node_modules/openzeppelin-solidity/contracts/token/ERC721/ERC721Metadata.sol create mode 100644 node_modules/openzeppelin-solidity/contracts/token/ERC721/ERC721MetadataMintable.sol create mode 100644 node_modules/openzeppelin-solidity/contracts/token/ERC721/ERC721Mintable.sol create mode 100644 node_modules/openzeppelin-solidity/contracts/token/ERC721/ERC721Pausable.sol create mode 100644 node_modules/openzeppelin-solidity/contracts/token/ERC721/IERC721.sol create mode 100644 node_modules/openzeppelin-solidity/contracts/token/ERC721/IERC721Enumerable.sol create mode 100644 node_modules/openzeppelin-solidity/contracts/token/ERC721/IERC721Full.sol create mode 100644 node_modules/openzeppelin-solidity/contracts/token/ERC721/IERC721Metadata.sol create mode 100644 node_modules/openzeppelin-solidity/contracts/token/ERC721/IERC721Receiver.sol create mode 100644 node_modules/openzeppelin-solidity/contracts/utils/Address.sol create mode 100644 node_modules/openzeppelin-solidity/contracts/utils/Arrays.sol create mode 100644 node_modules/openzeppelin-solidity/contracts/utils/ReentrancyGuard.sol create mode 100644 node_modules/openzeppelin-solidity/package.json create mode 100644 node_modules/openzeppelin-solidity/test/TESTING.md create mode 100644 node_modules/openzeppelin-solidity/test/access/Roles.test.js create mode 100644 node_modules/openzeppelin-solidity/test/access/roles/CapperRole.test.js create mode 100644 node_modules/openzeppelin-solidity/test/access/roles/MinterRole.test.js create mode 100644 node_modules/openzeppelin-solidity/test/access/roles/PauserRole.test.js create mode 100644 node_modules/openzeppelin-solidity/test/access/roles/PublicRole.behavior.js create mode 100644 node_modules/openzeppelin-solidity/test/access/roles/SignerRole.test.js create mode 100644 node_modules/openzeppelin-solidity/test/access/roles/WhitelistAdminRole.test.js create mode 100644 node_modules/openzeppelin-solidity/test/access/roles/WhitelistedRole.test.js create mode 100644 node_modules/openzeppelin-solidity/test/crowdsale/AllowanceCrowdsale.test.js create mode 100644 node_modules/openzeppelin-solidity/test/crowdsale/CappedCrowdsale.test.js create mode 100644 node_modules/openzeppelin-solidity/test/crowdsale/Crowdsale.test.js create mode 100644 node_modules/openzeppelin-solidity/test/crowdsale/FinalizableCrowdsale.test.js create mode 100644 node_modules/openzeppelin-solidity/test/crowdsale/IncreasingPriceCrowdsale.test.js create mode 100644 node_modules/openzeppelin-solidity/test/crowdsale/IndividuallyCappedCrowdsale.test.js create mode 100644 node_modules/openzeppelin-solidity/test/crowdsale/MintedCrowdsale.behavior.js create mode 100644 node_modules/openzeppelin-solidity/test/crowdsale/MintedCrowdsale.test.js create mode 100644 node_modules/openzeppelin-solidity/test/crowdsale/PausableCrowdsale.test.js create mode 100644 node_modules/openzeppelin-solidity/test/crowdsale/PostDeliveryCrowdsale.test.js create mode 100644 node_modules/openzeppelin-solidity/test/crowdsale/RefundableCrowdsale.test.js create mode 100644 node_modules/openzeppelin-solidity/test/crowdsale/RefundablePostDeliveryCrowdsale.test.js create mode 100644 node_modules/openzeppelin-solidity/test/crowdsale/TimedCrowdsale.test.js create mode 100644 node_modules/openzeppelin-solidity/test/crowdsale/WhitelistCrowdsale.test.js create mode 100644 node_modules/openzeppelin-solidity/test/cryptography/ECDSA.test.js create mode 100644 node_modules/openzeppelin-solidity/test/cryptography/MerkleProof.test.js create mode 100644 node_modules/openzeppelin-solidity/test/drafts/Counter.test.js create mode 100644 node_modules/openzeppelin-solidity/test/drafts/ERC1046/TokenMetadata.test.js create mode 100644 node_modules/openzeppelin-solidity/test/drafts/ERC20Migrator.test.js create mode 100644 node_modules/openzeppelin-solidity/test/drafts/SignatureBouncer.test.js create mode 100644 node_modules/openzeppelin-solidity/test/drafts/SignedSafeMath.test.js create mode 100644 node_modules/openzeppelin-solidity/test/drafts/TokenVesting.test.js create mode 100644 node_modules/openzeppelin-solidity/test/examples/SampleCrowdsale.test.js create mode 100644 node_modules/openzeppelin-solidity/test/examples/SimpleToken.test.js create mode 100644 node_modules/openzeppelin-solidity/test/helpers/balanceDifference.js create mode 100644 node_modules/openzeppelin-solidity/test/helpers/constants.js create mode 100644 node_modules/openzeppelin-solidity/test/helpers/ether.js create mode 100644 node_modules/openzeppelin-solidity/test/helpers/expectEvent.js create mode 100644 node_modules/openzeppelin-solidity/test/helpers/makeInterfaceId.js create mode 100644 node_modules/openzeppelin-solidity/test/helpers/merkleTree.js create mode 100644 node_modules/openzeppelin-solidity/test/helpers/send.js create mode 100644 node_modules/openzeppelin-solidity/test/helpers/setup.js create mode 100644 node_modules/openzeppelin-solidity/test/helpers/shouldFail.js create mode 100644 node_modules/openzeppelin-solidity/test/helpers/sign.js create mode 100644 node_modules/openzeppelin-solidity/test/helpers/test/balanceDifference.test.js create mode 100644 node_modules/openzeppelin-solidity/test/helpers/test/ether.test.js create mode 100644 node_modules/openzeppelin-solidity/test/helpers/test/expectEvent.test.js create mode 100644 node_modules/openzeppelin-solidity/test/helpers/test/makeInterfaceId.test.js create mode 100644 node_modules/openzeppelin-solidity/test/helpers/test/send.test.js create mode 100644 node_modules/openzeppelin-solidity/test/helpers/test/shouldFail.test.js create mode 100644 node_modules/openzeppelin-solidity/test/helpers/test/time.test.js create mode 100644 node_modules/openzeppelin-solidity/test/helpers/time.js create mode 100644 node_modules/openzeppelin-solidity/test/helpers/web3.js create mode 100644 node_modules/openzeppelin-solidity/test/introspection/ERC165.test.js create mode 100644 node_modules/openzeppelin-solidity/test/introspection/ERC165Checker.test.js create mode 100644 node_modules/openzeppelin-solidity/test/introspection/SupportsInterface.behavior.js create mode 100644 node_modules/openzeppelin-solidity/test/lifecycle/Pausable.test.js create mode 100644 node_modules/openzeppelin-solidity/test/math/Math.test.js create mode 100644 node_modules/openzeppelin-solidity/test/math/SafeMath.test.js create mode 100644 node_modules/openzeppelin-solidity/test/ownership/Ownable.behavior.js create mode 100644 node_modules/openzeppelin-solidity/test/ownership/Ownable.test.js create mode 100644 node_modules/openzeppelin-solidity/test/ownership/Secondary.test.js create mode 100644 node_modules/openzeppelin-solidity/test/payment/PaymentSplitter.test.js create mode 100644 node_modules/openzeppelin-solidity/test/payment/PullPayment.test.js create mode 100644 node_modules/openzeppelin-solidity/test/payment/escrow/ConditionalEscrow.test.js create mode 100644 node_modules/openzeppelin-solidity/test/payment/escrow/Escrow.behavior.js create mode 100644 node_modules/openzeppelin-solidity/test/payment/escrow/Escrow.test.js create mode 100644 node_modules/openzeppelin-solidity/test/payment/escrow/RefundEscrow.test.js create mode 100644 node_modules/openzeppelin-solidity/test/token/ERC20/ERC20.test.js create mode 100644 node_modules/openzeppelin-solidity/test/token/ERC20/ERC20Burnable.test.js create mode 100644 node_modules/openzeppelin-solidity/test/token/ERC20/ERC20Capped.test.js create mode 100644 node_modules/openzeppelin-solidity/test/token/ERC20/ERC20Detailed.test.js create mode 100644 node_modules/openzeppelin-solidity/test/token/ERC20/ERC20Mintable.test.js create mode 100644 node_modules/openzeppelin-solidity/test/token/ERC20/ERC20Pausable.test.js create mode 100644 node_modules/openzeppelin-solidity/test/token/ERC20/SafeERC20.test.js create mode 100644 node_modules/openzeppelin-solidity/test/token/ERC20/TokenTimelock.test.js create mode 100644 node_modules/openzeppelin-solidity/test/token/ERC20/behaviors/ERC20Burnable.behavior.js create mode 100644 node_modules/openzeppelin-solidity/test/token/ERC20/behaviors/ERC20Capped.behavior.js create mode 100644 node_modules/openzeppelin-solidity/test/token/ERC20/behaviors/ERC20Mintable.behavior.js create mode 100644 node_modules/openzeppelin-solidity/test/token/ERC721/ERC721.behavior.js create mode 100644 node_modules/openzeppelin-solidity/test/token/ERC721/ERC721.test.js create mode 100644 node_modules/openzeppelin-solidity/test/token/ERC721/ERC721Burnable.test.js create mode 100644 node_modules/openzeppelin-solidity/test/token/ERC721/ERC721Full.test.js create mode 100644 node_modules/openzeppelin-solidity/test/token/ERC721/ERC721Holder.test.js create mode 100644 node_modules/openzeppelin-solidity/test/token/ERC721/ERC721MintBurn.behavior.js create mode 100644 node_modules/openzeppelin-solidity/test/token/ERC721/ERC721Mintable.test.js create mode 100644 node_modules/openzeppelin-solidity/test/token/ERC721/ERC721Pausable.test.js create mode 100644 node_modules/openzeppelin-solidity/test/token/ERC721/ERC721PausedToken.behavior.js create mode 100644 node_modules/openzeppelin-solidity/test/utils/Address.test.js create mode 100644 node_modules/openzeppelin-solidity/test/utils/Arrays.test.js create mode 100644 node_modules/openzeppelin-solidity/test/utils/ReentrancyGuard.test.js create mode 100644 package-lock.json create mode 100644 package.json create mode 100644 truffle-config.js diff --git a/README.md b/README.md index f64c05f..64f68ef 100644 --- a/README.md +++ b/README.md @@ -1,10 +1,111 @@ -Alethio Gitcoin Bounties -======================== +SmartPiggies + += -Alethio is a comprehensive suite of blockchain exploration and analytics products for the Ethereum network. We're on a mission of making Ethereum more transparent and accessible to everybody. +An open source standard for a free peer-to-peer global derivatives market. +- -We've recently launched our API as a direct way for developers to get real-time access to synthesised, indexed on-chain data in a robust and reliable way. We're looking to support and accelerate the growth of a new wave of Ethereum-powered tools, products and services and we need your help with building awesome, useful products for the Ethereum community by making use of the Alethio API to handle enriched, aggregated on-chain data in ways that haven't been possible before. +SmartPiggies are non-fungible digital contracts that provide their owners with protection against undesirable changes in the price of any asset, product, or service. They also have a native self-auctioning mechanism that allows them to globally market themselves, eliminating the need for exchanges. -We are strong believers in open source and decentralization - so we've also released our open-source suite, comprised of the Ethereum Lite Explorer and the EthStats network monitor - two powerful tools for monitoring the activity of any Ethereum-like (private/dev or public) network. We need your help with creating additional documentation that will ultimately make these tools more easily accessible to the community. +Historically, centralized authorities and rent collecting intermediaries have been critical due the trust and guarantees they inject into modern financial commitments. Today, with the guarantees provided by the Ethereum network and recent innovations provided by the global community, it is now possible to create robust programmable digital assets with linked to the real world, yet have no dependencies on centralized authorities or intermediaries. -Happy hacking! +SmartPiggies are an example of simple, useful, globally accessible, peer-to-peer financial agreements that can exist on the Ethereum network today. + +For more information on the project and to read the pinkpaper please visit the [website](https://smartpiggies.com). + +## Work done during the hackathon + +For the Ethereal Hackathon we implemented the Aleth.io APIs in a React dapp to build out a token explorer for SmartPiggies. Our explorer, which we named Amerigo, constructs a React UI, using Aleth.io and Drizzle, that allows users to explore SmartPiggies non-fungible tokens. Amerigo retrieves the event data emitted from the SmartPiggies contract and displays this token data in a helpful format so users can view the current real-time global market for SmartPiggies NFTs. + +SmartPiggies tokens hold many parameters as well as auction information. The explorer is a critical tool for token introspection and provides market making opportunities for users. + +To provide users this information we use the the Aleth.io API endpoint, + +`https://api.goerli.aleth.io/v1/contracts/{contract}/logEntries` + +to fetch all event information from the SmartPiggies contract. + +We filter for creation events and then call, + +`https://api.aleth.io/v1/log-entries/{id}/transaction` + +to fetch the transaction associated with the creation of a new token. + + +We filter this transaction information to extract a contract address for an oracle resolver that was included as an argument to create the token. We make a call with this address to, + +`https://api.goerli.aleth.io/v1/contracts/{address}` + +to fetch the oracle resolver parameters supplied during its creation. From this we get information about the associated oracle which will be called during the settlement process. + +From the oracle parameters we save the underlying and the data source, and api the oracle will use to return the price. From the other calls we save the token id, strike price, and expiry information for each NFT. We also make an additional filter for auction information that is returned with the first call for `logEntries.` + +The dapp displays this information in a component that will provide full token introspection from a clickable dropdown as well as filter options to view only tokens on auction. If the token is on auction, meaning it can be purchased, the dropdown will contain a button for purchase. + +Our goal is to continue to build out this design to offer a full feature explorer for the SmartPiggies platform which will include full market introspection, as well as the ability to purchase directly within the explorer. + +## A specific industry, user, and use case for which you are solving + +SmartPiggies is a decentralized financial product for use by small business and individuals to hedge against price movements of any asset, product, or service for which a price can be retrieved, + +SmartPiggies are effectively a price insurance product. SmartPiggies are effective for a specified period of time, provide a specified maximum amount of coverage, and pay out based on specified conditions as would any typical insurance product. An insurance issuer receives a premium in exchange providing this insurance. + +We envision that the primary purchasers of SmartPiggy contracts will be small businesses that are underserved by the global financial system and are exposed to fluctuations in prices for goods, services, and exchange rates that that are inherent to their business activities. + +## Unique insights about the industry gathered through primary or secondary research + +The DeFi industry has spawned a number of lending and derivatives products, as well as novel enabling technologies such as stable tokens intended to peg to the value of “real-world” currencies. However, as far as the team is aware, no product offering price insurance in the manner of SmartPiggies yet exists. The industry in general offers users the potential to earn “passive income” on various lending products, but this often entails turning over control of one’s cryptocurrency to a lending platform with the expectation that one will be compensated in interest, and eventually, the return of one’s principal. With SmartPiggies, underwriters have the potential to earn a “passive” income stream through insurance premia, without turning their funds over to a third party -- all funds remain locked in the SmartPiggies contract with no capability for those funds to be moved by a privileged account. The only factors affecting the ultimate distribution of funds are the parameters of the smart contract which both the underwriter and purchaser agreed to at the time the option was sold. + +Other derivatives in the DeFi industry space do not appear to currently offer the flexibility of SmartPiggies, or the ability to easily hedge risks in non-cryptocurrency financial instruments through the use of stable token payouts. The team believes that this capability opens up many more use cases for decentralized derivatives than the industry has thus far offered to customers. + +## Proof that the market you've identified is primed to be disrupted in the next 6-12 months + +As we have seen significant cryptocurrency adoption in countries where the need is great, we also believe that small businesses and individuals around the world that suffer through fluctuations in price will immediately grasp that SmartPiggies may be useful to them. + +In our view we are not disrupting an existing market. We are creating an ecosystem that generates a financial service that has never before been available to the vast majority of humanity due to scale and and availability issues inherent to the existing global financial and legal system. + +## Proof that blockchain adds significant value to this solution over centralized alternatives + +The current centralized market for bespoke derivatives is largely closed to non-institutional investors, given the relationship nature of the business, and the cost of the infrastructure required for large institutions to manage their derivatives desks and legal teams. However, price insurance is not a tool which only has value to institutional investors -- many small business owners, for example, could likely utilize bespoke options to protect their enterprises from price shocks if they had access to them. With SmartPiggies, such users can realize the value of such insurance, and underwriters wishing to earn income from premia may issue SmartPiggies without being a large financial institution. Thanks to the programmability and security guarantees of the blockchain, the purchaser of a SmartPiggies option does not need to worry about the counterparty risk of any specific underwriter -- all collateral associated with the option is secured on-chain out of the control of either counterparty before the option is even sold. This increase in market access for both buyers and sellers of price insurance marks a definite improvement over the status quo in current centralized markets for bespoke options. + +## Project Rollout + +Our rollout plans are flexible at the moment. + +For now we are focused on on constructing the MVP contracts and minimal UI components. + +If we manage to raise funding at some point in the future we can consider outreach and education efforts, a more sophisticated UI, publishing research and use cases, providing a trusted exchange service, and providing liquidity to the market. +As of now we are unfunded and as such our scope is limited to working on an MVP in our spare time. + +## Team +[Michael Arief](https://www.linkedin.com/in/mikearief/) + +[Toby Algya](https://www.linkedin.com/in/toby-algya-58997712/) + +[Alex Lee](https://www.linkedin.com/in/ahlee328/) + +## Tech stack + +- Ethereum + +- Aleth.io + +- Goerli Testnet + +- Metamask + +- Solidity + +- OpenZeppelin + +- Truffle + +- Drizzle + +- Ganache + +- ReactJS + +- NodeJS + +- Chainlink diff --git a/app/.gitignore b/app/.gitignore new file mode 100644 index 0000000..4d29575 --- /dev/null +++ b/app/.gitignore @@ -0,0 +1,23 @@ +# See https://help.github.com/articles/ignoring-files/ for more about ignoring files. + +# dependencies +/node_modules +/.pnp +.pnp.js + +# testing +/coverage + +# production +/build + +# misc +.DS_Store +.env.local +.env.development.local +.env.test.local +.env.production.local + +npm-debug.log* +yarn-debug.log* +yarn-error.log* diff --git a/app/README.md b/app/README.md new file mode 100644 index 0000000..9d9614c --- /dev/null +++ b/app/README.md @@ -0,0 +1,68 @@ +This project was bootstrapped with [Create React App](https://github.com/facebook/create-react-app). + +## Available Scripts + +In the project directory, you can run: + +### `npm start` + +Runs the app in the development mode.
+Open [http://localhost:3000](http://localhost:3000) to view it in the browser. + +The page will reload if you make edits.
+You will also see any lint errors in the console. + +### `npm test` + +Launches the test runner in the interactive watch mode.
+See the section about [running tests](https://facebook.github.io/create-react-app/docs/running-tests) for more information. + +### `npm run build` + +Builds the app for production to the `build` folder.
+It correctly bundles React in production mode and optimizes the build for the best performance. + +The build is minified and the filenames include the hashes.
+Your app is ready to be deployed! + +See the section about [deployment](https://facebook.github.io/create-react-app/docs/deployment) for more information. + +### `npm run eject` + +**Note: this is a one-way operation. Once you `eject`, you can’t go back!** + +If you aren’t satisfied with the build tool and configuration choices, you can `eject` at any time. This command will remove the single build dependency from your project. + +Instead, it will copy all the configuration files and the transitive dependencies (Webpack, Babel, ESLint, etc) right into your project so you have full control over them. All of the commands except `eject` will still work, but they will point to the copied scripts so you can tweak them. At this point you’re on your own. + +You don’t have to ever use `eject`. The curated feature set is suitable for small and middle deployments, and you shouldn’t feel obligated to use this feature. However we understand that this tool wouldn’t be useful if you couldn’t customize it when you are ready for it. + +## Learn More + +You can learn more in the [Create React App documentation](https://facebook.github.io/create-react-app/docs/getting-started). + +To learn React, check out the [React documentation](https://reactjs.org/). + +### Code Splitting + +This section has moved here: https://facebook.github.io/create-react-app/docs/code-splitting + +### Analyzing the Bundle Size + +This section has moved here: https://facebook.github.io/create-react-app/docs/analyzing-the-bundle-size + +### Making a Progressive Web App + +This section has moved here: https://facebook.github.io/create-react-app/docs/making-a-progressive-web-app + +### Advanced Configuration + +This section has moved here: https://facebook.github.io/create-react-app/docs/advanced-configuration + +### Deployment + +This section has moved here: https://facebook.github.io/create-react-app/docs/deployment + +### `npm run build` fails to minify + +This section has moved here: https://facebook.github.io/create-react-app/docs/troubleshooting#npm-run-build-fails-to-minify diff --git a/app/package.json b/app/package.json new file mode 100644 index 0000000..a05f3fa --- /dev/null +++ b/app/package.json @@ -0,0 +1,31 @@ +{ + "name": "app", + "version": "0.1.0", + "private": true, + "dependencies": { + "@material-ui/core": "^3.9.3", + "blubird": "^0.0.1-security", + "drizzle": "^1.2.4", + "drizzle-react": "^1.2.0", + "drizzle-react-components": "^1.2.1", + "react": "^16.7.0", + "react-dom": "^16.7.0", + "react-router-dom": "^5.0.0", + "react-scripts": "2.1.3" + }, + "scripts": { + "start": "react-scripts start", + "build": "react-scripts build", + "test": "react-scripts test", + "eject": "react-scripts eject" + }, + "eslintConfig": { + "extends": "react-app" + }, + "browserslist": [ + ">0.2%", + "not dead", + "not ie <= 11", + "not op_mini all" + ] +} diff --git a/app/public/favicon.ico b/app/public/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..a11777cc471a4344702741ab1c8a588998b1311a GIT binary patch literal 3870 zcma);c{J4h9>;%nil|2-o+rCuEF-(I%-F}ijC~o(k~HKAkr0)!FCj~d>`RtpD?8b; zXOC1OD!V*IsqUwzbMF1)-gEDD=A573Z-&G7^LoAC9|WO7Xc0Cx1g^Zu0u_SjAPB3vGa^W|sj)80f#V0@M_CAZTIO(t--xg= z!sii`1giyH7EKL_+Wi0ab<)&E_0KD!3Rp2^HNB*K2@PHCs4PWSA32*-^7d{9nH2_E zmC{C*N*)(vEF1_aMamw2A{ZH5aIDqiabnFdJ|y0%aS|64E$`s2ccV~3lR!u<){eS` z#^Mx6o(iP1Ix%4dv`t@!&Za-K@mTm#vadc{0aWDV*_%EiGK7qMC_(`exc>-$Gb9~W!w_^{*pYRm~G zBN{nA;cm^w$VWg1O^^<6vY`1XCD|s_zv*g*5&V#wv&s#h$xlUilPe4U@I&UXZbL z0)%9Uj&@yd03n;!7do+bfixH^FeZ-Ema}s;DQX2gY+7g0s(9;`8GyvPY1*vxiF&|w z>!vA~GA<~JUqH}d;DfBSi^IT*#lrzXl$fNpq0_T1tA+`A$1?(gLb?e#0>UELvljtQ zK+*74m0jn&)5yk8mLBv;=@}c{t0ztT<v;Avck$S6D`Z)^c0(jiwKhQsn|LDRY&w(Fmi91I7H6S;b0XM{e zXp0~(T@k_r-!jkLwd1_Vre^v$G4|kh4}=Gi?$AaJ)3I+^m|Zyj#*?Kp@w(lQdJZf4 z#|IJW5z+S^e9@(6hW6N~{pj8|NO*>1)E=%?nNUAkmv~OY&ZV;m-%?pQ_11)hAr0oAwILrlsGawpxx4D43J&K=n+p3WLnlDsQ$b(9+4 z?mO^hmV^F8MV{4Lx>(Q=aHhQ1){0d*(e&s%G=i5rq3;t{JC zmgbn5Nkl)t@fPH$v;af26lyhH!k+#}_&aBK4baYPbZy$5aFx4}ka&qxl z$=Rh$W;U)>-=S-0=?7FH9dUAd2(q#4TCAHky!$^~;Dz^j|8_wuKc*YzfdAht@Q&ror?91Dm!N03=4=O!a)I*0q~p0g$Fm$pmr$ zb;wD;STDIi$@M%y1>p&_>%?UP($15gou_ue1u0!4(%81;qcIW8NyxFEvXpiJ|H4wz z*mFT(qVx1FKufG11hByuX%lPk4t#WZ{>8ka2efjY`~;AL6vWyQKpJun2nRiZYDij$ zP>4jQXPaP$UC$yIVgGa)jDV;F0l^n(V=HMRB5)20V7&r$jmk{UUIe zVjKroK}JAbD>B`2cwNQ&GDLx8{pg`7hbA~grk|W6LgiZ`8y`{Iq0i>t!3p2}MS6S+ zO_ruKyAElt)rdS>CtF7j{&6rP-#c=7evGMt7B6`7HG|-(WL`bDUAjyn+k$mx$CH;q2Dz4x;cPP$hW=`pFfLO)!jaCL@V2+F)So3}vg|%O*^T1j>C2lx zsURO-zIJC$^$g2byVbRIo^w>UxK}74^TqUiRR#7s_X$e)$6iYG1(PcW7un-va-S&u zHk9-6Zn&>T==A)lM^D~bk{&rFzCi35>UR!ZjQkdSiNX*-;l4z9j*7|q`TBl~Au`5& z+c)*8?#-tgUR$Zd%Q3bs96w6k7q@#tUn`5rj+r@_sAVVLqco|6O{ILX&U-&-cbVa3 zY?ngHR@%l{;`ri%H*0EhBWrGjv!LE4db?HEWb5mu*t@{kv|XwK8?npOshmzf=vZA@ zVSN9sL~!sn?r(AK)Q7Jk2(|M67Uy3I{eRy z_l&Y@A>;vjkWN5I2xvFFTLX0i+`{qz7C_@bo`ZUzDugfq4+>a3?1v%)O+YTd6@Ul7 zAfLfm=nhZ`)P~&v90$&UcF+yXm9sq!qCx3^9gzIcO|Y(js^Fj)Rvq>nQAHI92ap=P z10A4@prk+AGWCb`2)dQYFuR$|H6iDE8p}9a?#nV2}LBCoCf(Xi2@szia7#gY>b|l!-U`c}@ zLdhvQjc!BdLJvYvzzzngnw51yRYCqh4}$oRCy-z|v3Hc*d|?^Wj=l~18*E~*cR_kU z{XsxM1i{V*4GujHQ3DBpl2w4FgFR48Nma@HPgnyKoIEY-MqmMeY=I<%oG~l!f<+FN z1ZY^;10j4M4#HYXP zw5eJpA_y(>uLQ~OucgxDLuf}fVs272FaMxhn4xnDGIyLXnw>Xsd^J8XhcWIwIoQ9} z%FoSJTAGW(SRGwJwb=@pY7r$uQRK3Zd~XbxU)ts!4XsJrCycrWSI?e!IqwqIR8+Jh zlRjZ`UO1I!BtJR_2~7AbkbSm%XQqxEPkz6BTGWx8e}nQ=w7bZ|eVP4?*Tb!$(R)iC z9)&%bS*u(lXqzitAN)Oo=&Ytn>%Hzjc<5liuPi>zC_nw;Z0AE3Y$Jao_Q90R-gl~5 z_xAb2J%eArrC1CN4G$}-zVvCqF1;H;abAu6G*+PDHSYFx@Tdbfox*uEd3}BUyYY-l zTfEsOqsi#f9^FoLO;ChK<554qkri&Av~SIM*{fEYRE?vH7pTAOmu2pz3X?Wn*!ROX ztd54huAk&mFBemMooL33RV-*1f0Q3_(7hl$<#*|WF9P!;r;4_+X~k~uKEqdzZ$5Al zV63XN@)j$FN#cCD;ek1R#l zv%pGrhB~KWgoCj%GT?%{@@o(AJGt*PG#l3i>lhmb_twKH^EYvacVY-6bsCl5*^~L0 zonm@lk2UvvTKr2RS%}T>^~EYqdL1q4nD%0n&Xqr^cK^`J5W;lRRB^R-O8b&HENO||mo0xaD+S=I8RTlIfVgqN@SXDr2&-)we--K7w= zJVU8?Z+7k9dy;s;^gDkQa`0nz6N{T?(A&Iz)2!DEecLyRa&FI!id#5Z7B*O2=PsR0 zEvc|8{NS^)!d)MDX(97Xw}m&kEO@5jqRaDZ!+%`wYOI<23q|&js`&o4xvjP7D_xv@ z5hEwpsp{HezI9!~6O{~)lLR@oF7?J7i>1|5a~UuoN=q&6N}EJPV_GD`&M*v8Y`^2j zKII*d_@Fi$+i*YEW+Hbzn{iQk~yP z>7N{S4)r*!NwQ`(qcN#8SRQsNK6>{)X12nbF`*7#ecO7I)Q$uZsV+xS4E7aUn+U(K baj7?x%VD!5Cxk2YbYLNVeiXvvpMCWYo=by@ literal 0 HcmV?d00001 diff --git a/app/public/index.html b/app/public/index.html new file mode 100644 index 0000000..323182f --- /dev/null +++ b/app/public/index.html @@ -0,0 +1,41 @@ + + + + + + + + + + + React App + + + +
+ + + diff --git a/app/public/manifest.json b/app/public/manifest.json new file mode 100644 index 0000000..1f2f141 --- /dev/null +++ b/app/public/manifest.json @@ -0,0 +1,15 @@ +{ + "short_name": "React App", + "name": "Create React App Sample", + "icons": [ + { + "src": "favicon.ico", + "sizes": "64x64 32x32 24x24 16x16", + "type": "image/x-icon" + } + ], + "start_url": ".", + "display": "standalone", + "theme_color": "#000000", + "background_color": "#ffffff" +} diff --git a/app/src/App.css b/app/src/App.css new file mode 100644 index 0000000..f03a8df --- /dev/null +++ b/app/src/App.css @@ -0,0 +1,25 @@ +.App { + margin: 2rem; +} + +.Main { + position: relative; + top: 50px; + margin: 2rem auto auto; +} + +.WelcomeBar { + padding: 10px 10px 10px; +} + +.Footer { + position: fixed; + bottom: 0; + margin: 2rem auto auto; +} + +.section { + text-align: left; + max-width: 720px; + margin: 4rem auto auto; +} diff --git a/app/src/App.js b/app/src/App.js new file mode 100644 index 0000000..6bba15b --- /dev/null +++ b/app/src/App.js @@ -0,0 +1,34 @@ +import React, { Component } from "react"; +import { DrizzleProvider } from "drizzle-react"; +import { HashRouter, + Route, + Switch, + Redirect } from 'react-router-dom'; + +import LoadingContainer from "./components/LoadingContainer"; +import Home from "./components/Home"; + +import "./App.css"; +import drizzleOptions from "./drizzleOptions"; + +class App extends Component { + render() { + return ( + + + +
+ + + + + +
+
+
+
+ ); + } +} + +export default App; diff --git a/app/src/App.test.js b/app/src/App.test.js new file mode 100644 index 0000000..a754b20 --- /dev/null +++ b/app/src/App.test.js @@ -0,0 +1,9 @@ +import React from 'react'; +import ReactDOM from 'react-dom'; +import App from './App'; + +it('renders without crashing', () => { + const div = document.createElement('div'); + ReactDOM.render(, div); + ReactDOM.unmountComponentAtNode(div); +}); diff --git a/app/src/Assets/Logo/logo.png b/app/src/Assets/Logo/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..729be10130b333e20c10692f89b0e2e41815be4c GIT binary patch literal 28579 zcmbrlg;!h8^FE#s+}&M@TXDA_HJk#)f|WvXiU$Z*QnWy^;#Rb{YjBDecemp1^2_V} zIp4qFm)xA3b64)n?##2Z&)of{sjiBLO^poz0PtR^fwchu5G4QrtieP_-l>!hoJIbj zTf9*P1D^l;X0;Z?Bky22s~Nf>Tg?3T11fT)dLeIOe0lXw8Dj&55JTXF|D44Q0Kf=% z1y<1Ynm<_bPNUOHkv-Y@UEF;6^C;v12Md)Lld;6m05zDSie*)Ny}z)(kmco`02e;~ z9!!!C5eZ+1=g5i36HfyTQRccr*aGF%7=gr9?&JS1myNF9r(a*I_Thg2ozy&e29?V+ z6mDJg-=CD&DJs^%U}XOP{mFSGOoSEQO^>FC6{^I?lTq4$sR0OLTMEl%*YT_34jYX_ zNCLc2dl~Aipwk)8nfM_WPm=(UGs~ISlAt!geGm_a1A{pr7gBZ(5> z0avnZivTbBF%01T2oZ(4Z!j5aj`o7M@0@w!mKhVejgs?)f7_(aDpjEDM^1V=pS6p8 z=A2SSB0&hDUdNrpIeI>;UudB}5Rv_OLxhe{Vm^CZqj+o78&3RJ-XWv)Mwsj|QU2rA zXVWZ${O`{-cAt-^{ig+&N;&@510t1x@6&7YbSIz>8El?7y(K`M(rU16ispr?Qr~A~8dK0P$&E?DARA?gYzK}xQLh2g?-_8Ab*eX@^B+CCF< zd)4oz;U6)@o^w6#F*^RO?Y9_;k5*{!^A68olf~?74;!k&cy#(ly zGhe}}A7sN=?Jd(?AYjk%s~gN!02|SpXqC*B1)yzG1HNHD-=V;c@m3OBUdaY1#;OJ* z=Ky~9X`=N_G|8KQn1RLGSppNwZ{l?RJC@`IcV3m4L9HT`s?R2-5 z|4O`d;gkaK!X(jA!!rWd6RA9x0DHqOLpa*)S@N5L`ZG+T9@W9tb5*ZIHz}AK=%TVo zcdIy-;@v$chL8w^PITzR*zRQR_t&5v=R^$n2scu`Jn!QF>B100u66O>ED^(>XumTd zOFWC>TkJL)*{!^5{(I!EOx;rTmz?9|`|M=Wi_zj@PjS<=pV>(n%RMZrq%t%gc^y57 z8}JbMOg9aqR4#m!?j5gayf*)9`YGvmby9|H_XCx@j+bn0S>>d$hFIcboJzHv8-7|6QsLJZ-twY;z ztK9=x!H&1px6XpCw$RHA{`Rnb?=_9rH!*9=y#cXr_%D%VNP#UZHx8_W9g>@we0;w6 z01WLY4sgOuea6Y@&2vt?e2;`Ic`lDY&h{ZsrK;!7aJFcDs%k37>f_(Vo=ifP7-eB&0K#eoGM6|PF|zvig$05! zd>bNbb2`QKl1AR7`+4$1q5E^9M1)*dt~%-D)2Baj#p`^4Kk(^i^}spPliz(^PW+J8S;|8Z3t4daXZ-i zz@r-Q2N{Fki8_mh)x3YXY&5=je;N2Pq-Q<2*fRri^}}W7Y^SZ`y=A+7z*4S5Wk$!% z8JoXAoH4DF9RZy`L>36k(YmZfex9S|D)2ik{u5>YDbYUHIe$2xE^OW~}&h>|+_T}U=?6Bg>=o)aeW(R5^Jr;zx;pn$m*SNa8 z*;k7MgS#rN&j}k4le_M&=^g>&2iowG*%wd87gdvYHx&`TWP7ya6&W$HN z$TFJkNL1FNtlbe&ylW2(oz?OGH%KD0k%o!G9==BkhzCYmSPxhcTk^u zGjM`autK{-eUMh~ugPp8t&qhI5~oMp18KXbwe*$%rkcCen%?i}_UD>N2>c`tNJfX< z$OC8qN{>%c`C-`60k;iq>T`cA{?~i&FNp|Q*6&ilNQel2Kj2J^g)dE%8$Y15>_ftk zr^NBKUkaDSGQlcXzPE}hq*D|yDu3E;XZYr`(44aCkl<4Gzod`+jjzE@8|DWImx+5T z_|2bsi4%j609)9^GVZjUuM?~-hIL|{0rJy^S<6bVKg91S^Jx}-FnPY8w;J5V1qfyP zki*dF&(ux;hD?YJbgveV0v^mgZg;U^Q`cDd2nyu9;&SU|y>~5mk!JH^LMHJ)_%2)* z9WlI+rE#Tzah9sI*UYzxxbOD;D#N>HhXqF+Ecsp5muHm1M&xrKuVmNP1S>crZ%na}rJ*OSV zv9a}o+Ra4g)xmk0-;0sD$-9c;4B%R>3o4+BBu7K(QtPIn{c7`7D%T^{hof}4&guhe zSmfF%<@cQM#ck5F6>6V<|4eu=kSl=JZD-GcGJ}3B1BmjE-H)#*F)@^z{;az(tefPm z(j&7YhMF=Ih%idNA_`MafoX{Gq#++IsP~QX1cMdl ze+d8DZhw(YC~EH-nAUCggY6@#D@)sm%``n{TR^n@2%13pBP||+M)Lv9LdGEeQ$QYV zjJ88Y^{yBU`ZJ%e3stoO^E(5sRKQ*^G@tiB8QXvVtmT?Z+ij2!bi%%%e4p2XrNq++ zxw)MP!v z9VC9+i|YD`P2j>L{$JPS4s8Kzu_p(EOg?C^>{7KJ$?u|qPp4gcvia-HJf5=ES85A0 zgL;=b#u^G_(|qCgdZo>uMQQJx14Qo^UV5Ht6&qml?Um)d2ObHkI5K#j*6bMI|A$V zEWyLN@C=mxFo1C7OW;2>aJ$??5YHJF=PEKOsgPvhCk+ew?_Z~PKNkv7e2H31q7Q>%1l1xEt} z&;(RLuCzBC3g2%N_c-(CweRF{OaO@`{jUqlfkLBZ6I;iqcDgkA8pSXZnmKW%{^~aiu0zQE`jRPRcj@mOt1MZ+TJ* zi%EdA=trtVTl8D)D#ikjZ~PwXj`GWC2`o*pI#y5$t(iE3-gvXFVG#WNPF6pZ{mpEwdP<0n;^#nwsUCf2=AiLT?{!42rbZMeJ~UJoOABy+&)!W>^;n#fTKG9uip z2;lxq7sgh=sGkHE*ho_~n3weY^H#6bs6*B0 z)3be_cd>_>C5o|`f{XgRl+>e}nV&IMy^4~QJJdd7E$D88vAJzxzEqpW-~@q++MoE(#q5P?jKOGoCp#r>@as6_ zJt|D8s%^Qcp;=EFBlb8^4ASIr#WysqWC$a`G@yyxq7^$>#JS=HT1$r%12RTw#UpXQ zH8EG5O5^xW0(g6~-)>{(13L0)lZZj@b+wjUc{~v%lYQ@Z(!4D^6Pd9Fw z_&;>RJK{VAInceXgIvY358CTE8OOVIRt)#LLD&vc0OBnNKgO-d!ek#kl| zGS!ERv#qO_0_-qveOj({VyX85MX0fvv)fPNZ(nheT8EbBS=H8<4JNsdP&_i|A-CHQru%=P~>Og^(cDWL_r-+kzZ?@>y1$B)? z9&yKsS)aJJO*ZFm5;eKfyA^^p#oV=ZpJ)lfMVRkO!!JvzrBgjlO5rC_m_*&NvYWc@ znjL*q*lsTvh1T}7*=`$eQM%9)(iYN{-o-gd{rbf9<$Rqd!Aqqrmu~NturIndO~*Mz zF&ehF#SGieO}-wE&@?HoAn)q!jO_#dTr$j|CF47A>yA9)9pNtzHXnq%@vNjka zaA2a&l~4OpgwS*)3$Cf>dZU6hm&@E@m=3EbV3Ap|pHboChcncj=(3h(%(agVtH(?YSO?Mct1xL%KEFwwseA0n%u(eLbBUoU!@_aa@t- zJPJKZ%I`Y*RLSl*XJ!cg$ci?WyeLoi-Ox-~NH&5|hZ?l>Dy)5kX08Pdtk~4K3qmeT zL9p{IpNu>CWua8myN19^gTK8jc+3li%;=GYA>onxmcJ0j>vujxJ{jz|Jej~?Evw zSqliCo1YAZ{O_-u--O#EkUbF!oZ(WE26`NvX*m@m8W#V!G=h0JqA6lGqINHDa|}Vd ze%SkgHNid1>($`=jvbQMG+eYZeTFD*DT*ViqYh2Zk9dwm4guy_1+On;gYL4239l4M z=Ve#2+!oYf`^`ltk6T&Q8X*ScpS8-)sXmddVuea4*STcEoh?&=t8|gX{U!9jGHyfm z_sIagc5t`U(ezJ6uGK=x7DOH|J3eS~c$f7#Do_5>2Y0&{t)l+)LIp2|(k>N&rV!&2a5 zxgTHj0pq!-1R7SbD<6q3`5-4K5VD;Cp{zThzL_YbAaUmx*m@3Dwv+^?^epnjm|T?5tkRl zdRx_PzMQ0o?gyGKGHF@Au3doWdIJARF_s5N z%N=t&ll^d>5fD@CuK$7w$B=rtW7eqR)6o5$^~}T+p&u#Y)&<+*#i(jtVHH&NqoVl% zw@lk`oVct`Oa|JzYd)N>|Nf)$@(h2GU8$#v6=JqWPloyUw!X2=F=TI;kd}P#k7Tbc-XbNA>X*bOC%zi9d$J5A`T`?wib%z-j)wLyG z53zV_jJ}^z8|kqm640%cJ>H)xD=$~LWCy5JM+reRzrV0gE7gMEz3zHNuZIOv(Zz&S z1N{0g-QOW6SWjdaMnp_ktmLZvELB$SqY3TAY%J}cIy6&3QYl5&f5dpR@kHdg9ZtV&P9!hg!+=+#qzl zlG935BGI?tGEYB~B<{PFLruCN7*QHT>-g@jysUiR11$o*Zf2PT9d|t>s*u7GZ-HCy z_h}{i-x*fs88$zYOzyj9@@X**!@uGy!tvLapOI~JFIND6 zI7C4=-;k#7AEgv#v7C#aN$UB94lX5IqP`5zaY|!i{u|Qdk*oKT7Uu()dbVx7STv!< ztw`D=q1P5k$w5lx15&StS`-yxtPzx6VHtnO9*+?-34jrsdoHCuww9NQZz+-7DyczB zu)^~WsCRs;Z0EU2=aLaU(!bx=r)+<}*u?4U>&kZtoDgx*2zl_ARd@%nCKz$OSyir9mLTEO%k%H+qWZg4#>I=-sc%u@noYT4=ffo*>DKJ*0K3>^;$2v zLIQtQZ(LSb;nHJfroedW6)xrdPy52x%QM{hJ1&K8vyNP1pU(C$UD{N>z^(>}HAPOC z8R=$=_V&-q%2%|fibazVXpt>@=4IvQ**;P*$+`q=g0uq!91ch6TSt@MORp*RFJIjc zYT09|B%my|+wyBAZj;4WwW^EZLW|UmQ_dQwms;**tkchVtZx?Xv)Suvp-#p&%N)J; zv9<@Pymyb>-)}MT?Ry3N6GYsl!D!srD&c&bS`p(Q}B_ zLpaN{szLpLh$4FoAf@I1Nh8XOs22JH_m*K2=#rq20UX z^ML#@U$jr#l?43_De4uNy0?Mx`XQXUw?W7SW^@}(o;q2ucf7zvgFnh1;jG8rn8Am! zSuMQ`q!Ir-!GoeF3vupL!R-d$6HvO-X4)d`$nFZDf7@T_4c<+|!ms1JHROuh_yQp> zW845z74x_e@(Gz0bI6JQ1?#waonSMCj8tr!1mMQ|car*gpA{JdboGqQ%9m=ZKTgTV(2~M8mX6YHDX;#GvL(IRzRa+5aIrvokMW5>8>FezdCwF$~ZRBv67RPR-#XltgwU;q7p}7KdToFx_s^%MBNj zKFea1senso)S%Gni|ZY4X43GgI>8ugHT27DgxqI3|H9F|V{z?)!bBdvx`3usd9G4B2@o-Y_SxT6y=)_6w$USe>8i4mFo4nQHOoiZEU zb)~$9Pl;5owaC7^ZWVVsR2Dm=(tGs5ZSH?AsrVdm8SS-`_~oYQ1D6>>?S%mLUg>-MbGAuQ#x;o@jcBZQ{j;MpY~;2n=Au4KcS^pGw+G?-L5hmO4wkTf9j zgl|E_p*EgqQ--X{K?%h{*p|9Uvr-8Z@}S}$Lo`uO)M*n6B1pxRB%ZWa=eH8*ii6+K z3m`W}x|gY?&QOC|Tk+tAKLiP0+KJ8p#|l-gT^0wN#NnAKZCf^cyO5qFh~~-UFI-u( zGZ@e;0GDz2uJ?`WB!oQhwUpN{@2Mo_$qXI)QQdVH&kI8GK$KT{as|a0EsC@IuvqRr z44^S$yjKu{ySCt8n3qPHX;gq&YvUNA!p2$`+ASbUuN>&^Tn4{RVuchI^NtxAOeA}F z6rqYO<;GR=&?I)LzUEMLkc?ebrsPWLhJVDoSHpJAWZ$leLyZiIdBZ3k#1>V)*$`}i z%7qmcqpH;nKM~~QN}n`{t|z@wKkke}#U*=`ETKAw36@fI_5lh}iT{yC$P?j?*v|+% zzjvS>fyfHV2a1&$xo^TyRN4v|g4V^SUmmq)Fp7ND*ZTzNCZBz^d{=;p9;q9o@#-%u zzZc({h=bNIqy5>P5~D4c>5eTi7I1-z8=WN#_@;{uSRhmukd8RnLKChKwK8h?u9|H= zNxO24TYPL&IsUtW#4^v}e#{sN;w5V$z=&=XWGzE%RfGo!w z%zy(y+xm;{SRRzia-k|-aeNGoaA$-X8&k{Rn@6Ugix8qxQ0Q01uh&u#%nOUe@5_H2 z3q!l~r?ur+UvkRQDHCO~U=z2zQGNVQD?$05_ge6m02(gtkv`I#a1gl2`rKX3l#`jT zj`{;lo*-fNZdp%|#p`t(qev|2uW^O9mOVKRiM!tUmVBQ%C>dJtKg zdDW4>#!MtE=IeqEMitIB?I85-4_(ySPWc3MJ*|SfOAbN$ zPT#yJf|r-*Rq$0@c~-KO*4W16CL`?k0}ujU->mawYs4q%eKAAIS=cV@ML)75Cz2yp z9pQ0<$q7W7xk%qz2ouN9S#O==uAcA8j9eZq55{VB;^cm0?CY$f2Bk(I15-~)9XQ~S zDz@~uIo0|yHV;m1pT=g%66d0>(+IppA`8aE{2M@C{d1CHWEI`&Mbt+oiy>Egan9vG z%=1h9zjUCfABLuA-38KmKadA?+WQSuw$1D}BA!_47e{@x&5+83BFPmV@Y~ZPw7uP1qSrtOXXP(UCdT}tVniC^{_jJM?m(UhOJebA+o?J;wgH_hWG_UkB zKFFXYf~a{zwuLI?m8Bsjwg^$9Z2WgLzn=sL#|-<*A5ibu6BF+iDR~u;v_{9aEM{d~ zSve3PA`bSY%JNKSAf-^Zq_c~b`eDKxy0n-VdVGDEiti<%?6BVqz%J##Y;<9xn|vpO zf?W4|;6SN=&WC7!{aMF3k0OYYo+|i)o30r~-hJYnBsIvW+HxiO8;22D(=S>06lDF& zKQ!_!@ud#?`DLvZyL?kyv^%5Zs&{8IWh}$B-9%xgC{^5gNfYPfKZ_`vLDl=JqZ|z& z2%sH(=>!n1o}YXkxx)0QBT7`uhp^w=Dd&JHb+E(_aB`)VPjjf1S&Uouq+ETRL?>x9 z5xd^jzoF4&1^xuZ?#*Spc@h;WQE6v@0A#sQlz~5)N5w|0i#qJ09#-8fEerT|Zv&v4#aQa~|%=ddEDd`19VB@Y1lU z?3Yb2F1AcTCI00^Oi0g|TJ{LJ!TXBM$UtfGsbi!ODUT+;0k(`NDLguUNnzb9V8BAU zVGrg#Yf*M$JZsJq?si=d+6vKkN=Z!j33jD8s1#-BJm{6t$S1-%)2c>Ov-WItD{lK+ z0hog{{p4|n$iFPdc`H^`hHi_HAMvk|9Agep?c=z!xFFtdq`?(RojSw2RKZ0&;Q)`s z=b2qPP9r|zSbNR@yLQvDG;;5E_7Zr|YEnE_D+6-77#UO%)#weMzA-xKe~rEhV32qW z?28gz2pwb>-*~%1t5Cv68ge?THOC5g6atq8t>(XccqmnrjrTYh{RY?HV^}_>gJ?6C zm=FE~h*si_$>+U@lt&t)!p+Z#F}0Z~#5%e*7{m}lNApLL4;TMkO$E=S=nRYP`3Q+# zUXKYIVztJBj;)P0w^+<#b&xbt{y2zN)tdJ9_^jsyI8Z{5Z53Z z_!hl!ie|NJW5QE`6=f3NF=Xpxk4}s8Hk7%^(*rQ@0adF?w0eKo?0AkTe{Jk>vJ2DtnZf7I|%V5w+9W8nE^M5)J8=OekO;oD>Cj=Qv+SV(vOLiI37DF%jBm z9AjK{Z{J0f;`KD@jLVtUE?>Hf!cxd?4$wgcN{US4DT~Za`lU)P`|9K@fHW%ShL zYAx{APkD~21*uivmI`9jZ(pixh@Sk(U5zXWf^ccNEwu6_za{BJr?E0GDLfalrDsK` z*$gDc6z;VjVgt4?$zqg{Gy%4~?cWzgsC(*?v?8ieJD&k1emou~J(dlOTpQl#3O<@L zA-;pUjqM~>)cdhiy6r2@K)^>M8XT2`1J-Dco9$_5=;X^k6qiaB7h#&TIzbw@Jd6Rt z10Z;I{FhBJ}iJ=)CHWz*o03kZ|b2>wMPFLW?fRg`KVrCLG%)z^z)#6>xe{y9(93Bs z$|vFWi-Xr<$h}|asz6-{Wr4>iqSPP^>MIt$`sZ?Zl#&ku6AO zo|~ZRvl8c5oSb63v1U<^jX|>4gX)rnbc^t}mL{({(Ez(w>V>1t?{rTM|Heq_fg0@@ zPk>#Q7nU$+U=(~T0d(ejL}FP${9lXtZS>hiKpE?J)T1wX3jFopE4J@;tJH;YZ@p+~ zQWP!=9UOTcl{qb8>Bh+#32gFionm6>7u9I`>h7gC$oIlth_bwNviF^#i);<^&Pw)N z^Voq%^PwKc=$fDxNveN>2eGdF4OL8xXuI$7pk>_`Qp=0mO4pp4LHz9QS=M#2qmmF! z`9T(leG&LO(XR9CQUjM_GMW z5_V~M!9RcbOyb+}_%;9lheIfiv7rU8Ni6@lE8J@a;!%2!BC}Vv_F|}jrfQt|r1~Pv z)x5a>bpDAPNa*4Y>>w}rB1@7yh$Gnza}u|B!!oP&;QlkZSk|w`%JuA_gWXlZEV~Ad za>-cWhWwi1r2x^bO&!HNoq)%et9##cU6k5kyh6J1nti>H(j9t{*Do|DCIM>}+BpD? z3^b8oZyOJ@+E>$go-3^$#8Zuh!rv>yKgpjX#S(=W%E5qLLK*<^;KNV=0FB^j;F4o1 zk;0C&$Cy4eZP1;1*O1jrsL)^j7{;E1t!|+g>u?A&yAUsNwP*c2uJ%zIb6|?a_v}*^ zU)R^y33Y7NgB(Oy-TOl*o>Z(m|F&Q+jmI26sam=LWA0dn{}s89+^%VIOW>k)bbx*bTJjqQ^8+Y*Unn*!*-VFSbDh|!#AXC?r=vvX z7;t1Ib0hdk343U0zP-gx`6_v|qD=ZRG3%o<={;>+b9sB&i1{Z)pr?%EG~j+ zkLHsRMP6fu!w;^-n;~avo0^q2^3v2x&I!vgf|;GH`kEH@x(?PM;kHj~j8Iv#m=DCB zB478L#O^Izwh^H|>#Y51mJ=g79^Rd<=P-J8u+rU!sV~Z&ylwQe)K-^Te8vtCpsNEGg8@mbAlrq zxzph#8+qL2g*|nKN zB<15C)wg=995Im``})JzMf$u^OSD`Lh?DB^(GO3LYD_Sg)K0rlKx96|s9 zsB}0S&aBw%+QO}2OLK}tH>g~AK)W)d@TKO6dcSomhiUb;P>AOR)xeF7Yw^D7w19&Wm# z;RO2Kv1=MR6 z)-3m}gT4i$JWDr{bra~-oNxnL(&!4D*QmVXr&NA++e6@3 zA$B=4o)U*SRa}SSkq>e~dc|a>eRliXg|onlkO%}iE&%56NC+71Zb*|k`0@?Tv1e(L zXi0aO0T|TXs;RLIFa$r5&ZQ$dMuv;T;Rv?fn2KCrs6ylxINN|FyK z=MvJ177;;iKFxW;Nj3?RJW7unRYpTCuos-VN7d1Bku!W}kmL!}lMm^E;}by|!ygpL zOf-dnL8mBGpdLa@bPy#9!hiI-R=$!hh&-^Z$l^CLHUAPn@tc9^ZUpfKL9%{2z%1!d zQk+z|E%149zZ677q@3ZtX`qH=rQyGtaq1qFg8QRq>(8?S5Xfz4<(96qQ{?WtkqFZM z_!@FOf0)EwT=p1iX;>pL1Ap{$xA9H@qzCF~WClhO;qdjB+gmrUui!LHIT{UZrh_md zlv?IgojNF(Ngw5t`F)h8O{%rc8!%Xq>bzl03ZGW5l~ezs{l9w5IaI3t302l8;5Pgo zZu>4G#Q!=B;urabN7Tr7yf0Guu+a5{(NISJ8($W4>YpYpsG|cw+}a2SK!jlKC?+}9|a*Hk7~uD6tL{xE<)gV zz~gaL&Y*f$E5N=SW^9w9&SDC zj=1MmmIWgB^Pk5#)co*ph!`At6FEhgo%*&2qOG9hvF`!DTQQlVyjLEyvy-Y0^*M2y zj01@DdMTx=Za5dOCoPk&+aoHAthsf`{#jv%F+ee8g%5S1>nuAP6)q$OJmF?51>x;H zDKYmMcQ_f)kAlmNb10U$+TU1TMAO7n|H}NT0lk5~r4HbTAXC0&MttUVdD(w8d<}$3 z@&!2Cd;0t-Q4c9_V-gQKYzq&zeIz=I zz?@I>O_ow^4_yI0!RMK~6W7+-w$T0RXLyO+>2(E9L}+B^W=RqKbas~^yn)U$)~Ue$ zmL8;n+E_-PUnh%~_3d5j-O#>K*6(y4FlwofA0FTBonHT~a+>#c3Z zbw`1k;6f-DyyQ`Oi|ezX)@Hjhtx(RV^K7~G{Tb5;9d!w`y4LGv!u^@@KHmDppasWf zyt3x&4gZ^tu+~X$?iy$-&B3!J=HFi$N(hO^-8Q=2f|AqmwT>jMEm(NkNE!T{@C6GF6mzW{Io|?z7fB2hb_HgQ_1;dy1f;c*>bek`V|Mzu=bVaj*bto zx){NSm~d+ER1EWWjN754RC4NJGVXo>X^@pgfsih^BP8{c(m%tMq%w|uXjB>8hG72c zlIguN*NegP^Yh3tjUVOdysUo=K`YSw)94L7*w;5#T^K1#*ivWPWZ)fvk-%IDn4V3{;w{(tDHXPX$hO8O`9lc5p1)^J^kz3 ziarFgfG#%(=!S~SXr22{*(oc?+u=3{%-~03fGq1H!w&&I` zdJ!s5xhqBj`Q2W5Q>zI5oF5EuwG1H3hnt^KjO%ofW8QYR#4XEJSY2UBPnVVVIFx{s zLEmSF_hnl-@3G4mmTqxM{r00C{fCPRGCm}_?HE1ZvV7U9lEyUegc0RB2PSEgTU@@F zNS0;}t)FX}YaB-ua<#b(5(xNQ>{dNIXysl#)1$B4+$0$}t_Nnx&rep7$vr;OVLUXs zrpe{1#`OM5{C#tq888SU`X!s-)E|K}dUIw-^ld8D!GcHtoRA~~@*X(7oe=Q$T9Ym{ zzQ;z#;~K^948~yaa+@ef;_nIC$z1F3Qr$h50kvy_1SEF`fBby+bKhPt6!#+`*VWBLSab>_w8|6Nr}?Sl0X$1peo40L0bd!r<9? zy~DzEN%{Q~UHy9Oa}&4ePPpI+4n1@<>=a755`0?A&WP)E0_v`UAVcmDyg?U;6nSZg zPMjEBPshSS-Rj6aL5s)4wO>tbZFW&nQC@rd@85W#iooBYDE=b%F%8@CnOh22ePk$w zHjL3dAHXw8uW%|`F6krQr`Nd1!FZW&8zhJt@e!cEM+O}tluT8-p<7;82^2s8jhG|P z;PLL^sL9EqP_x_{-P?>XMNj;>bh=%8Tjia)^!_^c&clHmBpE^R7#9*@;zmokg5W0C z>feq%-c|Jcj3HTHm-E?|#`VzT`NhO^xCVW11N^r~ z;~WuU%fkwQeYQ0JU}Z88D`!o6zrktrRcVt8v$H-m&!X1pk19A%sH{&&^m5jk&1+N#`8S@Ae5Nl$ zfLCTSYnUzS8IJPieDheX1N;Aoxy54ia1hk^rpLtd{fC9WQ&l8LMIMsP0$X<~!^Y;9 zr}xV2OS$aVRS_DO9&#L`jpb&eHbEKjAt)okVy7bfc5TdX(1^2dNNvY@g@>(SVW z&&r~Gw_d$3AaFQNKLydyzT-l7l8`p1_bFXwJ&ybr3N#m;!m;GXO%`A2r_&9FXUbdX zKhqt*iFaZh$6c0mw?PrU^a0{OE`>8~Bbno-fq*P~(4n3|IjVS(; z$D<*2wWD2!OV*zcpeNXc9>xA(5kl^sx*s9EcGg;wOh{I?0EkN=q{HcLJ1Ws2OErh+ zgAq}??Z`Cs1zc~ZI<4Et-5b90e<~?&3tw>Dzu)gT_G2~%cJbfIcyia(=YAhnwR;zA zcJclAKxL=y{ialPrD6Gha_|_=T^ES8oklq!xI5ArM$esxMP?2vD>DVr3HZEdNl|EV zR;Ka@#61cB5Dl?wm#=M6sgu1IcK(05yqeF;oNU?=jU{ z_7aEbo_x!0Ud%KCUQ;h(gN3mzp8ju_w9CY_km_;gPkL?_rw5%K2 z&o*)1u>3NTudAh7lA6~XYJ^{`qv?@0x$WB7Dz)X}^u~CMHC%rSTT5+|Td%U8dkH=K zY({f({Jf{%9&SB&<)7<25+73q+AyGOgq^C}#)_nbJpTT{yODK96u8WZh<<(T1E3G$ zJ$^HH_SnF;`w_AGsy#G_cL(H^+XNDvF63n|0KY#z-*l-UH4ljBl-*%E(Cu2S%*VO9 zRiQ?X%pbNSNJkLbBM$%X-{RMcZk2XZ#s2l#s^n;%f+eR=CQQ^hiy;oc4G( zqSFa1Z`Q3@eO3pmGA_S3((}RLMC}=5Yt?K zA!ul-zihzE(uh|ZCqs@GQAWZ(@{GXAqDARK443BaNOrX~JNA+{_}|gHwpEL{h*5%F8{>e-%l~4vvGMWo z{bO5O+Yaj_ldt>b?f&h^u-w0$ekErh%w^BED*uLwdEJ`$3_M@io~CY~dQ%sv-CqEB z%tsjnUihA_mNm0@a&I1M*G0aSxGIQ$h&JblAjEz2o5Yidfsyu&vqbXQPY{ZKw>7 zeHzHXMnqV6^|RSMHDCLKD=qY-!}sy0*s>R>{eJ2Aw5Kf#(h~R>iLHXYnRN~Qr(Wm?vuMqhc2UIz>%Jsru?inwUIgQ^8(XvTXU zqLs_h>4@_7UaC!7DaxQMoeZXW9y^-7R%P%L{`EE`$h_+-aMwHZyjZWK!gXsv_PO+0 zLxNo6X-~uc3-DtUHLf`V0K2NO#IvBv>H6lo+Isin|Gf(Uv;&J4?%8^;Eb@KV`0;N> z8fa8D0B@O|aeB*oQo5guC!eP-t+gd<0<5WwK1F0Y*4x|qc z^ga1d^w#VURas;slM1{%+-aUd8D@{#hWr0TD2G%G^D17zQ}djL|YZ8$LWJ_h!E+3BOcNV zR+epIgEMoE=vgO5otDzEd$MT|70nxPo>l8tFE7QzLcO2qc4MvoUu#$WSJm_MFI>7C zlr0ar+lyqN0LApCG-6hf?AWElncS?6j3P^XybMW*16CQqn7w7Dr*_rpunLWGn z-qy8f74MN6(itsRu~kwaytKP}FMAYj3OD8S$^ol9#@Z>B{B+w$ppwOFB2tpRPOeqj z_ZTE6@$UwCL0NFeE*hny9w{d1vPDoXP?!m;cZo7XrJ;<_(ADdT!HY`5_6ijG*ZdVQ zuO@o3$m6=2Lx~)1V0u#^QGXo2JPwDSkXgh!a4^z!jRdSt`eVN!tqa-4bWhiHv~gLHEra zo>25aYt}A^&Z0ppsM?KoQiXWOW40G(pQ`Ons)N6^lyfx!eFg+W6VeX0SYzW93Eeez zEmCJ*)UE3hSo1(ASkn3weG+eD6MFK3V~~Q!k;9RE+27aE%xQ=}i?lnZ;)@GtK?e~D zqo_CAYQq>b?y<9IQvT9xxxuV0miEnsM#Y>qmNRZOI#-Jl7sQJF2!lh)yYwFSw56z zb_TaT8UvkLNE{7~vm1=FmI z_aNa&^a?OJBY)c~9xyX;vsFp$l|pJa@ZkhHN7AU{#k+YrSoTOE*T@t&J~~pLUOqaY z&m75$i*pV|Fk{Tbif|yo#gUm335#fo;t@iLq2=9xeH#gjIU89GC>PGg;^1u^JdL8| zjY6X?siLPt2;7%Pk@sxyn!aiATSAb;oA}$RFx|2;dUo9o{#^E`G5va5&t;^L2KE$v z&$%wNB+t_AS=I1{+)j%@FIhZam+8!lm|AlrS&G}GlvV0VPPr_SSZVG~YMldcI)cw% z#wjNA<|;xo-8hiLRY3b?Loj7kW&)2>X)(0IO+CMu#)(uEQ8s8h$_4#!-3;W``?LI-9I}Jzs zHt^De*ZeF1m6_w%_cuSTG58luGDpy%tbzZu4S{qv4mrvK!aL)RlGoP1 zIv0=~F?%Tn1xNq|6zNT@hQ>c4&eex3R7roskSYB$=809c>pA+ZG9Z%ZY_NnBJwL^pT_*8(3N-6)-@8OS7!+O#0pn)>$O);_5 zeI>B0A(sjcU1QqMmdYX;l>4NI!y#Inc5EY&{t&ibV5>`i5U4nV2G{_-W|d7Nq8Jfv z)jt}GqDki9To7AXS44%!Molotu-A>K*=XC4OPD$I66I zC5(gDLLdIfTeo+zjr>*hB2a_2Kf|p`HH)D~fFx&&#C$ODS~hiFfLsoXEqxuOrUA9< zglrXreVK`}U$*rQ8u=+7bx}pnN>4X*7PC#LdV8lD->3_Tt^3;E#*Vr|2iVrr0YLu? zfrq}o@O=M!+Kk6RanwH!Ew>Ai`NQNE?CJek;-uz#C$_a4&8D`B4Ud$yFL{3u15mdv*o`5Duj1*Uadr#30h8M z-SByYa#D0NcdgAOGNg~JKA3;iE01?ni#1@ZDA0d(zemnk<@%j@GFb}GlT+*noby_M zQW*HL)WZvf*y5K`neYv zyb(Cruy>=m>(B4e^?b>`K92Q-d1QFvKZ?cfabB*TGXXW-5k(yuprUv*pm;d`i3U z_hUxLlJtVBLKtle*V|+aW@mG4?k9}niJu;mMpDhtj9NE&^}TQjy$fou;5v|q{NVy~ zU1nu%E9>&EWf)n+s<+4mtuB}qA5wXLT&(FO`{q1?nLa&=JZ4ut`Pb<}Rzt<1Oa!%! zPaD;(D_;aijL}KZKMr@)aol-NBHuopCMO#Y+)K|1LL@sQyZiXkJ9L+NSOAO#b(7!2 zx0}YJk$8U~%XFd-V12s%sXdbiDgA4P_jK97Y5H;H90~J%x-dye63g9_+aE_WSGQ7v zp@duVJ^P0i8g9QQy}KB-5Hgq|9m|_{K%yEtA!mz|kF-*kc(s|NVBx)vdr9rP#febsWv~tb?bzO?E&u z&1Z9JpsvG&rB@%7isu`l*mQW-U(reX2f~$(lc8Aa{;%T2<&?7qC*;k$bA-_?m%3aA zIU;F(1L+ZOTM_n<<6l1&MVxA{(LXiwCE1M-)tE>LKz4&UM4zO*Z>1>%_xQGMZzJnk zh>aRHd2_rYr8%9Jd7x9f*`5N=UV;0CaGqm~Qg#bwYJ1>E!2I*}_9T+EE%d6TveoF; zcNn#};>b(-D7P>Ob=$1`(>yTG>0^RJa=kJQ&qXW|h8Wn$kyp??6c z$oV3-U8sLO%=18hvz|(~o~lmAqQ*pcQbXy7{k3h^iexBOxvY^!aNEUv{U@~EoJ34i-ydI1pqz`QXmc?gu2~4JuV^%;{n1xgSvN?>>SWK$w$IJ) z(NzCw?@6}OdsWA?PzEnQv;O6FmM4)Cg%EDcr$^G@aT{ScjjVPQdBvfQ=sCGRuCdYU zi~`Fr%B5@GrG_=JIn;Ob>7qVJBcc~<&1b&^Ovf{BL{4x&e!P&{QZl86#n;nL%FscX z0T5KdNsl6&o5u^zRmHA8%6Uv&x_o!=yrPdLdN1?-h@zWS9JAIACM}aCLpBDY>S($ZrCuWO6>8&nOfBA0cd(;$l z3}%ON?j&uCiU!KJTNjy02d6bFFUu^<0~7aWv8IaGp^E^ z#;L=~P0*Ez$N`pUdfW+mD&zugn}g z(a+0wsl-XZBn&5c$B&vI-x&nm7Aw6)=~bvOh0K{W*z9pQ{pk30cyPU^4BIw|Igdp7 zYF+cXwPPoURF{qk@fK2G_~O=dxOV$q9pA~gal*cF!o}yUc4#D+fiP6Q$N$lGPU^+u zp~${_<;Ipu-)Dy}z1Kvv=iAJgX1G|F`~vU^iXDFkrhbS8|D6*dwpB*j8IWKV3y2p9 z7#EqcD?iD1b~r!;Y40e~gskQAcG9`PYeXl5eMlsB>ZmLCC_{-BHsq54l_?E%(0#l3 z?sx&d7Vg8@A8~s(rczAe=Sut~QcZd&+~dvFmUdX+i{`73YtG-Xe95&GgyA4unn7(& z7`ow)1S}4izf?mVyAdU*j}#kEZJvE~;m!E$73w)@jvXw^8|yMPa~z8(RkVW!H}d=_ zM-ueZ;DA88QIlD;pzpyK>zLEsOOw~4(O8Eb(?@)Sk47|EW$%cKPQ*zbO+&)k?#Hnp zDecL_6={CbiBNLXpAprsne_aSzXSe7dRXVwLEh{kF@#V7F~VU|maWdcqY(MJ*;(D1 z^>2+n0@kf9$SaoYy;;k{?EKP9@rn+fQ*fkI{*#&hv&j!#{4)pR9@KN0axQ&4l(pT_ zI8JZG&4gw#Q7iZl(=?h@g#(RIg$j>wji|q(Jve++lbFhSAJLwfB<64@fki0w0b)>@IWYV(5yLJczWf*v`mDuO) zqD6=+ZzhFz*Low7IKxRy&~J_L4C_bLu*=tU(^+OK(10COsALT!67JiuuprOhMT^OS z0zdQFk!O*oVP@~chW}a(36Yq_9S(PddsuU(xh>KrMbJ*pVsZ|YyBzu1A5hn3Q?9#Q z)-acW?F{|gr8W6qv|I#5uiYVuo4o)g)nGaqe#wjCoI??*Tg!RCm$rn}N^#};aMMLg zMOVy70-f!M!mZJ0GJZ@}2ni!qI^+FqrJ!?s5oSDFy`tNr@9uQB;Q2E+ut^T__fo4$ z>j0OxSLLkVN1576402byDuhf04W~a60-zN932;!$m1+TH5TpL)`{R!nr|a{f&^*}g zOy+@Cn|9=&J8q&$D&B*?(D@4Y%X;p0W0mfn=UCT#)%zecxe=njz;n9E^S2>ca?| zluCtp@vfne$XeQQkZ>3#349~fEo!elBPypk#&ZBB^Pu1hc6f2vEnENy_oy+aF|Piuw%=;Yu7${eH&vaMH1+l6n|X2>qoW7bmH(mVu(K?Bl#x5@M!d?PERUi zp_A+WE%iuBc1gs8GNg$z7z{(@9Qf0b0-}BP4mds`!Ywr`JMmc(LVT%&rVOc+1T2ZnYOub|4pkok-H8{Bb^gXv5p89OiBBW&s8{MW57CjQ%fq* z)426j2MGyd*PbSKx8DnHAIs?0fx2`T3V}LiD0q!wD*UqfgseQpk-0LGt@PJ!7@wLkIY`jktHU2xmGz~V|G=qOn)+RW zV)dpTb!UwyNToXF24e`o+j(;k>nz;b9q6lb-AAS3ge~0w`B{#Hoomiae8s{*rM?@O zDa#rgx!vQaSv#!gQ33c4W*7vNKXT%^{p!J4!fzbOMKl^sQja3;&eJ0X<8Ld?$t1J} zf6n+w^8Hrct#L!Vgt6TTb=Esei;^2UCf0lUUX#`wj52NbZP-wdF$>+H9>4#KWy&fj z++u>$ikNgTi2dG zJpP5<_K2bgAl$fgcDT9!0SNY5O1>~!5jsj12u0~ED>e(ed%bH3G{+2Qh_+M7pLyhS zh_6c>U;g`*gCm@FJ2LEakQNC;C_9f8AX88d{?WDbRywWvftgrqCMV?H7iFB_ka7lU ziD<1vN>|pk{7r@WRr7DZw{?*H?v^ zrVCfY{OZdK1K8wvSD{fa=3^o;8K45m$fhltU_;Uf*myePy5WW&4ssu$&}KgxvavK3 zaoV`Q%bEIH=J0aA2MSdIdaMM}sYnFWzGj1*73_|VsjVjdMyH}%krTBt<8~SxMWV&* z!W!|!-dW`zZZ(^viqxvLEOu`rMY@WkNw_SEs5dg1t_LyHd8nv0nYWb^2AnZ1H8K)Tk*&z5$cF+_E`4btUDmc4Cy*_vq0 zrMZdv)p}b@6N(%5gM@2po3Cp?rMTkez3E+cYne-?j{d`JJ?+;m4O!qVfrBd73g4fK zwr@QESFglw##a?MnmpH`%%2gxrGt=Lh`EUq#Z#bMbU-lxUTAmeiy*}lEldF2=XG%m za`qXVsTvvs3X8^kQMObNL-xI$9N5LfQ=DIEWTgS&>hwRAbUWn zLsotN{u|WM8-#KWKvO^P;@@{VJ$4o~@ zE3bR)Ox_8`>s$-JTrkuk(|UZ2y%moZK7AoE0^*wZNVuHCQm!C)>SCx5jG8^+baSSj zwol?B5|qX(*GrNzFN*nq+wq3NwYeMLJG*uHIsF)x!kIp6MRPY&RCif?BRxCJe4N;Q z0@k~{IKnGiV)8EuFp*CGaz^Y=E5{((kg7!ld>2}5t*He`AyuyRND?MvSzI*E4s1iFIbSO>X(U;r6xlvh)SDU0!J{x@I zUQDd-4+*j|EM_T&Tbfu^2lM9F<%mo9MDD5yH>^5}-;>jN4@pmrf!fk1v9E|Z-fF0S zou8f)137xQPOl#zAI9XR9A~t_2AM&=lsP;_Qhrc!oizK+w;WpxK<_nqj8EzI!>k&A zltKEjNbErgzuD*#Evy+e*}k2gJ7K)=qnmq$_0+&k6j0F7)wY`;Tra&ynf!hI+wCS+ zfsI8|a|_NKE7q3y8~4+pdfFkG&G#VV6}xMOVn>q+m)}Wv9uZoEiXQKJ@l<{$sw1y1 zo>4n;z*1cfEM(Cu(qFFdr&*&_>WIRQiO^hQzcogmb%m$RI5c53H~4Tlly6w&5K<;G zx=9rKe)F3^o@7n-wW)e?QFUoW-OndDQ1b<2a8X!tMRMlvaH8_j@(x1?r4usl; z*Vcmcl&o-f`81ArFhUT6z)In6m)NnkTCEG81NQF>!?0OnWxP_zheca$-w!DTE>Z13 zo<5m)*lf?ODe))OU^u1B5|JlE_qDxO=3Vn)RnN#Wh#$jw=F3NW6cdHjww#$fj-7yTy5O_OJ;*6|!=Fa=yS&Ed8 zf;3-aXD|`GrcDSE_=&vk++OvJ4{}IF@h7X+)-=P{?vk{A5~>$CmF}fQ5BUDgND?aq zPyMB!Lyc*#=oDcSEMIyWVUK(qFw*#AV5l0x$BsUDIW8l_pNRb5h~!ZwKqhFLGSiq8 z-uGr-ik63k_<^a}-cgZ{K{I>Pk*E6wYsz|c$J4gz6gJf9JO53UmcyXn@J62TU|Up!v^ zaNU>TLj~rxvn!Y5p!U52{1~ncHd&7?w$1e>vo*CjfKeyRT3cxkj{T0ys z6}*@pn4lmlWHD#*;xR^b4*u#lV}#NuhkfIuz1Pop-)}{&kP0h;$3u9ijgw#Py1?H= zFyo0H&cBYht6Y7`Sr28WK7|$qwswdRA6D;YW#eYvjPn}>v^hm}1Qd`5$SMoHCsnnW z4sBzNg}PCwEJjElYaDQ=u60qYLS%ptRjqteL%ITvx2rjq<%LgB==%G%i>`Bi+zN+k z&OidlY&)|~Wv1Q%)8@s@5P3#8{LV5XLf2*lKRWDm&Kg%}-nG7^`!Sy3tA8?0+7%Mm zdR+^lC}H;~ZZ~iN*{L-=!~BBi{xml9j2>YFGUuIY#KdTMXJ`bSa1fj)c*lVH>BF2# z@Nn`~wRjJM_o#^!e;%Jp2F57ssR_VvOXaC!S|>JP_wE=3dsJD5m4W4Z*YZr_%$nDX zwlu_HM1v?1gcdp7kVTnH3jWXBDQ090gyk&;uP`$P3(@pS+KC1$fcHx!UTx@04H9yt za&1py&VSUrr~~E8&O`{}m{;VVoVwfQ!0p)C)1cb- z!AZqqZ(p$~ql7b+D60Gl?rzo^8{1m>dFF2xVhXNFFVpN0rt#`Je27cphE3T*HALFFB6R=oG16G7fXytu zG{QhMIP;53OwbF6jVeN^qA2$LS*F|&Lb$$fN$e#cuJTo<7hjuyw` zbfEGC=<>_=$lvrZk^bikB{nRTS3fbHP3b~iOq@h^GK$32X$f4(kbwM-f1z6){T~x` z`a*`DD0a?o!T7MST}2I!0SwIh&x!v?s+-OSzl#%(`7DCdhv&H}eKsdgcmJu6!vYW5ZfLBi?ic@K;>M0P(Nj zq^g+6j+omHNyQkbfmw)U5&L3L6V-%_2eACSQns`h5c2nqN~EH(6gC>fz&0G_d1erQ zC2m$ic8w>~It&b~23hr9nPvNI4Hp=(D!O!t@U6MZ1E*#{7}F`gdcbM=hZ{#FKYGiL z73Qd6hP(56{2$d~?vdK#OOS9?>1Jx}Xdd-A4^n_z4V54~3%v7P3(FUOY_tMTMur-b zc#M)x3&S_ypSmMd`n7N6{q;wHQ3j7FCww>m%?!)}snDcX8FNw9G?6=wLjXWG5tQQNRE-@$6Ziq()|qh|FiRYok41EC|I=)4w{_Kx@tf zT3d$esnI{VRC(SADo7G==m$#jrJ8Y=Bq(DvEBISIxBsE1g>tU`AKWg{URcq+@iN_p zJ9W|w3@gxy<~+QZ7WcUgSLoCJ_vp*L?HJ**v;}&r>{YqUu&|d$BNF=q232z;>?n!C@qWzuN4}^fT6Wqehf9PWLDt8R0lg09)+t z-hTNp(|_Dd1BmFGK?6}Quja^2O$;Pv{bKZ)o~B4^5$(ozkW@H*Er99m6+7;Z~veGy)^}QnG85wlPH@F3Ny8)DgEb&L03zc-1ri+ZO3CU2{&`2P4^zpaNS>u18kC_}Qs%tsZSHB-)Ny-TCBd_2 zojX#S9{hOCa_b}!^9<kJd=>b@_k1x5ZS!n^ zG3h?KBp&wX84I~_Bu%Dgj`%woFp42d990<+%c*AJ*Ug(+Y>2An>wsV43}scA`4pW` z#Yu_7Wp_s4sHTLkr%7eY@#y2Yxa+m!;Xt~s8>7o{60O=1S7ivq7O6aaJuUu@0`9O* zijf=EkHOv|t`Sj+)BgulKTL}o9M~TV#t!Ax#~D8xhF6dv5Dl)u#w<=L2C;p76;=SD z4O@oYYj|3$?y(`^w&1Klfud#0>xvqB?mqZy2G9pcSV19yK>O?;z_!(#-hq+?4m~dE zO4Te{@ScJIa4@lmMwyPoe;uz*105V-KX;(-XmJc|G%NfDIhO)$l%U|gf(5Vd(VHd# zgBbS*HeINa0vQXR9Q70YxWLbsGU}9`*d_Nmp3|$DC5X>Q>bMl#+oX?z_LD(u&{ts= zpJ{`Z;ak{lu2++9UfI$Bilo^Y-s8Oqx?_eDgKr09w8$L}1+CPr`>^p=TaXS({(~^h zw>oPwXZ^EJ1+Bq=t-EZp+}EVQ2@60l+xb9fyWIRfb2U;$XTTC?Jo4{G(doeX zpud$&ke(4f5YuoK?NM@AdKURxbRZna6>)^ryVu6;9KkIj1`$uiC5GB2qR$5sg)tEG z&6LLy_GMrf4d#QKD`{lN^U-?TO6(r_?~3S0tH_>n7#SDt%e~>rXmd{Ru`h^%Rch)| z-Ji0lO#ic>FBJVhk*9Ea^aR*Yq8i>%QG(*2kgx?#ZBRX&38w-!xvRkc?#ak@7&_WQ zR=O}j!p!AIC*n%}p~cY<`iJV-=PkoK$zy;0^nc<8F7{V}Y|SeE{U0sy#6|BT$%S~) zSS;vG6^+a|3X$cXgj5ai)&IoHQP*zz6ho*_*M0}u)W*#nW0u~$^PlG23_%w7-z~t| z1MH+fnP;0dvWW{#0CiYC*f7W0Nna=wu65)CX9+w*{LOm}HSMeZzpw`sSb`32F2hP- z+_3Dv)@R#8Qpcrzcvh)r<4p0N*4c>3P8k*iIJMh-!g;k&3TqH~RekM=tC|$}Y@Pxe z!b5j63V1JnsTIuZuY}Y^dUB#aa>Xm`%lfg{=i4Lx9SY<^@DML_#t zP^YOA`v@QyDH9fp$4w9Q>0tj8D@JS4=j{qd+!-9386*sAj`b*{Cw8hsi3WVEmju@;`EW{egm@A+HukRW8SdV5zU7BoPpp%zWlC# zopsbBpL>bHq!b9nEtXQOAfyq9SPwBPyfwN9QT)5DrtqGf)I73-B{&14gBe6r!J;0j z>KB%UjZY|tDy&vLl>+$`r1$J@-oVl$5CMcNgpY0wv?i`% zQPj0iH)TMqpm*jU78V3ycLbgS>W7-MOPQj^1D?R)5YIkZK>gN=QfI#_3$%*BeTh&& z21nI3DD(cs*aglKYNT+deV^9K3q}jv{ZEeuVKyi<+g^lzO!bC$%lACHoQa#4qJc;F2WgH zeaVDxQ=S2+R-ytzpr>8|A=J|+)?4pmzY%qF`cD(N#A8i|r-OgWZgv;uU+%mMOD(M6 z1^o(nD=uRW$Ad57M~aAx4i$!(!-*hvxT?;h)r@MV9AIr0vh3IH+nzDy^Wpwey((=$ zSkb1PU$s%-gme9m6{ae*0n|7RDs%Nl!deAr6me%M5+`4MS2kg z0TJmaMG;^8-}~Wr{L)0C2sHJ zg7uu4FD*HDiA+Ymgwgd|CpCN(wlu#D>h6q(3 ze`mxsaT#$mN|_RYKq&eVdlRi{m)&ZsLGUz692Po%9MJ20+s*(2B58`Vj2qEeNEBmwP4A0`XsFTr1Nb2 zdFKpUIuzT?i;!xDdksKg?TrvKZ4P0f45*nFhh9n5d?{)PiBUx%kn?YGNsux*GF2p1 zG)7B`9#Zf*0y#t@1Cm|CH{dfNUn(g>q=kv#8 z>(|fkCRiW{1AqX42mlxdfC50o3os5Ni&HQp{jVzk@PEGQ!2rM{48Z?;GyvZN1@uCw zbxgtF|4re)pMj8V{Wr<~Lj;cmM8e=%RgnLO3J^*?_J3yjZ;n8!05A_)&E(K*Wo6?a;0NG+6vrd zRWt9$z8&Nkab^5R3S$b%dtb2}&#iTNKf^&WlhTsygz9}ol?G@J091kjdOrj#BU<+% zhX+C3*UPXGS}_yx{;wtfhA)M9SdUCL+LT=Bq-&Eirk!f7Q4hCYHr%b>O*IxgGh)@HxKZWH0jXdDDl&akINlBsg$y^?9l2?3{^4>aXPA@P z=y1%qePN##n*#bN`%Xr9(|R?H3jc4RgCQH8Ji-S*t3I$T-1Yw@=My{pHoj~0zRTGA zva9d}vM!)hO!H3}^K&w=aU$m5_S61;Dx^;Oi3|kfK@5~N&plgz_+%ph>O8=fvhPCC z8K;6vP{3g*VQ5I7ckVGKx!0gn+lJKilAw{#YwEHlYVS5?2rm@qhNhRR+Rjjb#NUj` zZZn8w=21u zU)0{+S>`r8u+IOLf`ZAgod~YofNGI~5b$caOP~}jIGOt>;;yUJ768ofA{JY#9W{eu zNRhfP1L|Qk1K@d41V`>9N`@qmPk6Ltb2)|CL2y;zhi4NPY$=I{>{JXs(==dHH2_$3 z&CukUdehDhF=UyfFGx@>sO8piV`ZLfc0G;D!NQ!R~Fb0S&8Su3p#xE_U&qjk)OXk zNSOAs$b0S#wWa?E7e-`<*GF%%90DaQGyk-z?+LJq77KrQv-B60m~gumWXhe zX`t@5z7m1B)*c2%xnX)Jfc?+b#DB~9igS1+DViJv3Uf?4-nYo({Ms(-z^>3rt`!^onO28%R;wd6laTaKbbZjhsOjDyf0r8^U{-Hp|J{k z^}dknSkd9DPpWJTh= zqC=UizVfnsvn~EDH1S=KXk@DrFqRo%E8Zg6W758VQe=7BxoY#tX7;|bteiZKM6`axZxd725d5T?;qPN`hIdbdNt)h zO%6)*Zx9Wy`ggK=%Mj!tmrM9mWU_EtuH7(jJ>~~#cw^BNBY?%W$wsTdBQ7i zj+JKpNe`@Q_h;2*BTMM(QS)Jwm;TQk^L&DNAJHvKWpN5a$iQ_(Z`6n-9WqYAH5I-e zIXT`7tl3Ucr*soxkqey3kN`}8C0 zosPEEXJZ7O6+bkk+#@RkIu0;M2L*^M-Dt#AwLuBH%|Ws%S~YKCtgQLUk{Aipuj0kJ z4StZ5rv857T822la#7RwF8vLASZovWUVO{-ri8aZgNPIva{VFf>_82Y{-@=#FI|H= z7MgCffBu4yisWWL43SSghT~;2sTfEp`aAm`vexScv9WAQP>>R}Y384GdJv7Ub%HR? z=Xbufcgx)OSz|UNPOVkkZ6E_9<)N ztkT_zROow}?K9dFJ$~nNroEDBv!OU;I@$&+I-fjZp=f2BR-OcdK1%->KN9EnP4vi) zhJ1-|Bs3eSS3UIHNW7ofab!Bwly52C#qJ>Ft5`nPD9n9|+ z96C_sC0l^@Aq!HK|CZ4(pao-9&%6^kI&$-|igd!enW%Qm;@9*nAJ%POF=#wJ5SlDF zsbQsqH2lmP;4;ly2{tjz8~r2h`g`JI$<=&^jfx}*gLckyvUEamU~qHJd-^5{busXO z$LNRP_&Z+)QT@}d`a`&cSSam9U8ZsMK&hn(lh`On8{aC`II{l7f>WaOqqI?rQBewR zadJ>8525|xABEG;*f>@i!5BcHUHpZLe5H}4Vj8K$a>4B#nHt`cA?vZiQ9a(#E(duf_Zg4^&M)@47zkpCJ!(QBX3sd?Q6s8RlY=CrCU>WjmivzA?k=J)lHqm z%dg@OrBalCdp0hX`#@>=IoIFyR;b3rR3CXd1nBcc8-=02I)CXEIf+frYkw(j>Sp}8 zSN)$?3I><-#y@}{FpQ9RA@#5)t<0CI(cHd|;&185D|FnM6X$=Ow{<&D&s1K+BjFlj z*Gn}ZNMk=$IpTXr7&b7^GuiR;M8>i)iq|o z2^iH1M^T%F27CJ6j_U%h2*u0K415TTUWxFw9V^3#gD?f$TF$|#xvmdGIb2aAy`-8oh;gJ{B|J5Ed9y%)^$6qnXWYRE2PZME_eo;#kll8~P4F?NNy z$kBl#H2{x-RCp49t*hg11Jn)jZm;W2)4zrCDS~-5-?rT;Q5n;It|no$Roc)Ti`61M zHjKW$iOYxXv2sub}iAR{4V2otXzV`-?4Ppoajdy6x?{ldrc>=G-NghlKZn! zKh2Y5Tx_NOx#_-tF}*3^AfR z?((vBJP|-L(KA6vAp>|Efo3uW5CoP z$s)MDqxA8FM3ZI?I^~$vg#;MMX=c_HS>u<{ST10GKVOG6c%P%=S?@QUfgunnWIGX) z|FsFs4b|;7@YB&8q)3tH_4+A(DQ?PbazQitBFEb186`t9g#c@IE-$;%)!0UPPqbP_ zn#O$3~5V>S(rv^nJ!T4pj42ygQyl?n-H+ZAEbUKM7#F4oWjVXx|o}_7kN?(@PrYj zxRJfN6HgD)zO`tc2|g11U@gw+2g7R!70~=5H~FxUgtvu?%5i+Be&xGyrs~|{CIw*` zL^EqXZE2N0=+fX)PUZI+f!_S;bWpXqX}+8Z084dUn7fVM8)p5Ips}l`Y_SQ(i44C> z$E~Tec>ar4fMjvSFsSa-$2Hsw`7^l#uzA9STjlpUxvgB2r^&{IzzS$_Cr&z zbmvTg*V5PshhqX^70FXj`f`_!`LC^S&y(GaC#8gHv4b)voxVYx1D=>h&0SHn+5QCY1K_Om8e1PG!yb5ESs*#p(d>I>vKBltwXj4Sw+WGA& zSvi7$F*tnOpkl97@()z7@nBu&ApTD7cNuJ~-ybq4y%h>@i$~YO_X8y!q&ZRb3Dn-$ zM>aHpA}H+yIH);U+)ScQtsn*Z?dGshLM@_k8|zi8o~-RpnC~W?U@+uFZ}P!Di;-Zo zyL0dIP&Jj3luVTe_G?_$?7I2240ss`{~3xqMahXy8D^^4crJSwod}bUR54at2pW|V zp6Q8eE_miN7rCl}$n^Lbc*4F!t8N_w*_v2aLZzM_`MMS9l9+Fo|N58w+|)SI9iBD3 zcG?bTkAEZ>m}w^ipKQEdf@L*G?nvR>_!-wzGR1TB2J;^?UywXbGV9W{<8HA0YOHu@ zjuOZ!eMD#%I4FnRn>;^>9~m;Vxx5<>p@c%%iF(oqGr;`Ge$BNxuSiJ>301+Mwi$Kw z(2AE9;qG*20Q@}cvp%a_@Q^a)A|-nHp7G!IPSfz6zK;)v8*_M`e61|*@=R30MhC(N z9D6FFu1EfQz(z|Z1OGuImM~r~M-8^-vAaof_cop?GZvFN(^TmnGn!4wBnSHNImuS< z4$I^d2#iqNV$Xdi8G_U_k>o*dH=ly+-5t3|Ul$%c+~;SK@G^R83hCk@qYz>gd@r%S zdU1goP#u2jHXNbha_2ZwV!^voj?U{!^QC>^n=7TwCC@c8>yN%+mK&W1xG*}#WL z!=I*0Q{SSmap=ifEFlj_9v+-U$hcr5LEtT-gUZw7U0V&f{4DsUs#x%Ljj59{vXj-^ zdGz!oiiOLfxK9$%$VfcP@H@$s(Eh;=6gv78J6CFAu)lIbSM?)9cXy*+qvyR|>~-ES z24kBS>i3mmJ@4>EtHx`-5m=<1U2l?B& z_DMjlP&l1@GV0!-zq(@Z1TKms0fRw3Wi3@@m}C#cl7eGH&awsIIdV_c1h+Ve&l9S{uG) zpS$*es9=%?_x{lLy;!cQZ2i3*f`t(V!ihUa4R-36s0Q~_KDQQsUs!cqGx_T&ugKSJ zvo84=$32Z(GMtylF=+=JTakZcRAD zd)HzFTp38c6WsqJpJ*cMn<+>bMkYTID?e`TkJQPMr|L9;$ugX`Tu*yCFOVHa$ z9Ki+2`XBbkRyU|YPDMTU3d~reqyCc>$K5C)#Qbw6o zw{|NyW4>h;?x)fgc#HR6!}Lglnh~nQcitbaX$(T)!KJSaJ+r&KqAL6`ZEcjKor$Ztvz_hmj(&in2+I(q;nXRli|v-+Bu?%gV^x$HB$Waie$||XXR-}#jR`_>R%1Etetd{7M}G)l%Fe_3aqN24N4mSB4Ch#%j)h9>>#!|SC!%1cK#N) zh=KzsnNEZ+?w}C-BIOA=WvXufs_}+)%PunPQ+r;g3)_a7`c;dU*yi!6FC>wEY-uK| z1NITlUd1(aDBUE19mX5H&$a;F(Mf>klhi>k2%(IK5(bdN3OPA-v4-9w%O+seES$~7 zl!LFO@3~|qjUTlSm+V4Fd3{caq;{0;Px;RQ?Hu=nXWg8gQ+PWti=)x1ab*C!APoK@ zp8}$h6<=PDfaWE?RWXfHz~SzJ4}b5n)eK88k{^*hXWzUAKh1aJF#3LonBg}?z$FY+ z6Tq#bi-`)FQ95NlF-vb=`q9Zg_HOD6>P4Ujv0`w9k!}SfS<;7RkUgcTd+b92kYWY~ zHTk7Kfe^o9+>J;)@CX=OmGl8EicCk%b>~%AQ-8HdP<)F3@ zOq5FVNor-Hoz_03-y*Y#;Qak3e^dwizl-wA(JO;8j|SqqkptYsndep{q-X?IZDG8pD7Wqk zOc^|WM9T_I-c;%5#3OK|RtR)iMm&)_6*MZ6ZG4OexB4wijsEOGuvo;fn(FNo4HP7n zI@V2eHrk?RsPBZE{jt^K(*6`>Sf0c2g&OpgCQ%r_q-K>CQm~Dh-Dv8H;5Q6r_T^Iz z)xIUJ-8~Oyg-WH~s^@jhdyCAQCymb!e+$GRlpn$d{@4&#`7n`VKZyjGy2+sV!i@pq zi?RdvYc0t@%aB*B%_~frzITgyTlwIdI@vELyiA&s6`583H0g)Ymjmz?P~3>NXk)oi z8U$w>3Z{K^p#gX^)s38P1rf!!W?Ls~eDix)Yw?-CZ3_>4&^Q6O^3h%qI>`r^}NzpCG>{Bk~5}W7jQH)82 z)3J7NVN~#E8^>!fdVeu43yIrKQXlL>duh(VH~?G&fGA6>A_lJUlhFW;@cy;;zFLyA+|+?i;aIYAcB)#I++IZgv?H$I{^iXsO$QfvcT z0zaW#OmZ8P?bQnCH4o*+<+FL<>jPpFB9;DpcVA%BR}z^?z^duJIQajDQf<@_RMIYE zq%4s5C(XRY4d(X(|E_Qna|`i($}9THX_B(mwgFlZ1WPYn%MzP(W!aLhA14t@1%kc* z0l{CP1nHLJM>CJ=oFG&}>ePJ68-l&0#YgXa|3yO;dLZEq=!MC1!i+iGF^ll3N z;Yr2)WF;#k@E1QaN)Gz6MKmJ21=SMNqmZe~H(12eqf6C|sPLZkbvYOUKhr<_Ez#aU zPe3J}K|1SB5by1wgBRu`PfHpz3@v5PoH@IPMlSl2rI_S<2^C=<={)HAK)=gx>wgZbr8%}Frg14GyG8VDe4mD)YH_miJX(OJ3%Lxq0 zlS@hS`nY_BIx184Oy1!Dj?q)LO}T=5ANT?z(;c5>Bo!@{jp|XT(}9mg;37&I!mP$F z{+IB`7*i=SX|dM?LF0Jd?3_vSvL_caHT3?N_zk3?Amg|7%GxZtc?kv6NTk6si-fK8 zZdb;2-jO|{VA30WBb;}ChPyzie-1>dVR~RdH%X4Q-Vq#Z_!#E-tGj?giSl9U>-8DQQvd&m7xavht0o;!;9=tvjE4Ie2>)k zp22WrUu3w>nH519KYsOP*Je=-4~a5H8dcA3_c^;@ffTHY$yJjS#Et}kKwoh;a5Hc} z4=l#MLqY`D?N%0%QD5*pi0*XsU0M!v(@b0Xqa z@@5w+PTZAbbjw3cb^Py>?=++pIEXt2kxMnPB~24rn&yE3FbG|Hi=;8$kUfkjiuE(E zPMZlYp1rT}kS5tK{{7$t-$t9Ed*pdK-y5T|fE)Xypav*ZUmzo=J(7||C>A%6O4pZ+ zY4TR#AcYM-|8i#0Yp>m<#m-)6+7Nm+LKAJL)l$VdYrR1b6_I2Rf76U`JQ>G3+HfuB zmB*1f`sK@zDr5EIT-=ax{to5WoF|5(5IU7ruMv<%j_ zQ<7KmAofT^sryOc{5BPp?euppykenFee=|r)F4AI!ShjJ-D`}tEQr?(FdC`-Bb;8Lz{AP47Y+o9|pvL%;G_50Ew+*ho{LPFeA34sly{L zwgcua6p6eLH_x?`@CNr>^WY)WXA8ZF<-O^Vmhtc->tuQJ;lZTO2I5E&Wcf0a#g>}r zdU!$fO2SEk&MMf%4kFx>InpufAgYcYNaD!XC4nQyYXoiXOf+e}*jHJGLj|)wE&07g za20?-x&7TRsG5i>ZIikP04c!xX zK*H^icEUGb9|w`BNrmGTGcq)iLz@d3hW7ht$I3I5Mt_}(Kapsx9av{%Y9LxRv6nAj z{!}N)_>D#McLr#6e5JxJD@I{t-<2wzpoQ}BVD4+02$6KNMvC$a!5W^2Ykg$Shsma{ z7{mxGcqip;zT*kGH7r@d^-#oa$d9Yj^nrxUjog~6vKMPeLR^?>=;yL63n=S<7CPMjv*q`Y+!;}x;8$84=@-@ z@NwSUXljZd9AVr;Q)@;S&(-g#6~tXlWFqk zJ#_?AN8)V_^~kv)j5^Jh_`?=u#6W!_3elYiu_@X9?1svb3vuMRmDwAaXDajX{T|+z z7cQT=ceh&nl=0PbF4v4`T$Ojy?)_L0xC=#ijtI}Xz3cnr7X(p|^~WCJ)wjc z*b?irlrdf9d8y#?w-cX+Bi7<=cMNiD!zF_rXv9USVCXZnLvIi()23jxDE#VJMXLAk z9|szXi)t$5^~fDO#uwrgF!AQ=1h_o4i=~%FUCLv$ep>JiDS3-ivP;WrK~rM2bk=Ax zGIbWEju}=5-s#Yiyrttfm{iDX4kAv^0(P4EP%ZaZOw9MQZw>rwMiPefPVxq=cf6A7 zk1A-d`phW8u*xpIYRt}!SL>U*n}iITc)Tz~?^&wcJbkipwcbMAp8JrFpVR^*o~+#0 zTWq0N?Es{XxIM!FDP z9$*=zS#r#DJH1^t)Pljv5!Ts}z-bk@D+-DcZh^ZR^}*5FV>HvEy( zuHcjUL~Mpz2>^Hl?4Kg6JwU~XXoTRY?_ptgU12(MPk6zJyK(sV6>YZ3!(YY@L;Idg z?Qi>tDN0;Sj~m*zZZXGh1B2$k_iLB!ypu5DPpfdxqndy)o)0mk2Ng;7EjS?wBarI1 zWs;WVZ1;V5dA%<9;>X~M%~g_=V6s2mj?$;#r~o@60|H>FO_Z4paHfGlqx$BMQMnyg z_Ag6<4nPN;sk7N8G4*ZdwspB4@Ls($y1#V?@nJ8RBc_QDo*J^o3k`+gKQeq3dNT>& z!t~JNiRoYxcENHbJ_>^g05|XM7E8ztCCqgtL08E^F~vc`HjBqbB;KT;BP4qJr<)?1 zJf)p3nm;q)ONtx?m>L`!*YRudnHI;4A+AReG^kK?_p4;@*$;$a9gl@hxW>|hTZ1ia zzX}9Ct>Q%RI0s0}Qhf~lLb(5}X9zgeWIrhxNd5{Y_T~qD(9IBrcmSRO>^}(FY>bMC zBv-DW!z(V$C*Ax~R@~i~9=33HKk9(L`%vO<{egmEuO!HUEn6L{p+~L{%k#fVD({bq z`M5-%y!OHJXH%n#H9;6Wdds$K(mOMjj^$Q|DKK+=BBv>$aD7s9P9Ln6G^ylPV5=Ho ztA;B0)A02rdnKj(4Bhb>*PW61yImc7S7g={U`ExFPm2Dn?hd->fo>uW(58XYuk?5x zLBV-7`OJMWfcEZIhkdbI6k*jnGzH9=|!t000 zA#v9V7Va#dguEF|>-DJP2Fe^PQ0r*Wm!s`#-;$xn**4>t-i9 z=Ki`u8f`JQ1iUvWqCWVD?^oxIO_bio^pJou7{0I4{N2N4$ zU@^_%EFMfd+^sA&++@|EU)WdM8b7JC+`s(7Z5x=dd12X?Zr*J4@E7V*T-24Eb|<0jHf3rD|)PuYsJxIksEt9F@{$Bs_> z7;=sX8-`GK{*ms63qz@{e+t%B&f(+G=4ZQ@QJ8tNZ#K-Z=@Pld<_z2Rok)s!)_L7W)S1osGzi&CpnCN(#Le03Qy2LG z#!d*#zsJS-U_+sAPCTZ-g+(`SJ>{A~UG9{gZ#)&aO#O4;QunU`Jz;T^Ds=d6tZ&<- zH!t2zOKy<~$>I#|gg7>oPPjqgw6TF-XK8NBOVsiDtE2tfIqp7O*B;&Ec+gkBGbD+y zLm*s?%SQ4}<1oB<2&0^ifph)ip2wxS7z7*~ZIQQG)j7Yg)MY+&h8T`*P*ar(yxx5( zB4{P{O)ikY3V}nY$w@i_e)Ffqt;~56qk|Un+Uss#*ZDAX#O7bLcW~86>gv?vGm7u+ ze#>w+5G!rE$&FV!3!*J7rTFB;R&|81!%-#A-)`?)&$CE|!e9#)6*C_a+~T*&j-K8o zbd>{ucVUo7YpvD04AkxC%M)S52y#S|5%HM`?dR7Eio#a5$HGkY)?v_&_P zZ2e&@)xK;xH>3OMCJoIB?bVXPPecU!@#2O!TmytUT&W}AE3>{vIi{nLv6sNicl~Xp z$ef@p#wi-3fvC*ZRW)mypOCxTns~x_+7RFOWb`JX3fQ zo=WyAM|WktRcV<;6m(&n&U-+_qX8f_{`SMNrVr_+^C=h2PCSq@Snh)9w?$er+dp6< zW;W~23*46#7-6I6c(l0^lUErQsFk+AD!oYA%y|o}3Kq=K@e~gtO|OjPNXeR=`FnhK z$NG(mQ=y4+WlzW%YM`?X9$8FiiRCx#WU1|^*FXxbCK)@YW*XyWtqan z94Du$#+0^JF8xv*kuQNzk*pEZtHM&!h?1j29>0SaQ zb%tMpHdDFApALcPCd^i|?<hxwz!GJ7G-yS@-|8uQO_Ib+wCT%eM||r-jdEb^&Bll zGacB#@=^t+|19g%zYt>l2_@JWwdzlV0qZNni8v-owTG7l!MuW?i*!@dmrC|s4x$}W zdeM}zU@tvc`?U*?>%{fYLm(<`A-|b}Zp>;c@Qv2i4e}vR>&zyd6lJj!v}AvJ9*8n0 za6@_t8WpPRnMR_hh)vW7zlV~bs2iQr7e4}cC!ZQltCS4fY^+r1Gp&_I5qLeo%NbN| zqReT@wq-EV5ol&rVxF4iF4T3NTwS6?X+A6r~X`4 zzAF+S(S8*Ozdz$#bQ(8(HJ$4odXs~kcjou=g8RoLR-Xt}M$%THH53$KI7~dG4M~*m z9UYFnY|Tm5SzRU)otpt&-pp2T<|tE3AXAn3hvrd&WB&j@bzj^sS##>oxM8@cwANT2 z;`6EEL9iA@?T-#lg~io0>lp^~M~2UpK>5b_9iRL1X14t|)Z!(*=}f_{V|Nt^Nst~5 z24bhFKWwG34e4yo+m|(*cwgrCP=dAXsnV*Q&DO8G5OwEP`*SO~bgF9KPw|kTw=MO z%8hsT!4$vgP>JeXOP@QBsBQqy{A3!HUL!VXyQ|s3+I?SO40yb4e(h=&+N)!8W}Gn2iS_C7>dpO4psVFk&)r%oUSh87e87prr(X}WH(E^Y1x)4A_w7-=wgHIQ>w0S zHH|klw!!^sCd29ps_xms&a_84j{0C%AWL`e$c)DBrugH1EU%iCBpdDclEDh!z4Jkl zTcXs1LH;Dly!7~QZdiuXciWs&N1kV)zYsTU^GL+(S!>yAyX2uRB30~=syLjscwKyq z7L`BjDoWViOY|L`4fdlRt%rjOVk@m+ExRJmxBr0SYf-X#OWC)pBz}K&PLHdkklW>QB$Q&4#tR2v++$b%DX4k>6KNG zoAa9rq^>^t%APWwIqIPV^+)dMb6?XwmMi@Sf6dP?DrBFbMqjeDRx19h*;Y3tLVc6S zq?o>1aWGZ5+A9xD3^h;LEZLRe!M=FC7^xegcLpEORrs3{>k;aJ4eTV|zA2KI)q%Twb?u`;EWf_dPa{h;Wb z(e=(oC1;A*U3AeKUm^6*O)Rf3ei5QKpC7S0*k8zb>f~p=YF#c|c&j(iquo9mnvzk^ zP70}@00xx0iz|Npz2DMU{Dyh8U%kg&G)FR5YG{$;H=^RP>hWD7 zj^74iVyPs-e`}!Hi=ko6Kp0#~dsuy!h()!uqX**#SF!PVav?;7rUe1;FFnvASC;|< z1GvEW*e9zsh(%4#Z|Zh2`jw`_I`q^DY?}gHtvUeJ8~_xa>=r(Kde=z&Nu^XAZ{3q6 z^a@`SJ*819MV{K1zEutv)dDD*CHsT*_Kh7C0(HRU_{C>-8VWTOP@8yC2O#khu{!GV zkw{oMG{d}7i2jWz!=w#3@7As38(PMdznFi!dp5w8+1>A2Cw;RBqS-)QS<+IJsr6Xv z6(qeAT+*=WMSYHO8q>9#APKM;dt!U~y9~$sZZ_^a9>)&mMFzE7`vti3&Izicc^AfG z%hq0^SZQP&QgC!9g5N2*xwEyL>4R#TUQbZ%Dg5?gGd2OpAVBpN_!LPZ!%Z#||Q0kuj?jR7DS{IR|;&WwJ)Z2}5=V4+$;| zHIXW^Y_V@*-Q=jpH9*W?KE@pDjDJ|{d195VO)FofhWJptBS@-gMFsOkv6^3he@`m1 zhY; z_cU_;cGs}in%1E%0~Y@_e4KxD{l?Tgal@(j@|_1S*;PeMggU$1@`PWXaa(kDf=N zKf@LdIU#b$4+lSs3^c>V_n8Qj3p(|w@XK`CPOg-1r@j*#&16l2Gqq%sP**=B7ZWXs zNJY7!crzJtC_t&}W~ZZ=?qi)@SEQG&ljz3p502fcqrOnz7YtsnzHp|hRb8V5=dezN ziNy*%DQtJNx%bmM@4Uvb$$<}*%14b4eivc9UQ#-2{pO+4={Jc|_c>YFsD1XGDOUVi z-rGk<&czX*1%GFG1qjrQ%Gi`kj+}kVGTS+x8?O18a6gyjZ*Kkt71I-_k-F1{+&!&i zmfz+Za_%M2ggPiZ)aQmnS|;(8GHZmwo|eQ5s6L(l$hU7(BD2b_<`oV$olVB_v=?D# zQBQtQYwc&}CWJ;2-z13Vz`Sq?X>v~Lk7rjIDysGJIQIOw_5DAfk z<~b^(Vds;>1Pf+4YdUa_8gXq!Et$mUpg<%cnAg!L#A!c|*Kx8n_^Ud@6JT#+6!{Q| zT1i+a)XwXwmh!#1BgKM~3DIbdq0pb=_I5OZ&cLu(vi`j8f(SPcDMd4*fFJLY@sb_N1 zzKtfd>Mlj(qNH71+aNh;s=Ohs(@%t$!Oe5{$(VCt&iFMof{;8U**X%t1(n4hjvH9}7#W%s~ zuNQn9W#tAS8P2A-u~|rRXq1ha2*Men5tkVSF%c zhS=Nt&!dR*r9#`BxE$}FrD2jDNSFrf%SKdE_d;<6lnT{(m^CFf@aIP`nh7^j2rmur zedjxE640Nc=$@|pth;=Vzp{S)LM(fzpb+1;`lJ3JYN=bqoguM5bXs|lcvQ-$H4^RB z*So}I*hYL!7%xp^*pG~!qY;Ck6?@x4bCWu$vwKWUJ^@C3Hcwis{=ObJ8Oz+y5Zv~Snpn=6UtLlP zu&yN0fl&iB%zQ$#$;7Igdo-?9^CUe4;tydK6|W(-pcZ0RkasKG{K2t~+nS?W41a2v z%4gq4X-+0Kn`IomP@hn_h+0KwY*u~3r()=&`V0n<4r#l)dtqtFPcIiZN{u^z6Z+4Ys;rBRL4g1s7luxd2J^H3z4;5QXJg#zNEO8qI1LH|x>mb#ry zl09FQ)%Zd+v5iKr^N&f~A+fxuUb1>HwO4pOD|q+uUJ@}z=vueZcawA>7e0E@N$gO& zgqKHQ5O&~Y@nh6#HEr9IDse^d@>mLDyrPOG61L*T|7vS%68LE*-g;PT!;CXE>a|kM zb#tN2kt$)-1|<|P#MJ>TOQ^wN!lAe@)9|+n6iUUxzoO0b={2MZl!=vw@E_aAp9*_! zY}AcReAnO~->lhT;(qV&Ln(Zz4VicdYjNWLvVTmE7;(K>yubGcVeFWJ*IkTX%ynKR zkIT#%R{re!=7inbf_-}ZAj$jnVOP!u_N{>>O)Mm&@hsjWMS+P@{UR~L4(xQB{NHPE zh(>DA2OH5S=7v^P%vi-^8=<9Q+0>-`X~l2Qj0mD_3+(c_+GrVi6SVF~`8_$zt>sF* zAl9W;JM$=dt}bkpg)-|si(u}!k?fOlYw?h$kG>q`J?GBsO4C%`Ie8oYd;TqwCwP)O{^9+m#vgWPZ7j~(rr{OTekg-BdzTOIi)3D)d z5|EKcM@dr%JRV#$x_KP9_R;yy>aq^Trz=E-DiZlA^FwQhW#-X#?}L7u@rYc%XC4r} z8|XA+FFgbu^aBl0jbqwt;74YNvUUBBo+McsBZi;szbpA%xY?0#cB`*B-PeS!yQ!k} zdeY=5R>!|Su2eF}6yGutq`&}-uF<38w?R-tI=o;=<;-^_UP^YN3Ke`mg-#D#GwrZ# zd)cIYtm8PDYB!8XI5`6{Bp1Gal<&P7`uJ2%!#9refARFqfps`dv`L!Awynmtoiw(s zrfFzp7tPuvD-uV3j##&zN#~=G!-Isx`WX|omF~cc1IKoQobV;2h@^~=tK>UTGRg; zS}vVcE?fhfyL^-ep~d?G_HR5!E%xuZi=t5yNBR+9AD&{{H?;C5oK^<~>hHIlAYq2Z zQVOhdDTo75!*))YBMi&95;nE(nAIQ;++wOk!$WDoXrUnlQRAW;<&#z4(1z zJsu-}tVM?4%~*?7A+G$oHEQ8g_U_*+rnJoxQUaHA%M924B9O4 zd-CHK%kjGSZu#;T|L$1Tu*J5+_eRqF4yns%O^wU-3hv7^}xTs@)ssUJrZil zmp1#HE@Ok4$E#3VT9=Rh{F5SxV=4J-1cb6$kluiHtfjCw){6_-_$9A3HDiw-79S3I(rfg^Ihc z-#5iRU(yYW0f(-Yh$jmGo{tfL(jC&>H`9?HRrao>-CXE7!9W7#_kW z&Y&J}Na!_{y`@96``zvXvGcyl&gBi?>t=-dxWxCQXaiZ3fyD7&k(<(cJ2~h{^_{<&Sf{<{JHoEOV|`c zKebEpFRTlDK^jpNy`wO$2mJ8tyD14YGUGOX#Y0EH7(m(T52tw{v!Aw}y&GZh+@~`< zE<;b24e`C#^h@4&JK)mYV9JR4yz+DBlKB835B@pYEQ)`D+pMIsgP-K@Egl9+Ovr*! z4@Qb>qDUQ>9w_yyYc0u)Z<9;ci>`#%la$A4K?Go+5)bv<^*S~sqwJ2`Fz5r3is zpI2`vkp6dal8KT;MQx~>-Nsnm&Hu3I0hgaunFT=rkFQr2t#@MnuvIO%Pr$tD`rW+V zG1z_TvPpILbvPfRy-y>*$Nl;`_4e{9;rC?eXYEBqJsaS!PNNiY6a)d{a+1`+n31Q! zKnu8*FD}|Ps$sJ*KdXo^%U*TD*z`f_pu$Mz+Doc0N4Gcss8cWT_Sflk>waBVqrsqW zCuwEv`XqjPyc+r=POT4pC^lbQ@p$xW7G=0_SdZ$5>0yzODbeNMnY>ip#tv#sNb*dw z8lNnSZRhZH{H(#Tr2DX(=bU5Ru6x~ynt+a)nwq&qzxTz}zb=Q{J}+V2Pf_O{zd>sQ z26GhJgP~mLjL&L#Lqu?vn1)?aR0zr-6S*P-LD;sutz2#ZMX~IZV29Y@RE}HMG*Fv5 zkaXdF$L<5~eIHxsG|yrUlwN}UQ(8bl_zF!)5FZKzCp^ClQEkm{EDkh^8UjtDrgOG7 zASA4UgE5jQIV-jMb6hBYER`vYEbqyLJNep7PUvmi>o;RB&;Q(>6Gje|R57#mhLYyf zRj|d2Nqq&rmku*8IrKM6ix&NJ25}1yB&3la9z^N3`ZJ&38+0htcCz7navpnKYisKt zgAtsMZJ|%@&V3jA3(P;kck+Xkj+QqZ>2g0tKWN1(YqJ!d)~-ET8R>NNl=p7DsOWOo z25W5uhlo9LWG3^#z)4UTAePJkSeI!!d`1%z-HQ=r_fHw}Uwe-lR@Hu1_J^_RG>IF* zp?~|XrzY?e>-+4-CGK^1q)bC5=zi6s-YInL_d)-D@%cbkT`fN;^h_&vzWte&FFdKsd7$wMgh@G^uy5t$j;?`Y?u0aPYBmt$^u?N!VU33LN5 zCXk^8`q|Npi07{UnESBh?oKZ!Pk{@ZIS4kw-~BbZKd(5$$d?c{?g}VkRsZGqrBtv? zZ-m-cfdr>IS7ke2=ouhXpy>TD7fRD?yACHo(R}awlt|2F=J8Hvh#pA*D)Y}s4!)B{ zbK@3yXGf-x6`EM_4x&@hSH9z9EBJoHiy=Ud7A+HQH3?`W)`AIPM=0e4he_Kr5nNf8 zEs}Jcj5NcEFT5FmyxZ`@CR*zhd-shUC3vn^sd4fxZ2Ox@kZ`;6k+oXJ7R_oYO6$u& zF}_dgby;E1Pjovuk@>I5K}bkY%2+M*9IO}IY;i-4e<2vu!_@g{m`(87hutO2<&h1g zFL)Jz+){mmz42I4U9+&=_brnh(aYzAsHybXK6WJ*sci9VI$TB)WELuCJ_D}n>pTxi z>qA-RYrb9r34&iYU<>$+L24w$2nmsBpSJir@GJf=YJ2Cle>m6qJ*8@7cVpk(Wv1B+ zAatRrBk%Fhx-QqUGe_qPtEvdI*#ptV`Axq-C!ZT@1?CeomSby_>kPHj}F zs%2y?&o~xgbGBd1MTb3*gh(VUWRe|qbjaAR=d=}D<`QRq2w{!}2lrv9+Q+jq)qL+r+F ztLaYb{!NeymltaW?k;9!-rHXIytBYm#o@(G9bk()MMH(3{|j|uFn67eV5|{^NE9Lf z2jve1F2Qf`eH?J@lI3KBn(xS$>qYp6A7}zwk3>KD)ach0!bS$7=M&*^Gv`qdj%`ZT zcewkl&pmbG;p5e1!>FxQ#@-YpR9@4AeLFvqiGDJTf2_4Q1o^&{_^rI1oW9@YeDeQ0 zIQ83NHs6{(QKML-qEOLGv6zOT2@RsCrCk^^q777~=d$w_!rScZym#@Z#&b$EM=fKv z!BE2S!4u7X4{!e|6>O!VB>oK(3L9W!Bh7in$7PtS%avX5rAa|q1VCE{pntU8)U&Q1 zKhs3pRFz;h19Ky;6)^PYtMR1@c~f39=UAycFlp*C2!w?)UbJv6O@8lia~Jj-H#V*s zjeTE=oq-m55~)zFj^)Udf4R8)ux+Xps3LVx?UfR|hi&utjLH0N+G){$;>hyN`jQA| zB~qM^=_>%{ZzQRu}O>B0QHhloYQ_mFQ>hWO(uOu)s?&Mvm=eYHDF@HTzQ zz0L4o`toBWjDH<}K;8syVOeNLGqFIVXiQOL&|>^q3@r4TxC z+9rGfVoo`KUg&#f%a>kkbV*2sy@mpxWcI=R;y6R5*SfAdw#UyKQs7&D{3`!W*c%s* zI?*eT?LW5U4b78p^4clqjdbc81&L``-(fJ_o^>In$&A&>5 zJ3N#>i63hwra_mXpbI-~7$&c_Uif-RJm2=a1Q9|7Dtgnm0~u^a!)SJ)&?Tf%GdI2w z34n5$MpawxBMY(Lo~N50)A8p~BC#&bpER!bE#wc9_qVA}{`aHU51P*RbGs7B0*3>^ z+AK_yYc`=bjYO7Nu`(8nK+Q#@01eJC3oD!*U;5EPUxve2akl&h}r^FUd%QP<7nRhmv&aW zbpm9I(0tYxeF*hCJ(FEsT}ub}1QWy+heLu35bMHYhb^<;AvzC=YGCSCicZl=EF88J z+6PTg?RSnCQA=d+;V>&O^C{6o#vp#pklDr~{7)c57$#`1#Xch^WiRln_KhNm)l703 zQ@H@{@)~B<7k1=rWS?@_&>p&RwH-RU^WP<&rj!`{67Zxt@G>2BHph?cvggx`blvOs zXcBN3KqNwr7{3$vMFChcYpd?b%`x^j?3_=zN=VZsd>o_+l8FmRdEc#pV7a$x+6sZOSq*Pr7=l;VU&@NI}m zkt7S^+?GbVim1$gmvtj05W&2@k87DgQ<#8nMd67e-lcdk-pa$9XNRvMnn5^H5_~V3 z8lbZ1Uf728kOxB2aFVkBav%TrmLMjUfC!~riRBNYjt^OPTmiJ*(2|JDphP^dB*m>~ zqJ~`0_|CTwAMCVbFV{zteIa(jfm3hapes+VDd}S#t-h^9&~eZztP@D_InOFf(@mILrA3gYmns0h$YLBe#wR}6#6H`(2x9G8I-72<-`!NL}2Dfgr^Ye*k;La^C9mbPJgd*u%(^grMp3LqG89g zUSYo6(z9aUlq`-;k`YQAh0okbnk*u$6?ny+k&*<1CyD>2C@wXQ{3(lWYCIYw5WLEu zM(hUd&?Z7fl|K1f&Xf~mlIaqa4FqMeVty?OTg9J9ZgLrE{Rr2%w7z%(5c^^40cb>6 z2Ru3dGMUY5G&g9HhoXT_eXsCz`KNwtkF3A@F>z4kA#cjqCZt3C@5$QjRyMN9#Z3`8 zY&?jr8z^S<_p{His&~T0&#~W&%X?{OKq%_(cF;DOy0%idMg9VRe!;uIE@h7SHSvH+ z!KyifWI`mFu|y)|k2oLP$WN5Rmg&6V%^dL#xOSWjc+SI!olAkUu2P+D?r}HdXYE4= z)x}X{v4t*C#!eKiJ-_W%t|c3`+)O#(YT-RUXUhyWh@IQD1prC*X=auNhLz6(pN%e2 zqnFJjQqeej)0nZcI>k)G^s(iflbx2%RUe15%^;hdD(OVy_+((VO0L}5Dd)Ll>p+aC zX*2!-Z~XE&KCd8bXs1|-B8gncX9@RImf{5oW=+*oDlx1ams@7aELg(c_$Sc+ zZhdty3#*pI@6Qxo@()!InoF9oTC#au6*EJS1Fizr?nS-<+?jOB*> z>?AWPlD}11#OMxzvN1)v`u{)V%En`%f@{T`llQ%Nv4HufIvuyQNCkO(|$;EO-?e?PN5j8-Elzxlp7UCxpakTNhen@>n-0{ezs0` zMn=U%ToS!^s>Q=0fF}gWLrjw*H3itVW7>o`EI=Vj>J7JBa~*wcuaNZ7QyYfP{315| z)%VI9LAs|olJm!!Ta9{9x?0Z{{}TmL=I?k4S@utkX4uw5kU(KXJcO{3g5z%}2oq4% z3KbdBNf7_(DajQgz(}Y@{5ReBQ;d9` z)W((^s?tgtjuQuQ_zpjlGcw1LT8lNxpvcCO*gEdrNdfsp5OrX<<9lB+xYQkX!?p(@ zB|Edl@@Y`)*|-i4^-vtmAviA)M2opk;`GF5Mnpk6jP=(T9QkG#i(Px^MkJo0b-zQ>Dg~z(yok8)h7AiB*-!pU^*&b8+#C+kExAwAn zctAw`?OdusIXGkubIZ+@QMg+npYf%?5TxR&c+P#JC3$B`r<6E}@FTI?B`wQk52`{J z@>CGUR!op(-x{6=gX8rK|1$`9EhnpSi2xH?SI?9>F(b=>QzeX%g&_LZ*sTZl-Uymt z!2S7$=`_z@6KTR*K$i#GH!GGmlB{g6^@PcuMr?vJibNo*oW+XO?R)Q?AJ$0!V>*$HUE;QW>&>wWEvC5 zLEuaT+sE6*4XBNiWi@TGM4DK=TRZv1rVcj|@j!XxE%Qt7w6h-cyC9+qSK_GYOBw%r zcAK|^`L%*syX*DMh-D3N++!b|)d7hGJi2h53*w-LJbL4pi_ zPm<`MG9%WiYm5n|>X4)E^6Ez4X&_Ut?Bgp7K1_ugo(J$7Z~)Ul50Rd#hdze*MlqL% z4|u!Rlf*HUqdlC+Yb*CaSV0PCQ1K#qsII6z9fM#kDch&UGlB?mcV7@TG;LK}pY?ZV zb5pDAfOR_DKH9=xO&Y`5STmT`QYWE8L{hOOh z$%2XkRWro)_6b&*dv)T#PNu(J{^2y){o`BCjY^tWNp~YFSZVueORSJh&h~u@~ zI<7$}KvFD~%tF7lPrK@SjGMVcCaOewI93o~RU$VF)C)CXi|oopyhpL;tKt7{drfeq zmpaH51B#bK0$wvB%xASTJ94*2O7J`kAxVU5Fu$4@%zH$nAiECeh*#nH3~=T~xH?~4 z1leMo-tNN*5dby{W}1sb5ejY`)ab+s;M4S3U0h84sa{}BD+-J$fw^$Sih0O~_2MS*Yg?TC{dPasB} zJ8=QmZx)xkC~8|ZBydFEktCoTPk?g_6)5H4s8vGR!holMcV`h(Y4o1U+}!!zFtU4J zR^z$0K@YHXh;pUXu#i$%9CBdH97{}d=1I1JT#=!3i4$G{09lG%Bvxiq(+?j&k*j8&R4fM?=@`N6_EqcuCIOPeq2>*nXb3Ab) zY6S<+{5eE}C>0BoZ|_B1Jo@)Pf~Mwl$KlI<-JA6SH8-&QX6i&)rpsOD44b)yahorV zcK5$RO&h-uSy-~cH(<{;A=O?}h7IK>xHwGY^I~NmN~>rL=+R^xrp%c5o28XfUan6p zNs2HcnANsg^e~@E5f3nVu<1?^F?=K|soF|&gbAM>SzUxv84{k&a2$*547@cpcSQfi zqZ_@y_3FCkdmA(B6udXAkw>(}I!KRti8beH+O@5&4H&sMrt>v!7XAklL2T6yUs(t2 zdXh0K$^tLGaxTW85}goO3!Ta2d%T}~Cj3CMR|9bmGt}nWYXj~O+qnaJa4abIO(H%X zxVi<#sZy$6BLJz#o3G{FO?N&Hn_GjI+FyKYheyZ!dEoN*f=e>Ll6$l4d;r3$eW+)x zCNcRO@sg4(_#}On^w^AW`aa1@kBjsKNN`3GBe()6&@D<9?p&Rs+;H1}o216%vqShj zws#FR^QgoTzQuO!W(5q__Yjgv#~W7ubO7LLjy*mY4q2`lmAWsb2F=8k(96fa; zV*z8#xEZ7^Gy0?uQS9-)JH@0qQB_`y|MlDcMeu>2`4ehhOaUhg?S$I z4|Dg=DNbKmttV>=y*s|7)VzCAzD$=c9KUW}R~wl*tUw?ahp0Bn>2oKyw;re!v3NTa zFf_6n!s)4nU1#b~GgxC&n4*e~2zHO_T?6`+nI6!LD?oP%Mn+z~ZgP}ZKkA5IKA!?rklVni8JCEl14AC;o zr9cN|NWsxRE6Vcf-4+Dv9r{A0PA}dXYup)p4t2YE{t8Mf#JF{zUP4icVfaGS_bFJQ z0VjxZ-uY*?pckW~Y+ra+?U-^1F>oYZT>0i)DS!%4B@*T90^CGG5DL2%Xo~GTXytdx zb~eE)xR=Su(BUNegaY@MkiANNQ7H*mM_0mpmY_soP{owsaNzT4T}ZT1mXZ_Icc=T! ztD&`tNb6OZPfby>Af&Ecy92~%*n=--l%BRpIiK!#;PF2&anwMfOE4}OhmFVEWZMV zTl+r!I)wgsc${&2kG8wkoltqaw6UFGdVdmvrEr`t3td+0jVAmo^YZq^<$EiQvW!)FB+LPP?(t)&+D}pV}|_h#PWlYQQo_%0ml)E0w^v$<;Hg&!t-(9JzeiM65qCY zPF2Eo1fpIFgQOVpKfz%&`DTscSpm+)P=PFfu+f|Wk?T&O8}z&K5(B)5G?Rq;)5~Wb z-fkDhq=&jzE5!UTfmdM!$>G6)kGZ_9KQ=`{)tw$es>G?khK^s%>q0UCvQF_o{=z31 zlf_55#liawI!s?4lhae^|C22&BAwd}{W}vt6qup%H}ZhG2o8tn`(2k#Y;p=@tRp15UE z-?9_A1QtKgWb>1G`a-u(Tdq;?pHl=%JH3!3@XLrWCvX)@#v&o#IX;9&B>AFWuf0&c zpIZ8+Q?#k!?DzfUeD~A)H1vDV>?{2!oRkyP2_!{)j9pT+R!}9~Ghv;jHY?ccJL2M_ z=FTAYoZyr|%TFQfSkI77uS>tY)j{AvN-)kZIBaL!GjTDOQ1t(j;yFEM$ws+VT~f>o z+CNB*OAc;2cp;SxHwuLvN)4jI(mj`*kA~BJFPG4n$FINa-gsYzgc*C27&{Z(H;wig2{Q$Lz;7#Q~}@##vfmg zKC9tdnGc8vI-+40L7CwvvYiNWhd>^-TI8HHiT$7EnottPqG9$Oc)t@BaXpIw;WDMd zoM*33a-XBr54+7`Ii}7R$oEmjH-z_!oDa&Cjiov(h9|M*G_tga2xU;=oa6Em7yg!w zHhQZaPc~ZYVZcgosi5HX6-pVd2o)fED-k1jSnF@*4yn+)>I~Xn>y^d6mTWEdtL2D* zyI;zmo>}!PiVH8`9&ey$3AT}iiY_nezo;t~&>)iF$SRhE^mTqD*W@9;_0`PSeVz#w zx%tjDD;MoeIvBpue+1dR>E7vrnksh@hM$C1;HY$XISlm{ry!)FiYFNtV_mOTuaGjRnr&BXEwICjSJ5umzT&)NbABc z2aHgnb2O5Cq;yMA|A+lsF$|eI-_;!kHPq=q#4(fMDo8aSKk?meZ^qow1a-knr{xYb}M=?9w`Tc@JWHm}dlOUW?^Indze zEL~-r`4_*UVbFCrwV7%9)bJiJM)IC@^f3Q1DDB+S>oa`t{pyx;yeVP|#JK4W8+-_T zgtNHlxN555>>|8g`_1IKZGHa6G5*@^4EgGa4*0X-LXI6M_OPFN^p=<^4KsLhLc6}X zFgDsVp#|5gH7_)>;PUuao@-$n@Bd1VuSNRqkCc@5SkUt(U6{UeKRd7(J2epHJLJS->>&qdDU`I}z;T7N_OnZU zAQnK7fl#Y}17+mpQR3l_>>7(lYm?6?x-iuzBhk?8K5=^Y*WU`Cps95kRZ_6OFVl9j zI81!t+#?Cm+2Ktv(7(fI)_kK;PY_U=q+LdlX(Vkm;hBCD&1!CqIY~zND}f6aSczI&q0q|l(U%b; zlX}Z~h4c|zfFsWVmx#CLJ?=>H&Ept@igWnmR82F6!&4*?{`*%koM|MhQ zJabwYwC9qi1>TT?eG1{sQ!f34nnX=iaLWbh#qF%E<8YY zh_IZ(Il`-2>kA#3oZu^3qO?PXe)}h~_4OB{j^(NY87kFGTBq+v{T!JG20(g~JRE|B2w`uo2FayBJ44HTY^HJ;yr3g%{UQcH1$}77-Kor zS~D70uA(IvOR=vdAe4N)wbA|YNzct=Y#tNKV?euW{xnOe;-m*#^+zPG+BF_JU`#iuD!82lt{@hz_C%|KRJ;H+!cH3JU8`7O zhDHQXi(rCkIQBPqKb-ydLH>eX|K#I*gqgq9ctPXZqeQ=`HQUetLCL;O__lR=^NcQV za9Wu)-;{@A?FUDe!meH*sA4BQZNzvYdwb&`%)F6$D>8#(2`rIbd-eH-rckfEBtaAhO=!&kx{Y8`K8*Oz9~ujz=c>K3 z=ZSBc+h41Kt0W?@!AZR^AHa9`AFkp0s+h=d$#Mxt;+$+{LiK(!cCBArj0x~!Fun7V zVoz-f9Opyk#)Z4>&=q^m{HUjwqkjdJU7&-QGlkb9NkI}Z15gyS4vczTqRHibIuNe1 z#D22lg@ei>bVZsO3vO4K>G6^#Dkbq8HM;1Wz-Z}1uuXtj1TUSVHjc39{fx;_N zD+_hTc?nVucDm2G`GGy{C{GTSar4 z*gn@X1zZT#xgg?`lwbsfDJ{iruEcIY8+;mtyvX*6D6Q<-bk<0Dl@V7&XqI6p52G;( zVwtXa-FC8CT3Y&EUyN4T;>fErYtc3X6|VkQdB5dC_Q%Mv`W?KSL`i0>c=+dEE!S)H zpxPH3dV&uaB>D30=~8>uIiZfWu3HDyWa1o%&%>*?>dBPyNs0ah*JlhK& zvEKPYdIY7MN*C~x#wvIaS?M|eBb-h7P?|-1T2yg>`U27}8jxxN-o`4Qm&z;oZ{nbO zsjP&dTM%SlP?Vg^ z)4LqPi-thp*M}v>8xZ)cwxRova&4-XsZhL>wRrZhG?p=7y)@)qdgN>CLb-7P*Dek~5}BpUNHc4pZs-GwiU*LC>x{?zV}MZo-V=+`nu{g^%P`zEr-{+>`5 zx~84NCv~IUfUZr7^`;Nrea6b-~=Sm@_!wefNLvx^;C17j7=QqK+38a7;8#Z>U zl3`4l(b8Hlr-1Hk8KDRYO2bK9JSm5Xl~EuJ;+9$}4wR3U6tgC8%?>0-?~*3L**2|o zh6gEKmOFVns1tUv;k#s%3p2YrsI~m*t>9`r@7v9`5$!4NxXQjmKdbKnxUw9^r&hL5 z7r?G!#UjdQ#<@BmaY+x2n|N~;7FRxp;1Env8aQ{ikYLZoO|WRkeY%q}F5(=BI#$)> z`xX)!uB#qdkmA*^AfQgf*o-HHX{)fTW-ag5FHRX0oLVMog}?cZghT{TaA9t?%oIHN zJl5fb=x|-%-rA<}|M9^2)OtF`zPOJ8^JeZaO-Y5E)2O$uUE55d|-TSwlf&ko<{?4P7qMRxu{3_gsv(A5VZgR#gH?>j=JO zva~n|ZO9{SU<`LYjHr&>TbRowAcrOfJtlGFado}X%e(J>1wq;UjSB6?8N52$xd(1u1o=IBnUy2(;q_Or!|X<0Kzwk2FkBr(bZEZlP!HdSb%y0Q zFEuKH`hGGD6&83rzifM@P;jY~$Ohy+UEo{6^vt}HE?ZINc~NF)VR z;Z&Ztm|`I z6_x!-)^C_O@a? zx!KPB6F#7Zt;P73?o{a+6K7-wclMg6^ofZZTGT%*T@3>&6)*z_gnPudW)5v}y5tTX zqp2BxlM)>8csza=tPBsB9bAvDXcwU7Xm(F4qfna%=k%c-N+H?P#TgK|%uBZ$?B*WYedvR*&0XR#rA@JE>04 z)8T)A<0T6Ws9gV$(sT^}$6MM$4WMK%l_7&7n&EZQrNUmnrEUlM0=`8-oA9~=_JIY^ zF!H_@XvI&$&VD}MptKLGzvusc7jQZI#zv4%1Kb8(jl+rdiOn5U{=M(ggAalGChGNN zvI9UYq|6^AuA0zvqGXwd>Bkz5>r?h7qS?gKgb&q>atuaz}UhvnMU+i1d|*@hc-b+kux75 zuaXrxYY$^SEiq`oPhd>)&5>nl6_`GEXmn9*_=sdpZit=Y1VRFLAN|uH&qc^B80jbR z?*(rBR=GPhZXq(rAe6b#(3DZzb0ZP?mkpP~e5kC9CcDJ$x zHGebdVVznx#8$bmf;e4i-}|}n+Y}073#$L-VqE2JZ8*<^1Ev=Xur-H~gXW5O|Va z{kkIV^eCr;@tWb!Pw?k#MJKdXGzkYoVH3lHjpCI6D@HBPii;9&BY)w7_LDLVF56CB z+VGf-PE|tnwWr7f;<0NKoZ4|UiI-!*NEtnD5w!0Zy?!vJ>EA=>o3@e-Z`MTNv1h1m z+ruX!NHUV1d&_#6QQch1i#D&XEvL4jq^WkgILlwpi9esD7+)<*uF-`-Nc*s&sGfk$ zm@%6A#t*W&hH{C+<>GbU?Dm@bE=!3b^lAxKmFiby9pfNFXHo=#$pb^y4%a@t-a$t$KA!{Y3Rkm_1gMIu(tN&o2J)b zm^!(CPw7gO_}`qcS6l9n`&4FvgLaiWw3NSoelV>XKkpGYxM){oA3id=KIp-RUk*A11O@wx}3^LwR1BzIrC8i3bt`0M*E2%-%MnAz`C=W32B) zKylv(L*LiNBpuv{mSLWP`Mndt@#JqoP5c2P9$)LC88-Esf`!dtxo7(C+O#Y7G8IAx z25izcA%=jH{83FrL78)V)GpOuwpk2@DOYS~{61ed6OVcL`PZB?o_r@@Ntmq#dnFK= zTEViiLYZ=W;jsuLnwsD*U7BwB3L%!CdOP?xmVJcw2=!XM?Uv9WuF=!`lEUlXB_IiliN<^!T+RikDNWU0h-r-~!gXh;d;$Cxx z1TjHn#`kAt(ho)zYB`s|gdAKLx)po@ci8t*fW*(UV<0HAf*rRrE) z9?}3nqTm47-Lqi9Yqpk>Jb&w@MZzk{otT`Ro6UZvy0Qu;TlJ}*Q1XwwGJ9eo6N?)C zf~bEbx;C<#9?Ob9F<6r^>i8>JAj17|H#W-%RIfZZzpL*G%klnTkb{4ac8_Mr8IS-A zKwb2fSXiC0Pt(g)5cGosicB6G=&!%p5j*WCR!$O+$>}ATQ!UPzb>EH*{7N(4A0eXm z3hv>8*i|*Z%6r~oguaVGV<_#k=%l4zEmYfi^l4vN2UF=Rsv%ZIl}XcM*4VS!BFKqJ$QHJdh* zt(yj*=15>IY^wW>j~ncbBXyfr?Y7CQ-jrrap{oN&Djmu_ljR!QBkRZgG806Bpp*7< z{GHe1_TG~!T7iR`4`DG+3x4Crp<=7k747>low*h(+TXd%S7t%-3$jP_*e}AukZFMA847*np zfp6IT8ahN7X1PbQC%xhaZ&%R&ofA3+sJFLw$B5Y=4CxFi_|w>U|AwvM-hBT-(jeFY ze|ze!Ij3LbNf9vr{9H1uNYrAMO0JZIiiwY8g{eQK9c)(){Ua+mze$Q_O0lu{p}3x$0tF z|ES!`U`CsG42Nk5)DVX#Ah;kvq zDSH(@+DvzbSie~DLYy!w>eY9Z$O>qJ2CdlD7OtTM+Kl7eSy}XRLx|-ELdVNqHYi-it`+;+i!{``h$`!KRP09N4 zCbslqpY(cNZtqW#b^~Cwj@K`Qn-d|?wwzBZNg*weUe^peQ1WhQ@T z1>evf_hows=&>5)m*N@~w@2{Q`SH9#J-=h}(~A!kpHLgI>CS3wbj`X^?E5{ljl+Y} zs}-H|!(BQnU~j`4sEW|nAT(R9K%gnJoCiYv1$oGmhm+d{=W6sX;)K$MB`*N)?W(F z6||TUANj}DO$MUdvi=eJZ)cX*%vm(k`hQW|h0H0bu!iLQAIT66n8d&WY7r=#$`HWe zkzb=;u2YiT+}bfe@FI0*>PLJ_ll#wOrHo${FDpH1fxqTr#)+Iwh3GB@yMFjR3qoc{ z8VUL$xY`n*Q`)LBXgi+H67&f0bgL7_U1I;fA=-@AEBGx?ew4DYYc@;sGF?M71-_xh zY#`Ae1`m1S^i>B3gNf7#g7c@)aEA{!?G+MB4yDMHYDDyT>?QE;>w9TP=-dr&+$vod zJB)Dd3*_&8+b4UxCSU$}4(YOX@}^Q=cQ4N>aWpP8ES+tpIz;EsmP?~Dh6J9Wa%^xA z{OTZahM&})^7i3Fi|Qco5?#jNp+*x8-|;YkV^`Si|9ziA`)VzYkx`wU-?8Y{6SI4U6|;t#kb(83R~730;o zHGaV?b)3KLn{#Z^5C-$SbtlHDZ8MNjnN9Rk*}~AKaJ?-qQq=Hk060W$IAGL5dbsjf z-WGr0`0ygT?pE5oCB5*T(x!-WFnA-%2DW@h!`4?nbG2R}TQTWv8{iHji|IUJK@qJ$ z`}y#o#hfAV8I9wkX{+*TDnRwMO;&*PG%0~m`Y_C=U{&hX_;lUC>M}JGxbb}Vt169F zdfox+GlImM73?Dz3^Jc;>uXTFJ|QOlU%|D7d#U9}XF_Y9?~>XR`J#(iL#K*Dd-_u* z>Bgg5gto2#!=!RYZ(#nFHir1vm09Kiny?YO+XX(y%~+7fQ)>nO&)#a4DUl|1V1<+K zl299Ee67o$ME+*C+o}>{5thYR1j~+$N2m~UQ;(Q0mm**glqgrRo&!Ig;=`lgv&`~< zUtd>7JFt^Nn3@kvPghK9cb^!$t7r2=?T}Mnb)3H`JM9np0tq#>!G3YGcV(l4)>FY~ z`Bx*1oUYS4x5f5UCxKn|PXwOlUZ&=dewW@&O}xH`>JxVg&8;evcGu;O~k}6?? z4z#v$ie2|aVMSb#H*OqFcaKr7!vKx@HyA&;ktZ)wh8k9D9HIzc^0#c`fod&v9aL{8 zl_f9;lu`_E_&{+C{!~(qGOof4s;^->BdU(?wbs*(me)FJWg-kS>Dv$dYv=T}q?y8C z5Z_USjp#!nqEAG7G@{mzHI`^M1~}1!n-nO{SDiwzzp&vl@dbcE(uxbilayaRcvXzu zTUICIZQ`G>W^Yo{0I?z6En(_O+sjkBrNwgD#&2MjnjdyZR9uvaIAajNLDSL%saNGS zUXy2em|-8N zE~-m!(2R4dDkunjJYKh1O_rQzyjr{B6~|8cA;%E zUw1$&tU(b#c2wnX#RDk^7SQW4?GCZnPRpkppIkYp2nF_UTzk?zDW~x2r^O({o3%uV<6kg zeVi3L0YxR8h*uBT;oVwz`1p({p!M$AqJ+F~wb%|I^ZpHk;tvLCEoM|YK(2XOTqQ|@ zcx7;|Yl9dd1p$LF2?+y=d1d%BMwyv2==5)}APY!%AzUMP`TE~E+9C>oGoX8lxKIcJ z$xjH^1YXtYN39Bj|5hqI(VxyGM?y_0**%PVip}$#A7tpQo_q5)E(L8XQf6vC*+<0xmZZ9W zfG{152bDyL7Zfs%RfVBVNT$_4?%MUmB@vt?h)F>Xfp+9#u?^=iGd^NDpZxDKw3alT zSB}=QkqM3cGyk7A`U^M0-0?ZJ);s!afG%E7@DLqblp~L*IKRK3Xa)2nk6)?<>4W2B zivAl`dQUETU+bDyJod7`!Y&ic)nurp>SJJ!)yX*9MI)@rvX-(bN7op80B3N|zz0A7@MY?Mdtv|$r))3;kT+><)><0*9gVDH$*HwkO3Y~9#R6CJ0`lPI zsdFB&n(5QlW<)Jl|2g*I z&8JHh!hc`f``(iRsNtyBe%8mpMlnrGTbr~^xsgIQI5`sW%ZnzOKqg9x>MOd0>Litac?Fr zLASxK!(Ky_rL>+Zy&`&ctACC|@&^|jo73etzOrqmgWkdFkGHSj8)MTZnawaH%o}9= zhbUS>Jz3&|AsTBf->Si5YyO2Rlz{5$0!ABI(Aw;Pd?Va$^2mV#^qAmoUl|7ZG1EHe zASF@4gy1S?b6!yT&TK2I&I5luLQR9z0E`jLU&m>C#t z5a2Lsp*>6RENzlV&9wigswtlw~YqZOAgpSTf4K6`^D) z%T$z1)|55-GTBKa3Q3~uyUJEi5+anXde3;?_xJvu`D^Cf_qnh0xt8zsy{^wa=L{4W z2ILcU2Ba!Eg=L|`l`!55Fd@mh6dp?RdZb5ko_0oMgkLiJG(>B zK`5AO4p+CGdi9R?P&OlyJOmIExQuHUKZ~U|MJpip+{f<=&`^i+Vrx26a6TQbf83$;VA-C7ixLEe zhDd>s*`*bO87HDulXa0mOlwKd#$gD!4lEHZKb+o7@i}>!+xOE2O5wcb2n_|9N=za7 z%r3PAEUni#^d-hO9B%r}sTE0B2M+O2MRKh;2T9qSP@BpuPhdD)wmec+Dx+|MRo zAvvZwH^8OO>txxP{&X8)FsDqlEqgoYa;pDjUhSPUh7_zJ^xodqb>C;>E+OY{>3yGb zOU2%1zn0=-C9yasFjt6>M4-n`9Chx~MQ88}CNhJH3>y=sz-eT1_Gdh)ZHV^_ew+$i z@NGt*p%5!otn2Q~kq`Uqrf(u5H$_vAHLz0Kx#pzrEkIw-DX*IE7$~3OwLiZ9K%XhU zkdFYO0`Z}9D0?zhVwi^d&1{O_dq4q+GjG0MAmiHl)v>mChw|il+gW`@Q;WdF1GM6z zxNenbf&i1xb2kPqP#=Pzydehu7Ll+>`{-?t{Vh7N>2zTdpw-o$>(8+yPbluFlADpb z-L~2QBfWyHdH%MExgM-KnRRkPbk@k`&HN(|?~aYbpk4B0|CFS$kH?rI^82B~qy4vY zoRo;}>3=!@0K}xx1WWG-Rpoq-s+Bua_-IqohX0s*hj6C|cIw+c0$8OdA!r>>cWW?UQ8E*Zb*kufriVM%` zNb}SC`(7PsMGfEv0%2zoM^@g~^@SNN^L=RWNcG%pazc6EoiudwHH)NZmjiDl;$71E z-~MsDBA~Ta*V>Xlrg1gWJTN}%w0bG`Va)sc{q@nNR}z<4rmLlmp8dgqylr=5Ll8>f zN|8RWdb%YABhY=yoDnh07{pV(Ok{=$5B^Xgo~oFN#1B zvTdM!nZa{(kM?Z~na2CQy{+QFcpe83e`>CYo6+WB8 z##vE@mm&gU3{8}--)LS%Hu?wC9l8~84~EF<#x(w(i!=7{AeC^ob*3ayiz4_2&9~pw z0|#T|(E9_j%8%Uz?U5Yro=TBQV)MFE`H#EzzQ5E(gAH{I+!-gSDs&UZCB=1k{?ws~5*_|F+?!o(+&U3)vLNY20ghMdjV z1q{4aM%!LK%r5s&Ndq)y@VqWR3fU>ToD%F+Zga0WFliaPkcYR;>+I}98IYz45W9rtJy1EGVGnknne+y1iv=AxX*@beb! z9aFdSOw_y0CV`)>?Dftnp8FK-lqtA+qn`Lhd0VYkH{UASZNOoT4A^b)7Dt~ptZ&k6 z>rI*K(w$u(DIWA+!OCjPuoirMvfuao%VY{?oVct!Z=+@_FHU7xaY?mStCXuWlP$qA zrA^gmOHcs-$V?_a1Vt@|M<4cC`%K93F5@i;8#(h{3-R;E9;)TnjB)u&6hA2CHB-VD zCb~ZM9kbJA`YC00qnhD7qCI{hy(Gw3y}*I|c`=JwvQ;hP5l=~9;%M{h#+)MkyeQ4u z;`oVE72K^6#uInawvRB!tmksf3l1QC6J|630W&@nUr!pF-0{FX>p1$+iu{7EOBui9 zJCy;eM&*vAO8Q*O`XnDzuqx=6z`c<6?HDfyeS6@<3;P|7fQk@LyAL-B!oZ%vBv;V) zZSF*7gsr-b=sF8LGxmKaefdR6lQP^!#FkYqj^_2?q5{JXpGf?xO%=06;e_ZUn`0>F zvBigq>LC^?0MCZJ4f*#Wy$H>A4Ii_EOaG%Sp!UaXxv=nes&$V)lk#W zsmaRuQ2o^UlC@V8u}o-PST3&whZtrlQCC`HhtNcLw0hda@@y^F&X-@x6c6#yC5il{ zk4QR%a1Zy#x!HY)4G0_m^_rCv%|}kj4EZ6#i=xK|`P`+ii`Ir{)Ny{(!I}exqVc8r z0?7TRpy-L{w#fIU3tc`xx%ot2R3=EfUH-v__$(UKtLC0_uI1eHIfThVuT1ZTloCXD zAnt7&5Gu+BR1{rLh6b_(XB=Mpap?mp|{(>yWyg<30F>xXi#`Qrl>&o$|sPfu-L z5CF+Bd-V-s>~ipT=i>QsW%#ZsmKTlTq0bSwT~?-hvYusybt@rnV-2B}G)7)%FV|)x`%YI^;ciZbuSNw{ZahQ2ihU4Bo->c>Q-;M-I}IP35wlU`6xT;X z{roRpx6my@p%^P#QPazimAh~_pK11bPx$X78PC2!HDSQ@)Dir6;g{_n`#PsN$YF6- zXQ9VtG?z@GaCA0&JJX^6D}Hue*w(9xIIDQFg<4mtb)=!Jl7Tj;`rfgQcIH5{ zM(UL0kFd}a>(^-AnD~ey@AHZxU)zXIt$sY*rQG|w#q7iG5O7EOz0rKqtPi>*fI6-) zt7-x9o)8LCXP4Z0@P?4B+T->>)Ggui_~er_`KL$I>@Mqo)~RGH9Yf19fvq1w`Hx3c6l>6`f5szHKXP66?7mnDQ>DB8Zs<@0z{2)@eKCc@^@&Tm-} zU5CxU;@``!N{2#t&|F+#(+4}!+*oU?&h|g`;%Qd1fUVJf z_b22pob0G@myr@Vxuy$m|9(BWxc2K~6Os9;i%LORt4U{9&to_>VebvO{b89l;%hW< zC!_51yX<%d1SfA6wt)o!58jL@h_Vm4D`!35`e!?CW8?RF-iC+WRpPx-T%y(*o|49$QP?+`WPD%+qb1}5WxIxYRI=C~O@GGL9{_j-AD4NkT z`0pDDZeT1m$L09HMwy`N7yl&y-9ZBuQ@XnV|F>AM7GKoASCR^nmP=Hk&~D%2KcYb= uXm|Dh5rS0$p!0@QeQ38S_kRnT`hz$qwWy%F|C9j}_!t?O>6hy|T>Br { + if (item.attributes.eventDecoded.topic0 === '0xaa2032c3a05e7293eec92b9f41cfe70d5d753b29790a3f2cdeace3d6f5c9b749') { + tokens[item.attributes.eventDecoded.inputs[1].value] = { + 'writer': item.attributes.eventDecoded.inputs[0].value, + 'strike': parseInt(item.attributes.eventDecoded.inputs[2].value, 16), + 'expiry': parseInt(item.attributes.eventDecoded.inputs[3].value, 16), + 'rfp': item.attributes.eventDecoded.inputs[4].value.slice(-1) === '0' ? false:true, + 'txurl': item.relationships.transaction.links.related, + 'onAuction': false + } + } + }) + // given the transaction creation URLs, find the oracle address specified for each piggy and scrape it for (piggy) API data + Object.keys(tokens).map(async (item) => { + let urlToFetch = tokens[item]['txurl'] + let oaddress = await this.scrapePiggyTx(urlToFetch) + let odata = await this.fetchOracleData(oaddress) + tokens[item]['oracleAddress'] = oaddress + tokens[item]['oracleData'] = odata + }) + + this.setState({ + pdict: tokens + }) + + // check for auction events and get auction status + ltenjson.data.map((item) => { + if (item.attributes.eventDecoded.topic0 === '0x88a665277b4dcf78a761227e836d2b9c98169b818abf80cb4297114cb71a019f') { + this.state.pdict[item.attributes.eventDecoded.inputs[1].value]['onAuction'] = true + } + }) + + } //end fetch block + + async scrapePiggyTx(txurl) { + // map over txurl values to look up piggy creation transactions + let ptx = await fetch(txurl) + let ptxjson = await ptx.json() + // console.log("something", ptxjson) + let oracleAddress = ptxjson.data.attributes.msgPayload.inputs[2].value.slice(24) + return oracleAddress + } + + async fetchOracleData(oaddress) { + console.log(oaddress) + let otx = await fetch('https://api.goerli.aleth.io/v1/contracts/' + oaddress) + let otxjson = await otx.json() + + let returndata = {} + if (otxjson.data.attributes.constructorArgs[17] !== undefined) { + returndata['underlying'] = this.hex2a(otxjson.data.attributes.constructorArgs[10]) + returndata['datasource'] = this.hex2a(otxjson.data.attributes.constructorArgs[8]) + returndata['api'] = this.hex2a(otxjson.data.attributes.constructorArgs[14]) + + this.hex2a(otxjson.data.attributes.constructorArgs[15]) + + this.hex2a(otxjson.data.attributes.constructorArgs[16]) + + this.hex2a(otxjson.data.attributes.constructorArgs[17]) + } else if (otxjson.data.attributes.constructorArgs[16] !== undefined) { + returndata['underlying'] = this.hex2a(otxjson.data.attributes.constructorArgs[10]) + returndata['datasource'] = this.hex2a(otxjson.data.attributes.constructorArgs[8]) + returndata['api'] = this.hex2a(otxjson.data.attributes.constructorArgs[14]) + + this.hex2a(otxjson.data.attributes.constructorArgs[15]) + + this.hex2a(otxjson.data.attributes.constructorArgs[16]) + } + + return returndata + } + + fetchPiggiesOld() { + let address = '0' + + fetch(endpoint) + .then(result => { + return result.json() + }) + .then(jsonResult => { + jsonResult.data.map((item, i) => { + if (item.attributes.eventDecoded.topic0 === '0xaa2032c3a05e7293eec92b9f41cfe70d5d753b29790a3f2cdeace3d6f5c9b749') { + + fetch(item.relationships.transaction.links.related) + .then(result => { + return result.json() + }) + .then(result => { + address = result.data.attributes.msgPayload.inputs[2].value.slice(24) + let oracleEndpoint = 'https://api.goerli.aleth.io/v1/contracts/' + address + + fetch(oracleEndpoint) + .then(result => { + return result.json() + }) + .then(result => { + let oracleArray = this.state.oracles + oracleArray.push( + { + piggyId: this.groomID(item.attributes.eventDecoded.inputs[1].value), + address: address, + underlying: this.hex2a(result.data.attributes.constructorArgs[10]), + url: this.hex2a(result.data.attributes.constructorArgs[8]), + } + ) + this.setState({ + oracles: oracleArray + }) + }) + + }) + + let piggyArray = this.state.piggies + piggyArray.push( + { + index: i, + id: item.id, + topic: item.attributes.eventDecoded.topic0, + writer: item.attributes.eventDecoded.inputs[0].value, + piggyId: item.attributes.eventDecoded.inputs[1].value, + strike: parseInt(item.attributes.eventDecoded.inputs[2].value, 16), + expiry: parseInt(item.attributes.eventDecoded.inputs[3].value, 16), + rfp: item.attributes.eventDecoded.inputs[4].value, + txUrl: item.relationships.transaction.links.related + } + ) + this.setState({ + piggies: piggyArray + }) + + } //end of log check for create event topic0 + + if (item.attributes.eventDecoded.topic0 === '0x88a665277b4dcf78a761227e836d2b9c98169b818abf80cb4297114cb71a019f') { + let auctionArray = this.state.auctions + auctionArray.push( + { + index: i, + id: item.id, + topic: item.attributes.eventDecoded.topic0, + piggyId: this.groomID(item.attributes.eventDecoded.inputs[1].value) + } + ) + this.setState({ + auctions: auctionArray + }) + } //end of log check for auction event topic0 + + return (null) //return for the map + + }) + }) + } + + componentDidMount() { + this.fetchPiggies() + + } + + componentDidUpdate(prevProps, prevState) { + + } + + componentWillUnmount() { + + } + + render() { + //console.log(this.state.pdict) + let tokenKeys = Object.keys(this.state.pdict) + let tokens + let piggy = '', asset = '', strike = '', expiry = '', url = '' + let onAuction = false + if (tokenKeys.length > 0) { + tokens = tokenKeys.map((item) => { + if (this.state.pdict[item].oracleData !== undefined) { + piggy = item + asset = this.state.pdict[item].oracleData.underlying + url = this.state.pdict[item].oracleData.datasource + strike = this.state.pdict[item].strike + expiry = this.state.pdict[item].expiry + onAuction = this.state.pdict[item].onAuction + } + if (this.props.onlyOnAuction && onAuction) { + return + } else if (!this.props.onlyOnAuction) { + return + } + }) + } + //console.log(this.state.pdict) + return ( +
+ {tokens} +
+ ) + } +} + +FetchData.contextTypes = { + drizzle: PropTypes.object +} + +const mapStateToProps = state => { + return { + accounts: state.accounts, + drizzleStatus: state.drizzleStatus, + SmartPiggies: state.contracts.SmartPiggies + } +} + +export default drizzleConnect(FetchData, mapStateToProps); diff --git a/app/src/components/Home/index.js b/app/src/components/Home/index.js new file mode 100644 index 0000000..6b74f58 --- /dev/null +++ b/app/src/components/Home/index.js @@ -0,0 +1,230 @@ +import React, { Component } from 'react' +import { drizzleConnect } from 'drizzle-react' +import { withRouter } from 'react-router-dom' +import PropTypes from 'prop-types' + +import AppBar from '@material-ui/core/AppBar' +import Card from '@material-ui/core/Card' +import FormControlLabel from '@material-ui/core/FormControlLabel' +import Switch from '@material-ui/core/Switch' +import BottomNavigation from '@material-ui/core/BottomNavigation' +import BottomNavigationAction from '@material-ui/core/BottomNavigationAction' +import Typography from '@material-ui/core/Typography' +import Divider from '@material-ui/core/Divider' + +//import components +import FetchData from "../FetchData" + + +import '../../App.js' + +const appBar = { + backgroundColor: 'default', + //height: 50, + display: 'block', + padding: 10, +} + +const toggle = { + paddingLeft: 10, +} + +// current network client is connected to +let activeNetwork + +class Home extends Component { + constructor(props, context) { + super(props) + + this.contracts = context.drizzle.contracts + this.drizzle = context.drizzle + + this.state = { + spContractAddress: '', + activeAccount: '', + blockNumber: 0, + network: 0, + onlyOnAuction: false, + //datakeys + dataKeyGetOwnedPiggies: '', + value: 0, + } + + } + + componentDidMount() { + // If Drizzle is initialized (and therefore web3, accounts and contracts), continue. + if (this.props.drizzleStatus.initialized) { + + // Declare this call to be cached and synchronized. We'll receive the store key for recall. + let globalDataKeyGetOwnedPiggies = this.contracts.SmartPiggies.methods['getOwnedPiggies'].cacheCall(this.props.accounts[0]) + + this.setState({ + dataKeyGetOwnedPiggies: globalDataKeyGetOwnedPiggies, + //dataKeyGetDetails: globalDataKeyGetDetails, + network: this.drizzle.web3.givenProvider.networkVersion + }) + + switch (this.state.network) { + case '1': + activeNetwork = 'Ethereum' + break + case '3': + activeNetwork = 'Ropsten' + break + case '4': + activeNetwork = 'Rinkeby' + break + case '5': + activeNetwork = 'Goerli' + break + default: + activeNetwork = 'unknown' + } + + //set block number on load + this.drizzle.web3.eth.getBlockNumber() + .then(result => { + this.setState({ + blockNumber: result + }) + }) + } + + this.setState({ + spContractAddress: this.contracts.SmartPiggies.address, + activeAccount: this.props.accounts[0] + }) + + //update current block number every 10 seconds + this.interval = setInterval(() => { + this.drizzle.web3.eth.getBlockNumber() + .then(result => { + this.setState({ + blockNumber: result + }) + }) + }, 10000) + } + + componentDidUpdate(prevProps, prevState) { + + //Update network + if (this.state.network !== prevState.network) { + switch (this.state.network) { + case '1': + activeNetwork = 'Ethereum' + break + case '3': + activeNetwork = 'Ropsten' + break + case '4': + activeNetwork = 'Rinkeby' + break + case '5': + activeNetwork = 'Goerli' + break + default: + activeNetwork = 'unknown' + } + } + } + + componentWillUnmount() { + clearInterval(this.interval) + } + + groomAddress(address) { + let groomed + if (address !== '0x0000000000000000000000000000000000000000') { + groomed = address.slice(0, 6) + groomed = groomed + "...." + address.slice(-4) + } + return groomed + } + + handleChange = name => event => { + this.setState({ [name]: event.target.checked }) + } + + handleOpenLink = (event, value) => { + window.open(value, '_blank') + } + + render() { + //console.log(this.state.piggyDetailMap) + let groomedAddress = this.groomAddress(this.state.activeAccount) + + return ( +
+ + + + + + + + + + + + +
Contract: {this.state.spContractAddress}Block: {this.state.blockNumber}
User: {groomedAddress}Network: {activeNetwork}
+
+
+
+ + Welcome to Amerigo! + + Amerigo is an explorer for SmartPiggies. View available options below, and if you find one you like, buy it! + +
+

+ + + } + label='Show Only Piggies on Auction' + /> + + +
+
+ + + + + +
+
+ ) + } +} + +Home.contextTypes = { + drizzle: PropTypes.object +} + +const mapStateToProps = state => { + return { + accounts: state.accounts, + drizzleStatus: state.drizzleStatus, + SmartPiggies: state.contracts.SmartPiggies + } +} + +export default withRouter(drizzleConnect(Home, mapStateToProps)) diff --git a/app/src/components/ListItems/AddressItems/index.js b/app/src/components/ListItems/AddressItems/index.js new file mode 100644 index 0000000..d35f259 --- /dev/null +++ b/app/src/components/ListItems/AddressItems/index.js @@ -0,0 +1,158 @@ +/** +This application is for use with SmartPiggies. + +SmartPiggies is an open source standard for +a free peer to peer global derivatives market. + +Copyright (C) 2019, Arief, Algya, Lee + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +**/ +import React, { Component } from 'react' +import { drizzleConnect } from 'drizzle-react' +import PropTypes from 'prop-types' + +import Table from '@material-ui/core/Table'; +import TableBody from '@material-ui/core/TableBody'; +import TableCell from '@material-ui/core/TableCell'; +import TableRow from '@material-ui/core/TableRow'; + +let addressArray = [ + "Writer", + "Holder", + "Collateral Contract", + "Premium Contract", + "Oracle Resolver Now", + "Oracle Resolver at Expiry", +] + +class AddressItem extends Component { + constructor(props, context) { + super(props) + + this.contracts = context.drizzle.contracts + + this.state = { + writer: '', + holder: '', + collateral: '', + premium: '', + resolverNow: '', + resolverAtExpiry: '' + } + } + + componentDidMount() { + if (this.props.item.length === 6) { + this.setState({ + writer: this.props.item[0], + holder: this.props.item[1], + collateral: this.props.item[2], + premium: this.props.item[3], + resolverNow: this.props.item[4], + resolverAtExpiry: this.props.item[5] + }) + } + } + + componentDidUpdate(prevProps) { + if (this.props.item !== prevProps.item) { + if (this.props.item.length === 6) { + this.setState({ + writer: this.props.item[0], + holder: this.props.item[1], + collateral: this.props.item[2], + premium: this.props.item[3], + resolverNow: this.props.item[4], + resolverAtExpiry: this.props.item[5] + }) + } + } + } + + groomAddress(address) { + let groomed + if (address !== '0x0000000000000000000000000000000000000000') { + groomed = address.slice(0, 6) + groomed = groomed + "...." + address.slice(-4) + } + return groomed + } + + render() { + + return ( +
+ + + + + {addressArray[0]} + + + {this.groomAddress(this.state.writer)} + + + + + {addressArray[1]} + + + {this.groomAddress(this.state.holder)} + + + + + {addressArray[2]} + + + {this.groomAddress(this.state.collateral)} + + + + + {addressArray[3]} + + + {this.groomAddress(this.state.premium)} + + + + + {addressArray[4]} + + + {this.groomAddress(this.state.resolverNow)} + + + + + {addressArray[5]} + + + {this.groomAddress(this.state.resolverAtExpiry)} + + + +
+
+ ) + } +} + +AddressItem.contextTypes = { + drizzle: PropTypes.object +} + +export default drizzleConnect(AddressItem) diff --git a/app/src/components/ListItems/AuctionItems/index.js b/app/src/components/ListItems/AuctionItems/index.js new file mode 100644 index 0000000..5e6f24d --- /dev/null +++ b/app/src/components/ListItems/AuctionItems/index.js @@ -0,0 +1,177 @@ +/** +This application is for use with SmartPiggies. + +SmartPiggies is an open source standard for +a free peer to peer global derivatives market. + +Copyright (C) 2019, Arief, Algya, Lee + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +**/ +import React, { Component } from 'react' +import { drizzleConnect } from 'drizzle-react' +import PropTypes from 'prop-types' + +import Table from '@material-ui/core/Table'; +import TableBody from '@material-ui/core/TableBody'; +import TableCell from '@material-ui/core/TableCell'; +import TableRow from '@material-ui/core/TableRow'; +import Button from '@material-ui/core/Button' + +import web3 from 'web3' + +let uintArray = [ + "Start Block", + "Expiry Block", + "Start Amount", + "Reserve Amount", + "Time Step", + "Price Step", + "Active Auction" +] + +class AuctionItems extends Component { + constructor(props, context) { + super(props) + + this.contracts = context.drizzle.contracts + + this.state = { + startBlock: '', + expiryBlock: '', + startPrice: '', + reservePrice: '', + timeStep: '', + priceStep: '', + auctionActive: '' + } + } + + componentDidMount() { + if (this.props.item.length === 8) { + this.setState({ + startBlock: this.props.item[0], + expiryBlock: this.props.item[1], + startPrice: this.props.item[2], + reservePrice: this.props.item[3], + timeStep: this.props.item[4], + priceStep: this.props.item[5], + auctionActive: this.props.item[6] + }) + } + } + + componentDidUpdate(prevProps) { + if (this.props.item !== prevProps.item) { + if (this.props.item.length === 8) { + this.setState({ + startBlock: this.props.item[0], + expiryBlock: this.props.item[1], + startPrice: this.props.item[2], + reservePrice: this.props.item[3], + timeStep: this.props.item[4], + priceStep: this.props.item[5], + auctionActive: this.props.item[6] + }) + } + } + } + + handleSatisfy = () => { + console.log("do something") + } + + groomPrice(price) { + return web3.utils.fromWei(price, "ether") + " TKN" + } + + render() { + + return ( +
+ + + + + {uintArray[0]} + + + {this.state.startBlock} + + + + + {uintArray[1]} + + + {this.state.expiryBlock} + + + + + {uintArray[2]} + + + {this.groomPrice(this.state.startPrice)} + + + + + {uintArray[3]} + + + {this.groomPrice(this.state.reservePrice)} + + + + + {uintArray[4]} + + + {this.state.timeStep} + + + + + {uintArray[5]} + + + {this.state.priceStep} + + + + + {uintArray[6]} + + + {this.state.auctionActive.toString()} + + + +
+

+ { this.state.auctionActive + ? + : null + } +
+ ) + } +} + +AuctionItems.contextTypes = { + drizzle: PropTypes.object +} + +export default drizzleConnect(AuctionItems) diff --git a/app/src/components/ListItems/BoolItems/index.js b/app/src/components/ListItems/BoolItems/index.js new file mode 100644 index 0000000..c033668 --- /dev/null +++ b/app/src/components/ListItems/BoolItems/index.js @@ -0,0 +1,125 @@ +/** +This application is for use with SmartPiggies. + +SmartPiggies is an open source standard for +a free peer to peer global derivatives market. + +Copyright (C) 2019, Arief, Algya, Lee + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +**/ +import React, { Component } from 'react' +import { drizzleConnect } from 'drizzle-react' +import PropTypes from 'prop-types' + +import Table from '@material-ui/core/Table'; +import TableBody from '@material-ui/core/TableBody'; +import TableCell from '@material-ui/core/TableCell'; +import TableRow from '@material-ui/core/TableRow'; + +let boolArray = [ + "RFP", + "Style", + "Direction", + "Cleared" +] + +class BoolItem extends Component { + constructor(props, context) { + super(props) + + this.contracts = context.drizzle.contracts + + this.state = { + rfp: '', + style: '', + direction: '', + cleared: '' + } + } + + componentDidMount() { + if (this.props.item.length === 4) { + this.setState({ + rfp: (this.props.item[0] ? 'requested' : 'not requested'), + style: (this.props.item[1] ? 'euro' : 'american' ), + direction: (this.props.item[2] ? 'put' : 'call'), + cleared: (this.props.item[3] ? 'yes' : 'no') + }) + } + } + + componentDidUpdate(prevProps) { + if (this.props.item !== prevProps.item) { + if (this.props.item.length === 4) { + this.setState({ + rfp: (this.props.item[0] ? 'requested' : 'no requested'), + style: (this.props.item[1] ? 'euro' : 'american' ), + direction: (this.props.item[2] ? 'put' : 'call'), + cleared: (this.props.item[3] ? 'yes' : 'no') + }) + } + } + } + + render() { + + return ( +
+ + + + + {boolArray[0]} + + + {this.state.rfp} + + + + + {boolArray[1]} + + + {this.state.style} + + + + + {boolArray[2]} + + + {this.state.direction} + + + + + {boolArray[3]} + + + {this.state.cleared} + + + +
+
+ ) + } +} + +BoolItem.contextTypes = { + drizzle: PropTypes.object +} + +export default drizzleConnect(BoolItem) diff --git a/app/src/components/ListItems/ListOwnedTokens/index.js b/app/src/components/ListItems/ListOwnedTokens/index.js new file mode 100644 index 0000000..59a1352 --- /dev/null +++ b/app/src/components/ListItems/ListOwnedTokens/index.js @@ -0,0 +1,63 @@ +/** +This application is for use with SmartPiggies. + +SmartPiggies is an open source standard for +a free peer to peer global derivatives market. + +Copyright (C) 2019, Arief, Algya, Lee + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +**/ +import React, { Component } from 'react' +import { drizzleConnect } from 'drizzle-react' +import PropTypes from 'prop-types' + +import Table from '@material-ui/core/Table'; +import TableBody from '@material-ui/core/TableBody'; +import TableCell from '@material-ui/core/TableCell'; +import TableRow from '@material-ui/core/TableRow'; + +class ListOwnedTokens extends Component { + constructor(props, context) { + super(props) + + this.contracts = context.drizzle.contracts + + } + + render() { + return ( +
+ + + + + {this.props.index+1} + + + tokenId: {this.props.item.toString()} + + + +
+
+ ) + } +} + +ListOwnedTokens.contextTypes = { + drizzle: PropTypes.object +} + +export default drizzleConnect(ListOwnedTokens) diff --git a/app/src/components/ListItems/UintItems/index.js b/app/src/components/ListItems/UintItems/index.js new file mode 100644 index 0000000..719a692 --- /dev/null +++ b/app/src/components/ListItems/UintItems/index.js @@ -0,0 +1,166 @@ +/** +This application is for use with SmartPiggies. + +SmartPiggies is an open source standard for +a free peer to peer global derivatives market. + +Copyright (C) 2019, Arief, Algya, Lee + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +**/ +import React, { Component } from 'react' +import { drizzleConnect } from 'drizzle-react' +import PropTypes from 'prop-types' +import web3 from 'web3' + +import Table from '@material-ui/core/Table'; +import TableBody from '@material-ui/core/TableBody'; +import TableCell from '@material-ui/core/TableCell'; +import TableRow from '@material-ui/core/TableRow'; + +let uintArray = [ + "Collateral Amount", + "Lot Size", + "Strike Price", + "Expiry", + "SettlementPrice", + "Requested Collateral", + "Collateral Decimals" +] + +class UintItems extends Component { + constructor(props, context) { + super(props) + + this.contracts = context.drizzle.contracts + + this.state = { + collateral: '', + lotSize: '', + strikePrice: '', + expiry: '', + settlementPrice: '', + reqCollateral: '', + collateralDecimals: '' + } + } + + componentDidMount() { + if (this.props.item.length === 7) { + this.setState({ + collateral: this.props.item[0], + lotSize: this.props.item[1], + strikePrice: this.props.item[2], + expiry: this.props.item[3], + settlementPrice: this.props.item[4], + reqCollateral: this.props.item[5], + collateralDecimals: this.props.item[6] + }) + } + } + + componentDidUpdate(prevProps) { + if (this.props.item !== prevProps.item) { + if (this.props.item.length === 7) { + this.setState({ + collateral: this.props.item[0], + lotSize: this.props.item[1], + strikePrice: this.props.item[2], + expiry: this.props.item[3], + settlementPrice: this.props.item[4], + reqCollateral: this.props.item[5], + collateralDecimals: this.props.item[6] + }) + } + } + } + + groomPrice(price) { + return web3.utils.fromWei(price, "ether") + " TKN" + } + + render() { + + return ( +
+ + + + + {uintArray[0]} + + + {this.groomPrice(this.state.collateral)} + + + + + {uintArray[1]} + + + {this.state.lotSize} + + + + + {uintArray[2]} + + + {this.state.strikePrice} + + + + + {uintArray[3]} + + + {this.state.expiry} + + + + + {uintArray[4]} + + + {this.state.settlementPrice} + + + + + {uintArray[5]} + + + {this.state.reqCollateral} + + + + + {uintArray[6]} + + + {this.state.collateralDecimals} + + + +
+
+ ) + } +} + +UintItems.contextTypes = { + drizzle: PropTypes.object +} + +export default drizzleConnect(UintItems) diff --git a/app/src/components/LoadingContainer/index.js b/app/src/components/LoadingContainer/index.js new file mode 100644 index 0000000..b2f3a5e --- /dev/null +++ b/app/src/components/LoadingContainer/index.js @@ -0,0 +1,83 @@ +import { drizzleConnect } from 'drizzle-react' +import React, { Children, Component } from 'react' +import PropTypes from 'prop-types' + +import logo from '../../Assets/Logo/logo.png' +/* + * Create component. + */ + +class LoadingContainer extends Component { + render() { + if (this.props.web3.status === 'failed') + { + if (this.props.errorComp) { + return this.props.errorComp + } + + return( +
+
+ SmartPiggies-logo +

OOPS!

+

This browser has no connection to the Ethereum network.

+

Please use the Chrome/FireFox extension MetaMask, or dedicated Ethereum browsers Mist or Parity.

+

Amerigo, the SmartPiggies explorer is currently running on the Goerli network.

+
+
+ ) + } + + if (this.props.web3.status === 'initialized' && Object.keys(this.props.accounts).length === 0) + { + return( +
+
+ SmartPiggies-logo +

ARRG!

+

We can't find any Ethereum accounts!

+

Please check and make sure Metamask or your browser are pointed at the correct network and your account is unlocked.

+

Amerigo, the SmartPiggies explorer is currently running on the Goerli network.

+
+
+ ) + } + + if (this.props.drizzleStatus.initialized) + { + return Children.only(this.props.children) + } + + if (this.props.loadingComp) { + return this.props.loadingComp + } + + return( +
+ SmartPiggies-logo +
+

Loading SmartPiggies

+

Loading dapp...

+
+
+ ) + } +} + +LoadingContainer.contextTypes = { + drizzle: PropTypes.object +} + +/* + * Export connected component. + */ + +const mapStateToProps = state => { + return { + accounts: state.accounts, + drizzleStatus: state.drizzleStatus, + web3: state.web3 + } +} + +export default drizzleConnect(LoadingContainer, mapStateToProps) diff --git a/app/src/components/PiggyToken/index.js b/app/src/components/PiggyToken/index.js new file mode 100644 index 0000000..498ab92 --- /dev/null +++ b/app/src/components/PiggyToken/index.js @@ -0,0 +1,167 @@ +import React, { Component } from "react" +import { drizzleConnect } from 'drizzle-react' +import PropTypes from 'prop-types' + +//components +import ExpansionPanel from '@material-ui/core/ExpansionPanel' +import ExpansionPanelSummary from '@material-ui/core/ExpansionPanelSummary' +import ExpansionPanelDetails from '@material-ui/core/ExpansionPanelDetails' +import Divider from '@material-ui/core/Divider' +import Grid from '@material-ui/core/Grid' + +import AddressItems from "../ListItems/AddressItems" +import AuctionItems from "../ListItems/AuctionItems" +import UintItems from "../ListItems/UintItems" +import BoolItems from "../ListItems/BoolItems" + +import web3 from 'web3' + +const blockDays = web3.utils.toBN(5760) +const blockHours = web3.utils.toBN(240) // 4 blocks per minute * 60 minutes per hour + +let addressValues, uintValues, boolValues, auctionValues + +let bkgdColor = { + backgroundColor: '#FFCBCB' +} + +class PiggyToken extends Component { + constructor(props, context) { + super(props) + + this.contracts = context.drizzle.contracts + this.drizzle = context.drizzle + + this.handleExpand = this.handleExpand.bind(this) + + this.state = { + dataKey: '0', + } + } + + componentDidMount() { + + } + + componentDidUpdate(prevProps, prevState) { + + } + + componentWillUnmount() { + + } + + groomID(id) { + return id.slice(id.lastIndexOf("0")+1) + } + + groomPrice(price) { + let str = price.toString() + return `$` + str.slice(0, str.length-2) + `.` + str.slice(-2) + } + + groomBlocks(blocks) { + let expiry = web3.utils.toBN(blocks) + let currentBlock = web3.utils.toBN(this.props.block) + + let blockDelta = expiry.sub(currentBlock) + if (blockDelta.isNeg()) { + return "expired" + } else if (blockDelta.gte(blockDays)) { + let days = blockDelta.div(blockDays) + let hours = days.mul(blockDays).sub(blockDelta).abs().div(blockHours) + return days.toString() + `d:` + hours.toString() + `hrs` + } else if (blockDelta.lt(blockDays) && blockDelta.gte(blockHours)) { + let hours = (blockDays).sub(blockDelta).div(blockHours) + return `0d:` + hours.toString() + `hrs` + } else if (blockDelta.gt(web3.utils.toBN('0')) && blockDelta.lt(blockHours)) { + return `<1hr` + } else if (blockDelta.isZero()) { + return `expiring now` + } + return 'no data' + } + + handleExpand = (evt, expanded) => { + + if (expanded) { + let piggyId = this.groomID(this.props.piggy) + this.contracts.SmartPiggies.methods.getDetails(piggyId).call() + .then(result => { + if (result.length === 3) { + addressValues = + uintValues = + boolValues = + } + }) + this.contracts.SmartPiggies.methods.getAuctionDetails(piggyId).call() + .then(result => { + if (result.length === 8) { + auctionValues = + } + }) + } + + } + + render() { + //console.log(this.state.piggyDetailMap) + //let groomedId = this.groomID(this.props.piggy) + //console.log(this.props.SmartPiggies.getDetails[this.state.dataKey]) + //console.log(this.state.dataKey) + return ( +
+ + + + + piggy: {this.groomID(this.props.piggy)} + + + + Underlying: {this.props.asset} + + + + Strike: {this.groomPrice(this.props.strike)} + + + + Expiry: {this.groomBlocks(this.props.expiry)} + + + + URL: {this.props.url} + + + + On Auction: {this.props.auction.toString()} + + + + + {addressValues} + {uintValues} + {boolValues} + {auctionValues} + + + +
+ ) + } +} + +PiggyToken.contextTypes = { + drizzle: PropTypes.object +} + +const mapStateToProps = state => { + return { + accounts: state.accounts, + drizzleStatus: state.drizzleStatus, + SmartPiggies: state.contracts.SmartPiggies + } +} + +export default drizzleConnect(PiggyToken, mapStateToProps); diff --git a/app/src/contracts/ERC165.json b/app/src/contracts/ERC165.json new file mode 100644 index 0000000..b2c33a5 --- /dev/null +++ b/app/src/contracts/ERC165.json @@ -0,0 +1,1287 @@ +{ + "contractName": "ERC165", + "abi": [ + { + "inputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "constant": true, + "inputs": [ + { + "name": "interfaceId", + "type": "bytes4" + } + ], + "name": "supportsInterface", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "sourceMap": "", + "deployedSourceMap": "", + "source": "pragma solidity ^0.5.0;\n\nimport \"./IERC165.sol\";\n\n/**\n * @title ERC165\n * @author Matt Condon (@shrugs)\n * @dev Implements ERC165 using a lookup table.\n */\ncontract ERC165 is IERC165 {\n bytes4 private constant _InterfaceId_ERC165 = 0x01ffc9a7;\n /**\n * 0x01ffc9a7 ===\n * bytes4(keccak256('supportsInterface(bytes4)'))\n */\n\n /**\n * @dev a mapping of interface id to whether or not it's supported\n */\n mapping(bytes4 => bool) private _supportedInterfaces;\n\n /**\n * @dev A contract implementing SupportsInterfaceWithLookup\n * implement ERC165 itself\n */\n constructor () internal {\n _registerInterface(_InterfaceId_ERC165);\n }\n\n /**\n * @dev implement supportsInterface(bytes4) using a lookup table\n */\n function supportsInterface(bytes4 interfaceId) external view returns (bool) {\n return _supportedInterfaces[interfaceId];\n }\n\n /**\n * @dev internal method for registering an interface\n */\n function _registerInterface(bytes4 interfaceId) internal {\n require(interfaceId != 0xffffffff);\n _supportedInterfaces[interfaceId] = true;\n }\n}\n", + "sourcePath": "/home/vagrant/DAPPS/smartpiggiesGithub/amerigo/explorer/contracts/ERC165.sol", + "ast": { + "absolutePath": "/home/vagrant/DAPPS/smartpiggiesGithub/amerigo/explorer/contracts/ERC165.sol", + "exportedSymbols": { + "ERC165": [ + 50 + ] + }, + "id": 51, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 1, + "literals": [ + "solidity", + "^", + "0.5", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "0:23:0" + }, + { + "absolutePath": "/home/vagrant/DAPPS/smartpiggiesGithub/amerigo/explorer/contracts/IERC165.sol", + "file": "./IERC165.sol", + "id": 2, + "nodeType": "ImportDirective", + "scope": 51, + "sourceUnit": 61, + "src": "25:23:0", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 3, + "name": "IERC165", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 60, + "src": "175:7:0", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC165_$60", + "typeString": "contract IERC165" + } + }, + "id": 4, + "nodeType": "InheritanceSpecifier", + "src": "175:7:0" + } + ], + "contractDependencies": [ + 60 + ], + "contractKind": "contract", + "documentation": "@title ERC165\n@author Matt Condon (@shrugs)\n@dev Implements ERC165 using a lookup table.", + "fullyImplemented": true, + "id": 50, + "linearizedBaseContracts": [ + 50, + 60 + ], + "name": "ERC165", + "nodeType": "ContractDefinition", + "nodes": [ + { + "constant": true, + "id": 7, + "name": "_InterfaceId_ERC165", + "nodeType": "VariableDeclaration", + "scope": 50, + "src": "189:56:0", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "typeName": { + "id": 5, + "name": "bytes4", + "nodeType": "ElementaryTypeName", + "src": "189:6:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "value": { + "argumentTypes": null, + "hexValue": "30783031666663396137", + "id": 6, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "235:10:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_33540519_by_1", + "typeString": "int_const 33540519" + }, + "value": "0x01ffc9a7" + }, + "visibility": "private" + }, + { + "constant": false, + "id": 11, + "name": "_supportedInterfaces", + "nodeType": "VariableDeclaration", + "scope": 50, + "src": "435:52:0", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes4_$_t_bool_$", + "typeString": "mapping(bytes4 => bool)" + }, + "typeName": { + "id": 10, + "keyType": { + "id": 8, + "name": "bytes4", + "nodeType": "ElementaryTypeName", + "src": "443:6:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "nodeType": "Mapping", + "src": "435:23:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes4_$_t_bool_$", + "typeString": "mapping(bytes4 => bool)" + }, + "valueType": { + "id": 9, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "453:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + }, + "value": null, + "visibility": "private" + }, + { + "body": { + "id": 18, + "nodeType": "Block", + "src": "629:56:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 15, + "name": "_InterfaceId_ERC165", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7, + "src": "658:19:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + ], + "id": 14, + "name": "_registerInterface", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 49, + "src": "639:18:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes4_$returns$__$", + "typeString": "function (bytes4)" + } + }, + "id": 16, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "639:39:0", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 17, + "nodeType": "ExpressionStatement", + "src": "639:39:0" + } + ] + }, + "documentation": "@dev A contract implementing SupportsInterfaceWithLookup\nimplement ERC165 itself", + "id": 19, + "implemented": true, + "kind": "constructor", + "modifiers": [], + "name": "", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 12, + "nodeType": "ParameterList", + "parameters": [], + "src": "617:2:0" + }, + "returnParameters": { + "id": 13, + "nodeType": "ParameterList", + "parameters": [], + "src": "629:0:0" + }, + "scope": 50, + "src": "605:80:0", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 30, + "nodeType": "Block", + "src": "852:57:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 26, + "name": "_supportedInterfaces", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11, + "src": "869:20:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes4_$_t_bool_$", + "typeString": "mapping(bytes4 => bool)" + } + }, + "id": 28, + "indexExpression": { + "argumentTypes": null, + "id": 27, + "name": "interfaceId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 21, + "src": "890:11:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "869:33:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 25, + "id": 29, + "nodeType": "Return", + "src": "862:40:0" + } + ] + }, + "documentation": "@dev implement supportsInterface(bytes4) using a lookup table", + "id": 31, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "supportsInterface", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 22, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 21, + "name": "interfaceId", + "nodeType": "VariableDeclaration", + "scope": 31, + "src": "803:18:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "typeName": { + "id": 20, + "name": "bytes4", + "nodeType": "ElementaryTypeName", + "src": "803:6:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "802:20:0" + }, + "returnParameters": { + "id": 25, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 24, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 31, + "src": "846:4:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 23, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "846:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "845:6:0" + }, + "scope": 50, + "src": "776:133:0", + "stateMutability": "view", + "superFunction": 59, + "visibility": "external" + }, + { + "body": { + "id": 48, + "nodeType": "Block", + "src": "1045:101:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "id": 39, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 37, + "name": "interfaceId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 33, + "src": "1063:11:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30786666666666666666", + "id": 38, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1078:10:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_4294967295_by_1", + "typeString": "int_const 4294967295" + }, + "value": "0xffffffff" + }, + "src": "1063:25:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 36, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2823, + 2824 + ], + "referencedDeclaration": 2823, + "src": "1055:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 40, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1055:34:0", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 41, + "nodeType": "ExpressionStatement", + "src": "1055:34:0" + }, + { + "expression": { + "argumentTypes": null, + "id": 46, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 42, + "name": "_supportedInterfaces", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11, + "src": "1099:20:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes4_$_t_bool_$", + "typeString": "mapping(bytes4 => bool)" + } + }, + "id": 44, + "indexExpression": { + "argumentTypes": null, + "id": 43, + "name": "interfaceId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 33, + "src": "1120:11:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "1099:33:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 45, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1135:4:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "src": "1099:40:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 47, + "nodeType": "ExpressionStatement", + "src": "1099:40:0" + } + ] + }, + "documentation": "@dev internal method for registering an interface", + "id": 49, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_registerInterface", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 34, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 33, + "name": "interfaceId", + "nodeType": "VariableDeclaration", + "scope": 49, + "src": "1016:18:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "typeName": { + "id": 32, + "name": "bytes4", + "nodeType": "ElementaryTypeName", + "src": "1016:6:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1015:20:0" + }, + "returnParameters": { + "id": 35, + "nodeType": "ParameterList", + "parameters": [], + "src": "1045:0:0" + }, + "scope": 50, + "src": "988:158:0", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + } + ], + "scope": 51, + "src": "156:992:0" + } + ], + "src": "0:1149:0" + }, + "legacyAST": { + "absolutePath": "/home/vagrant/DAPPS/smartpiggiesGithub/amerigo/explorer/contracts/ERC165.sol", + "exportedSymbols": { + "ERC165": [ + 50 + ] + }, + "id": 51, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 1, + "literals": [ + "solidity", + "^", + "0.5", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "0:23:0" + }, + { + "absolutePath": "/home/vagrant/DAPPS/smartpiggiesGithub/amerigo/explorer/contracts/IERC165.sol", + "file": "./IERC165.sol", + "id": 2, + "nodeType": "ImportDirective", + "scope": 51, + "sourceUnit": 61, + "src": "25:23:0", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 3, + "name": "IERC165", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 60, + "src": "175:7:0", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC165_$60", + "typeString": "contract IERC165" + } + }, + "id": 4, + "nodeType": "InheritanceSpecifier", + "src": "175:7:0" + } + ], + "contractDependencies": [ + 60 + ], + "contractKind": "contract", + "documentation": "@title ERC165\n@author Matt Condon (@shrugs)\n@dev Implements ERC165 using a lookup table.", + "fullyImplemented": true, + "id": 50, + "linearizedBaseContracts": [ + 50, + 60 + ], + "name": "ERC165", + "nodeType": "ContractDefinition", + "nodes": [ + { + "constant": true, + "id": 7, + "name": "_InterfaceId_ERC165", + "nodeType": "VariableDeclaration", + "scope": 50, + "src": "189:56:0", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "typeName": { + "id": 5, + "name": "bytes4", + "nodeType": "ElementaryTypeName", + "src": "189:6:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "value": { + "argumentTypes": null, + "hexValue": "30783031666663396137", + "id": 6, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "235:10:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_33540519_by_1", + "typeString": "int_const 33540519" + }, + "value": "0x01ffc9a7" + }, + "visibility": "private" + }, + { + "constant": false, + "id": 11, + "name": "_supportedInterfaces", + "nodeType": "VariableDeclaration", + "scope": 50, + "src": "435:52:0", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes4_$_t_bool_$", + "typeString": "mapping(bytes4 => bool)" + }, + "typeName": { + "id": 10, + "keyType": { + "id": 8, + "name": "bytes4", + "nodeType": "ElementaryTypeName", + "src": "443:6:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "nodeType": "Mapping", + "src": "435:23:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes4_$_t_bool_$", + "typeString": "mapping(bytes4 => bool)" + }, + "valueType": { + "id": 9, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "453:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + }, + "value": null, + "visibility": "private" + }, + { + "body": { + "id": 18, + "nodeType": "Block", + "src": "629:56:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 15, + "name": "_InterfaceId_ERC165", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7, + "src": "658:19:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + ], + "id": 14, + "name": "_registerInterface", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 49, + "src": "639:18:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes4_$returns$__$", + "typeString": "function (bytes4)" + } + }, + "id": 16, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "639:39:0", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 17, + "nodeType": "ExpressionStatement", + "src": "639:39:0" + } + ] + }, + "documentation": "@dev A contract implementing SupportsInterfaceWithLookup\nimplement ERC165 itself", + "id": 19, + "implemented": true, + "kind": "constructor", + "modifiers": [], + "name": "", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 12, + "nodeType": "ParameterList", + "parameters": [], + "src": "617:2:0" + }, + "returnParameters": { + "id": 13, + "nodeType": "ParameterList", + "parameters": [], + "src": "629:0:0" + }, + "scope": 50, + "src": "605:80:0", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 30, + "nodeType": "Block", + "src": "852:57:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 26, + "name": "_supportedInterfaces", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11, + "src": "869:20:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes4_$_t_bool_$", + "typeString": "mapping(bytes4 => bool)" + } + }, + "id": 28, + "indexExpression": { + "argumentTypes": null, + "id": 27, + "name": "interfaceId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 21, + "src": "890:11:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "869:33:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 25, + "id": 29, + "nodeType": "Return", + "src": "862:40:0" + } + ] + }, + "documentation": "@dev implement supportsInterface(bytes4) using a lookup table", + "id": 31, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "supportsInterface", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 22, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 21, + "name": "interfaceId", + "nodeType": "VariableDeclaration", + "scope": 31, + "src": "803:18:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "typeName": { + "id": 20, + "name": "bytes4", + "nodeType": "ElementaryTypeName", + "src": "803:6:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "802:20:0" + }, + "returnParameters": { + "id": 25, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 24, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 31, + "src": "846:4:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 23, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "846:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "845:6:0" + }, + "scope": 50, + "src": "776:133:0", + "stateMutability": "view", + "superFunction": 59, + "visibility": "external" + }, + { + "body": { + "id": 48, + "nodeType": "Block", + "src": "1045:101:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "id": 39, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 37, + "name": "interfaceId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 33, + "src": "1063:11:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30786666666666666666", + "id": 38, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1078:10:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_4294967295_by_1", + "typeString": "int_const 4294967295" + }, + "value": "0xffffffff" + }, + "src": "1063:25:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 36, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2823, + 2824 + ], + "referencedDeclaration": 2823, + "src": "1055:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 40, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1055:34:0", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 41, + "nodeType": "ExpressionStatement", + "src": "1055:34:0" + }, + { + "expression": { + "argumentTypes": null, + "id": 46, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 42, + "name": "_supportedInterfaces", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11, + "src": "1099:20:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes4_$_t_bool_$", + "typeString": "mapping(bytes4 => bool)" + } + }, + "id": 44, + "indexExpression": { + "argumentTypes": null, + "id": 43, + "name": "interfaceId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 33, + "src": "1120:11:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "1099:33:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 45, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1135:4:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "src": "1099:40:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 47, + "nodeType": "ExpressionStatement", + "src": "1099:40:0" + } + ] + }, + "documentation": "@dev internal method for registering an interface", + "id": 49, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_registerInterface", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 34, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 33, + "name": "interfaceId", + "nodeType": "VariableDeclaration", + "scope": 49, + "src": "1016:18:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "typeName": { + "id": 32, + "name": "bytes4", + "nodeType": "ElementaryTypeName", + "src": "1016:6:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1015:20:0" + }, + "returnParameters": { + "id": 35, + "nodeType": "ParameterList", + "parameters": [], + "src": "1045:0:0" + }, + "scope": 50, + "src": "988:158:0", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + } + ], + "scope": 51, + "src": "156:992:0" + } + ], + "src": "0:1149:0" + }, + "compiler": { + "name": "solc", + "version": "0.5.2+commit.1df8f40c.Emscripten.clang" + }, + "networks": {}, + "schemaVersion": "3.0.2", + "updatedAt": "2019-04-26T14:47:45.670Z", + "devdoc": { + "author": "Matt Condon (@shrugs)", + "details": "Implements ERC165 using a lookup table.", + "methods": { + "constructor": { + "details": "A contract implementing SupportsInterfaceWithLookup implement ERC165 itself" + }, + "supportsInterface(bytes4)": { + "details": "implement supportsInterface(bytes4) using a lookup table" + } + }, + "title": "ERC165" + }, + "userdoc": { + "methods": {} + } +} \ No newline at end of file diff --git a/app/src/contracts/IERC165.json b/app/src/contracts/IERC165.json new file mode 100644 index 0000000..4945faa --- /dev/null +++ b/app/src/contracts/IERC165.json @@ -0,0 +1,300 @@ +{ + "contractName": "IERC165", + "abi": [ + { + "constant": true, + "inputs": [ + { + "name": "interfaceId", + "type": "bytes4" + } + ], + "name": "supportsInterface", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "sourceMap": "", + "deployedSourceMap": "", + "source": "pragma solidity ^0.5.0;\n\n/**\n * @title IERC165\n * @dev https://github.com/ethereum/EIPs/blob/master/EIPS/eip-165.md\n */\ninterface IERC165 {\n /**\n * @notice Query if a contract implements an interface\n * @param interfaceId The interface identifier, as specified in ERC-165\n * @dev Interface identification is specified in ERC-165. This function\n * uses less than 30,000 gas.\n */\n function supportsInterface(bytes4 interfaceId) external view returns (bool);\n}\n", + "sourcePath": "/home/vagrant/DAPPS/smartpiggiesGithub/amerigo/explorer/contracts/IERC165.sol", + "ast": { + "absolutePath": "/home/vagrant/DAPPS/smartpiggiesGithub/amerigo/explorer/contracts/IERC165.sol", + "exportedSymbols": { + "IERC165": [ + 60 + ] + }, + "id": 61, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 52, + "literals": [ + "solidity", + "^", + "0.5", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "0:23:1" + }, + { + "baseContracts": [], + "contractDependencies": [], + "contractKind": "interface", + "documentation": "@title IERC165\n@dev https://github.com/ethereum/EIPs/blob/master/EIPS/eip-165.md", + "fullyImplemented": false, + "id": 60, + "linearizedBaseContracts": [ + 60 + ], + "name": "IERC165", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": null, + "documentation": "@notice Query if a contract implements an interface\n@param interfaceId The interface identifier, as specified in ERC-165\n@dev Interface identification is specified in ERC-165. This function\nuses less than 30,000 gas.", + "id": 59, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "supportsInterface", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 55, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 54, + "name": "interfaceId", + "nodeType": "VariableDeclaration", + "scope": 59, + "src": "432:18:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "typeName": { + "id": 53, + "name": "bytes4", + "nodeType": "ElementaryTypeName", + "src": "432:6:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "431:20:1" + }, + "returnParameters": { + "id": 58, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 57, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 59, + "src": "475:4:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 56, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "475:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "474:6:1" + }, + "scope": 60, + "src": "405:76:1", + "stateMutability": "view", + "superFunction": null, + "visibility": "external" + } + ], + "scope": 61, + "src": "120:363:1" + } + ], + "src": "0:484:1" + }, + "legacyAST": { + "absolutePath": "/home/vagrant/DAPPS/smartpiggiesGithub/amerigo/explorer/contracts/IERC165.sol", + "exportedSymbols": { + "IERC165": [ + 60 + ] + }, + "id": 61, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 52, + "literals": [ + "solidity", + "^", + "0.5", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "0:23:1" + }, + { + "baseContracts": [], + "contractDependencies": [], + "contractKind": "interface", + "documentation": "@title IERC165\n@dev https://github.com/ethereum/EIPs/blob/master/EIPS/eip-165.md", + "fullyImplemented": false, + "id": 60, + "linearizedBaseContracts": [ + 60 + ], + "name": "IERC165", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": null, + "documentation": "@notice Query if a contract implements an interface\n@param interfaceId The interface identifier, as specified in ERC-165\n@dev Interface identification is specified in ERC-165. This function\nuses less than 30,000 gas.", + "id": 59, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "supportsInterface", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 55, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 54, + "name": "interfaceId", + "nodeType": "VariableDeclaration", + "scope": 59, + "src": "432:18:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "typeName": { + "id": 53, + "name": "bytes4", + "nodeType": "ElementaryTypeName", + "src": "432:6:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "431:20:1" + }, + "returnParameters": { + "id": 58, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 57, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 59, + "src": "475:4:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 56, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "475:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "474:6:1" + }, + "scope": 60, + "src": "405:76:1", + "stateMutability": "view", + "superFunction": null, + "visibility": "external" + } + ], + "scope": 61, + "src": "120:363:1" + } + ], + "src": "0:484:1" + }, + "compiler": { + "name": "solc", + "version": "0.5.2+commit.1df8f40c.Emscripten.clang" + }, + "networks": {}, + "schemaVersion": "3.0.2", + "updatedAt": "2019-04-26T14:47:45.702Z", + "devdoc": { + "details": "https://github.com/ethereum/EIPs/blob/master/EIPS/eip-165.md", + "methods": { + "supportsInterface(bytes4)": { + "details": "Interface identification is specified in ERC-165. This function uses less than 30,000 gas.", + "params": { + "interfaceId": "The interface identifier, as specified in ERC-165" + } + } + }, + "title": "IERC165" + }, + "userdoc": { + "methods": { + "supportsInterface(bytes4)": { + "notice": "Query if a contract implements an interface" + } + } + } +} \ No newline at end of file diff --git a/app/src/contracts/Migrations.json b/app/src/contracts/Migrations.json new file mode 100644 index 0000000..8696936 --- /dev/null +++ b/app/src/contracts/Migrations.json @@ -0,0 +1,1384 @@ +{ + "contractName": "Migrations", + "abi": [ + { + "constant": true, + "inputs": [], + "name": "last_completed_migration", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "owner", + "outputs": [ + { + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "constant": false, + "inputs": [ + { + "name": "completed", + "type": "uint256" + } + ], + "name": "setCompleted", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "new_address", + "type": "address" + } + ], + "name": "upgrade", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x608060405234801561001057600080fd5b5060008054600160a060020a03191633179055610230806100326000396000f3fe608060405234801561001057600080fd5b5060043610610068577c010000000000000000000000000000000000000000000000000000000060003504630900f010811461006d578063445df0ac146100a25780638da5cb5b146100bc578063fdacd576146100ed575b600080fd5b6100a06004803603602081101561008357600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661010a565b005b6100aa6101bd565b60408051918252519081900360200190f35b6100c46101c3565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b6100a06004803603602081101561010357600080fd5b50356101df565b60005473ffffffffffffffffffffffffffffffffffffffff163314156101ba5760008190508073ffffffffffffffffffffffffffffffffffffffff1663fdacd5766001546040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050600060405180830381600087803b1580156101a057600080fd5b505af11580156101b4573d6000803e3d6000fd5b50505050505b50565b60015481565b60005473ffffffffffffffffffffffffffffffffffffffff1681565b60005473ffffffffffffffffffffffffffffffffffffffff163314156101ba5760015556fea165627a7a723058205162ed1b0c95a7416d8039c5e73455be75db405df28509493079dcf56d448bdf0029", + "deployedBytecode": "0x608060405234801561001057600080fd5b5060043610610068577c010000000000000000000000000000000000000000000000000000000060003504630900f010811461006d578063445df0ac146100a25780638da5cb5b146100bc578063fdacd576146100ed575b600080fd5b6100a06004803603602081101561008357600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661010a565b005b6100aa6101bd565b60408051918252519081900360200190f35b6100c46101c3565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b6100a06004803603602081101561010357600080fd5b50356101df565b60005473ffffffffffffffffffffffffffffffffffffffff163314156101ba5760008190508073ffffffffffffffffffffffffffffffffffffffff1663fdacd5766001546040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050600060405180830381600087803b1580156101a057600080fd5b505af11580156101b4573d6000803e3d6000fd5b50505050505b50565b60015481565b60005473ffffffffffffffffffffffffffffffffffffffff1681565b60005473ffffffffffffffffffffffffffffffffffffffff163314156101ba5760015556fea165627a7a723058205162ed1b0c95a7416d8039c5e73455be75db405df28509493079dcf56d448bdf0029", + "sourceMap": "34:520:2:-;;;129:56;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;160:5:2;:18;;-1:-1:-1;;;;;;160:18:2;168:10;160:18;;;34:520;;;;;;", + "deployedSourceMap": "34:520:2:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;34:520:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;377:175;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;377:175:2;;;;:::i;:::-;;86:36;;;:::i;:::-;;;;;;;;;;;;;;;;60:20;;;:::i;:::-;;;;;;;;;;;;;;;;;;;262:109;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;262:109:2;;:::i;377:175::-;241:5;;;;227:10;:19;223:26;;;443:19;476:11;443:45;;498:8;:21;;;520:24;;498:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;498:47:2;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;498:47:2;;;;248:1;223:26;377:175;:::o;86:36::-;;;;:::o;60:20::-;;;;;;:::o;262:109::-;241:5;;;;227:10;:19;223:26;;;328:24;:36;262:109::o", + "source": "pragma solidity >=0.4.21 <0.6.0;\n\ncontract Migrations {\n address public owner;\n uint public last_completed_migration;\n\n constructor() public {\n owner = msg.sender;\n }\n\n modifier restricted() {\n if (msg.sender == owner) _;\n }\n\n function setCompleted(uint completed) public restricted {\n last_completed_migration = completed;\n }\n\n function upgrade(address new_address) public restricted {\n Migrations upgraded = Migrations(new_address);\n upgraded.setCompleted(last_completed_migration);\n }\n}\n", + "sourcePath": "/home/vagrant/DAPPS/smartpiggiesGithub/amerigo/explorer/contracts/Migrations.sol", + "ast": { + "absolutePath": "/home/vagrant/DAPPS/smartpiggiesGithub/amerigo/explorer/contracts/Migrations.sol", + "exportedSymbols": { + "Migrations": [ + 117 + ] + }, + "id": 118, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 62, + "literals": [ + "solidity", + ">=", + "0.4", + ".21", + "<", + "0.6", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "0:32:2" + }, + { + "baseContracts": [], + "contractDependencies": [], + "contractKind": "contract", + "documentation": null, + "fullyImplemented": true, + "id": 117, + "linearizedBaseContracts": [ + 117 + ], + "name": "Migrations", + "nodeType": "ContractDefinition", + "nodes": [ + { + "constant": false, + "id": 64, + "name": "owner", + "nodeType": "VariableDeclaration", + "scope": 117, + "src": "60:20:2", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 63, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "60:7:2", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "public" + }, + { + "constant": false, + "id": 66, + "name": "last_completed_migration", + "nodeType": "VariableDeclaration", + "scope": 117, + "src": "86:36:2", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 65, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "86:4:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "public" + }, + { + "body": { + "id": 74, + "nodeType": "Block", + "src": "150:35:2", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 72, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 69, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 64, + "src": "160:5:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 70, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2820, + "src": "168:3:2", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 71, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "168:10:2", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "160:18:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 73, + "nodeType": "ExpressionStatement", + "src": "160:18:2" + } + ] + }, + "documentation": null, + "id": 75, + "implemented": true, + "kind": "constructor", + "modifiers": [], + "name": "", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 67, + "nodeType": "ParameterList", + "parameters": [], + "src": "140:2:2" + }, + "returnParameters": { + "id": 68, + "nodeType": "ParameterList", + "parameters": [], + "src": "150:0:2" + }, + "scope": 117, + "src": "129:56:2", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 83, + "nodeType": "Block", + "src": "213:43:2", + "statements": [ + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 80, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 77, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2820, + "src": "227:3:2", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 78, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "227:10:2", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 79, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 64, + "src": "241:5:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "227:19:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 82, + "nodeType": "IfStatement", + "src": "223:26:2", + "trueBody": { + "id": 81, + "nodeType": "PlaceholderStatement", + "src": "248:1:2" + } + } + ] + }, + "documentation": null, + "id": 84, + "name": "restricted", + "nodeType": "ModifierDefinition", + "parameters": { + "id": 76, + "nodeType": "ParameterList", + "parameters": [], + "src": "210:2:2" + }, + "src": "191:65:2", + "visibility": "internal" + }, + { + "body": { + "id": 95, + "nodeType": "Block", + "src": "318:53:2", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 93, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 91, + "name": "last_completed_migration", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 66, + "src": "328:24:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 92, + "name": "completed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 86, + "src": "355:9:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "328:36:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 94, + "nodeType": "ExpressionStatement", + "src": "328:36:2" + } + ] + }, + "documentation": null, + "id": 96, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": null, + "id": 89, + "modifierName": { + "argumentTypes": null, + "id": 88, + "name": "restricted", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 84, + "src": "307:10:2", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "307:10:2" + } + ], + "name": "setCompleted", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 87, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 86, + "name": "completed", + "nodeType": "VariableDeclaration", + "scope": 96, + "src": "284:14:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 85, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "284:4:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "283:16:2" + }, + "returnParameters": { + "id": 90, + "nodeType": "ParameterList", + "parameters": [], + "src": "318:0:2" + }, + "scope": 117, + "src": "262:109:2", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 115, + "nodeType": "Block", + "src": "433:119:2", + "statements": [ + { + "assignments": [ + 104 + ], + "declarations": [ + { + "constant": false, + "id": 104, + "name": "upgraded", + "nodeType": "VariableDeclaration", + "scope": 115, + "src": "443:19:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Migrations_$117", + "typeString": "contract Migrations" + }, + "typeName": { + "contractScope": null, + "id": 103, + "name": "Migrations", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 117, + "src": "443:10:2", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Migrations_$117", + "typeString": "contract Migrations" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 108, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 106, + "name": "new_address", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 98, + "src": "476:11:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 105, + "name": "Migrations", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 117, + "src": "465:10:2", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Migrations_$117_$", + "typeString": "type(contract Migrations)" + } + }, + "id": 107, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "465:23:2", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Migrations_$117", + "typeString": "contract Migrations" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "443:45:2" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 112, + "name": "last_completed_migration", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 66, + "src": "520:24:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 109, + "name": "upgraded", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 104, + "src": "498:8:2", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Migrations_$117", + "typeString": "contract Migrations" + } + }, + "id": 111, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "setCompleted", + "nodeType": "MemberAccess", + "referencedDeclaration": 96, + "src": "498:21:2", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$returns$__$", + "typeString": "function (uint256) external" + } + }, + "id": 113, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "498:47:2", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 114, + "nodeType": "ExpressionStatement", + "src": "498:47:2" + } + ] + }, + "documentation": null, + "id": 116, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": null, + "id": 101, + "modifierName": { + "argumentTypes": null, + "id": 100, + "name": "restricted", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 84, + "src": "422:10:2", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "422:10:2" + } + ], + "name": "upgrade", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 99, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 98, + "name": "new_address", + "nodeType": "VariableDeclaration", + "scope": 116, + "src": "394:19:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 97, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "394:7:2", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "393:21:2" + }, + "returnParameters": { + "id": 102, + "nodeType": "ParameterList", + "parameters": [], + "src": "433:0:2" + }, + "scope": 117, + "src": "377:175:2", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + } + ], + "scope": 118, + "src": "34:520:2" + } + ], + "src": "0:555:2" + }, + "legacyAST": { + "absolutePath": "/home/vagrant/DAPPS/smartpiggiesGithub/amerigo/explorer/contracts/Migrations.sol", + "exportedSymbols": { + "Migrations": [ + 117 + ] + }, + "id": 118, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 62, + "literals": [ + "solidity", + ">=", + "0.4", + ".21", + "<", + "0.6", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "0:32:2" + }, + { + "baseContracts": [], + "contractDependencies": [], + "contractKind": "contract", + "documentation": null, + "fullyImplemented": true, + "id": 117, + "linearizedBaseContracts": [ + 117 + ], + "name": "Migrations", + "nodeType": "ContractDefinition", + "nodes": [ + { + "constant": false, + "id": 64, + "name": "owner", + "nodeType": "VariableDeclaration", + "scope": 117, + "src": "60:20:2", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 63, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "60:7:2", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "public" + }, + { + "constant": false, + "id": 66, + "name": "last_completed_migration", + "nodeType": "VariableDeclaration", + "scope": 117, + "src": "86:36:2", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 65, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "86:4:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "public" + }, + { + "body": { + "id": 74, + "nodeType": "Block", + "src": "150:35:2", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 72, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 69, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 64, + "src": "160:5:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 70, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2820, + "src": "168:3:2", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 71, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "168:10:2", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "160:18:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 73, + "nodeType": "ExpressionStatement", + "src": "160:18:2" + } + ] + }, + "documentation": null, + "id": 75, + "implemented": true, + "kind": "constructor", + "modifiers": [], + "name": "", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 67, + "nodeType": "ParameterList", + "parameters": [], + "src": "140:2:2" + }, + "returnParameters": { + "id": 68, + "nodeType": "ParameterList", + "parameters": [], + "src": "150:0:2" + }, + "scope": 117, + "src": "129:56:2", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 83, + "nodeType": "Block", + "src": "213:43:2", + "statements": [ + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 80, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 77, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2820, + "src": "227:3:2", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 78, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "227:10:2", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 79, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 64, + "src": "241:5:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "227:19:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 82, + "nodeType": "IfStatement", + "src": "223:26:2", + "trueBody": { + "id": 81, + "nodeType": "PlaceholderStatement", + "src": "248:1:2" + } + } + ] + }, + "documentation": null, + "id": 84, + "name": "restricted", + "nodeType": "ModifierDefinition", + "parameters": { + "id": 76, + "nodeType": "ParameterList", + "parameters": [], + "src": "210:2:2" + }, + "src": "191:65:2", + "visibility": "internal" + }, + { + "body": { + "id": 95, + "nodeType": "Block", + "src": "318:53:2", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 93, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 91, + "name": "last_completed_migration", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 66, + "src": "328:24:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 92, + "name": "completed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 86, + "src": "355:9:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "328:36:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 94, + "nodeType": "ExpressionStatement", + "src": "328:36:2" + } + ] + }, + "documentation": null, + "id": 96, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": null, + "id": 89, + "modifierName": { + "argumentTypes": null, + "id": 88, + "name": "restricted", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 84, + "src": "307:10:2", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "307:10:2" + } + ], + "name": "setCompleted", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 87, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 86, + "name": "completed", + "nodeType": "VariableDeclaration", + "scope": 96, + "src": "284:14:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 85, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "284:4:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "283:16:2" + }, + "returnParameters": { + "id": 90, + "nodeType": "ParameterList", + "parameters": [], + "src": "318:0:2" + }, + "scope": 117, + "src": "262:109:2", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 115, + "nodeType": "Block", + "src": "433:119:2", + "statements": [ + { + "assignments": [ + 104 + ], + "declarations": [ + { + "constant": false, + "id": 104, + "name": "upgraded", + "nodeType": "VariableDeclaration", + "scope": 115, + "src": "443:19:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Migrations_$117", + "typeString": "contract Migrations" + }, + "typeName": { + "contractScope": null, + "id": 103, + "name": "Migrations", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 117, + "src": "443:10:2", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Migrations_$117", + "typeString": "contract Migrations" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 108, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 106, + "name": "new_address", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 98, + "src": "476:11:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 105, + "name": "Migrations", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 117, + "src": "465:10:2", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Migrations_$117_$", + "typeString": "type(contract Migrations)" + } + }, + "id": 107, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "465:23:2", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Migrations_$117", + "typeString": "contract Migrations" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "443:45:2" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 112, + "name": "last_completed_migration", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 66, + "src": "520:24:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 109, + "name": "upgraded", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 104, + "src": "498:8:2", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Migrations_$117", + "typeString": "contract Migrations" + } + }, + "id": 111, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "setCompleted", + "nodeType": "MemberAccess", + "referencedDeclaration": 96, + "src": "498:21:2", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$returns$__$", + "typeString": "function (uint256) external" + } + }, + "id": 113, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "498:47:2", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 114, + "nodeType": "ExpressionStatement", + "src": "498:47:2" + } + ] + }, + "documentation": null, + "id": 116, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": null, + "id": 101, + "modifierName": { + "argumentTypes": null, + "id": 100, + "name": "restricted", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 84, + "src": "422:10:2", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "422:10:2" + } + ], + "name": "upgrade", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 99, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 98, + "name": "new_address", + "nodeType": "VariableDeclaration", + "scope": 116, + "src": "394:19:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 97, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "394:7:2", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "393:21:2" + }, + "returnParameters": { + "id": 102, + "nodeType": "ParameterList", + "parameters": [], + "src": "433:0:2" + }, + "scope": 117, + "src": "377:175:2", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + } + ], + "scope": 118, + "src": "34:520:2" + } + ], + "src": "0:555:2" + }, + "compiler": { + "name": "solc", + "version": "0.5.2+commit.1df8f40c.Emscripten.clang" + }, + "networks": {}, + "schemaVersion": "3.0.2", + "updatedAt": "2019-04-26T14:47:45.702Z", + "devdoc": { + "methods": {} + }, + "userdoc": { + "methods": {} + } +} \ No newline at end of file diff --git a/app/src/contracts/PaymentToken.json b/app/src/contracts/PaymentToken.json new file mode 100644 index 0000000..011e0ad --- /dev/null +++ b/app/src/contracts/PaymentToken.json @@ -0,0 +1,70056 @@ +{ + "contractName": "PaymentToken", + "abi": [ + { + "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": false, + "inputs": [ + { + "name": "to", + "type": "address" + }, + { + "name": "value", + "type": "uint256" + } + ], + "name": "transfer", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [], + "name": "decimals", + "outputs": [ + { + "name": "", + "type": "uint8" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "sourceMap": "", + "deployedSourceMap": "", + "source": "/**\nSmartPiggies is an open source standard for\na free peer to peer global derivatives market\n\nCopyright (C) 2019, Arief, Algya, Lee\n\nThis program is free software: you can redistribute it and/or modify\nit under the terms of the GNU General Public License as published by\nthe Free Software Foundation, either version 3 of the License, or\n(at your option) any later version.\n\nThis program is distributed in the hope that it will be useful,\nbut WITHOUT ANY WARRANTY; without even the implied warranty of\nMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\nGNU General Public License for more details.\n\nYou should have received a copy of the GNU General Public License\nalong with this program. If not, see .\n**/\npragma solidity >=0.4.24 <0.6.0;\npragma experimental ABIEncoderV2;\n\n// massive thanks to ERC-721 spec for this D:\n\n// references to \"oracles\" could use a different / more general term\n// so that the spec could use signed data directly from \"source\" w/ same interface\n\ninterface PaymentToken {\n function transferFrom(address from, address to, uint256 value) external returns (bool);\n function transfer(address to, uint256 value) external returns (bool);\n function decimals() external returns (uint8);\n}\n\nimport \"./ERC165.sol\";\nimport \"./SafeMath.sol\";\n\n/** @title ERC-59 (subject to change) Smart Option Standard\n*/\ncontract SmartPiggies is ERC165 {\n using SafeMath for uint256;\n\n address payable owner;\n uint256 public tokenId;\n\n struct DetailAddresses {\n address writer;\n address holder;\n address collateralERC;\n address premiumERC;\n address dataResolverNow;\n address dataResolverAtExpiry;\n }\n\n struct DetailUints {\n uint256 collateral;\n uint256 lotSize;\n uint256 strikePrice;\n uint256 expiry;\n uint256 settlementPrice;\n uint256 reqCollateral;\n uint8 collateralDecimals; // to store decimals from ERC-20 contract\n }\n\n struct BoolFlags {\n bool isRequest;\n bool isEuro;\n bool isPut;\n bool hasBeenCleared; // to flag whether the oracle returned a callback w/ price\n }\n\n struct DetailAuction {\n uint256 startBlock;\n uint256 expiryBlock;\n uint256 startPrice;\n uint256 reservePrice;\n uint256 timeStep;\n uint256 priceStep;\n bool auctionActive;\n bool satisfyInProgress; // mutex guard to disallow ending an auction if a transaction to satisfy is in progress\n }\n\n struct Piggy {\n DetailAddresses addresses; //address details\n DetailUints uintDetails; //number details\n BoolFlags flags; //parameter switches\n }\n\n mapping (address => mapping(address => uint256)) private ERC20balances;\n mapping (address => uint256[]) private ownedPiggies; //again, public?\n mapping (uint256 => uint256) private ownedPiggiesIndex;\n mapping (uint256 => Piggy) private piggies;\n mapping (uint256 => DetailAuction) private auctions;\n\n /*\n add events\n */\n\n event CreatePiggy(\n address indexed from,\n uint256 indexed tokenId,\n uint256 indexed strike,\n uint256 expiryBlock,\n bool RFP\n );\n\n event TransferPiggy(\n address indexed from,\n address indexed to,\n uint256 indexed tokenId\n );\n\n event UpdateRFP(\n address indexed from,\n uint256 indexed tokenId,\n address collateralERC,\n address premiumERC,\n address dataResolverNow,\n address dataResolverAtExpiry,\n uint256 reqCollateral,\n uint256 lotSize,\n uint256 strikePrice,\n uint256 expiry,\n bool isEuro,\n bool isPut\n );\n\n event ReclaimAndBurn(\n address indexed from,\n uint256 indexed tokenId,\n bool indexed RFP\n );\n\n event StartAuction(\n address indexed from,\n uint256 indexed tokenId,\n uint256 startPrice,\n uint256 reservePrice,\n uint256 auctionLength,\n uint256 timeStep,\n uint256 priceStep\n );\n\n event EndAuction(\n address indexed from,\n uint256 indexed tokenId,\n bool indexed RFP\n );\n\n event SatisfyAuction(\n address indexed from,\n uint256 indexed tokenId,\n uint256 paidPremium,\n uint256 change,\n uint256 auctionPremium\n );\n\n event RequestSettlementPrice(\n address indexed feePayer,\n uint256 indexed tokenId,\n uint256 oracleFee,\n address dataResolver\n );\n\n event OracleReturned(\n address indexed resolver,\n uint256 indexed tokenId,\n uint256 indexed price\n );\n\n event SettlePiggy(\n address indexed from,\n uint256 indexed tokenId,\n uint256 indexed holderPayout,\n uint256 writerPayout\n );\n\n event ClaimPayout(\n address indexed from,\n uint256 indexed amount,\n address indexed paymentToken\n );\n\n /**\n constructor should throw if various things aren't properly set\n also should throw if the contract is not delegated an amount of collateral designated\n in the reference ERC-20 which is >= the collateral value of the piggy\n */\n constructor()\n public\n {\n //declarations here\n owner = msg.sender; //so we can delete if from the testnet\n }\n\n // abstract ERC-20 TransferFrom attepmts\n function attemptPaymentTransfer(address _ERC20, address _from, address _to, uint256 _amount)\n private\n returns (bool)\n {\n (bool success, ) = address(PaymentToken(_ERC20)).call(\n abi.encodeWithSignature(\n \"transferFrom(address,address,uint256)\",\n _from,\n _to,\n _amount\n )\n );\n return success;\n }\n\n // token should capture claim fields --> \"getSellerClaim()\" / \"getOwnerClaim()\" ?\n // the oracle has to do a lot of heavy lifting in the current design, and the token needs\n // to be created with extreme care wrt the oracle metadata\n // if we want to do \"capped\" options as traditional, need more metadata re: endpoints i guess\n /** @notice Create a new ERC-59 token\n @dev Throws if `_collateralERC` is not a valid Ethereum (ERC-20) address.\n Throws if `_premiumERC` is not a valid Ethereum (ERC-20) address (may be same\n as `_collateralERC`).\n Throws if `_oracle` is not a valid Ethereum address.\n Throws if `_expiry` < block.number.\n If `_asRequest` is true, throws if `_reqCollateral` == 0.\n If `_asRequest` is false, throws if msg.sender has not delegated at least `_collateral`\n in the ERC-20 token whose contract is `_collateralERC` to the ERC-59 contract.\n When a new token is created, msg.sender should be recorded as the creator and owner.\n If `_asRequest` is true, the zero address should be recorded as the seller.\n If `_asRequest` is false, msg.sender should be recorded as the seller.\n If `_asRequest` is false, `_reqCollateral` will be irrelevant and should be captured as 0.\n If `_asRequest` is false, the ERC-59 contract must take ownership of `_collateral` amount\n of ERC-20 tokens governed by the `_collateralERC` contract.\n @param _collateralERC The address of the reference ERC-20 token to be used as collateral\n @param _premiumERC The address of the reference ERC-20 token to be used to pay the premium\n param _oracle The address of a service contract which will return the settlement price\n param _asRequest If true, will create the token as an \"RFP\" / request for a particular option\n param _underlyingNow An identifier for the reference underlying which the contract at `_oracle`\n is able to parse to return the current price of the underlying\n param _underlyingExpiry An identifier for the reference underlying which the contract at\n `_oracle` is able to parse to return the price of the underlying at `_expiry`\n @param _collateral The amount of collateral for the option, denominated in units of the token\n at the `_collateralERC` address\n @param _lotSize A multiplier on the settlement price used to determine settlement claims\n @param _strikePrice The strike value of the option, in the same units as the settlement price\n @param _expiry The block height at which the option will expire\n param _reqCollateral The amount of collateral desired in the option, if creating with\n `_asRequest` == true, denominated in units of the token at the `_collateralERC` address\n @param _isEuro If true, the option can only be settled at or after `_expiry` is reached, else\n it can be settled at any time\n @param _isPut If true, the settlement claims will be calculated for a put option; else they\n will be calculated for a call option\n */\n function createPiggy(\n address _collateralERC,\n address _premiumERC,\n address _dataResolverNow,\n address _dataResolverAtExpiry,\n uint256 _collateral,\n uint256 _lotSize,\n uint256 _strikePrice,\n uint256 _expiry,\n bool _isEuro,\n bool _isPut,\n bool _isRequest\n )\n public\n returns (bool)\n {\n require(\n _collateralERC != address(0) &&\n _premiumERC != address(0) &&\n _dataResolverNow != address(0) &&\n _dataResolverAtExpiry != address(0),\n \"addresses cannot be zero\"\n );\n require(\n _collateral != 0 &&\n _lotSize != 0 &&\n _strikePrice != 0 &&\n _expiry != 0,\n \"option parameters cannot be zero\"\n );\n // if not an RFP, make sure the collateral can be transferred\n if (!_isRequest) {\n bool success = attemptPaymentTransfer(\n _collateralERC, //_collateralERC\n msg.sender,\n address(this),\n _collateral\n );\n require(success, \"Token transfer did not complete\");\n }\n // any other checks that need to be performed specifically for RFPs ?\n\n // assuming all checks have passed:\n tokenId = tokenId.add(1);\n\n // write the values to storage, including _isRequest flag\n Piggy storage p = piggies[tokenId];\n p.addresses.holder = msg.sender;\n p.addresses.collateralERC = _collateralERC;\n p.addresses.premiumERC = _premiumERC;\n p.addresses.dataResolverNow = _dataResolverNow;\n p.addresses.dataResolverAtExpiry = _dataResolverAtExpiry;\n p.uintDetails.collateralDecimals = _getERC20Decimals(_collateralERC);\n p.uintDetails.lotSize = _lotSize;\n p.uintDetails.strikePrice = _strikePrice;\n p.uintDetails.expiry = _expiry.add(block.number);\n p.flags.isEuro = _isEuro;\n p.flags.isPut = _isPut;\n p.flags.isRequest = _isRequest;\n\n // conditional state variable assignments based on _isRequest:\n if (_isRequest) {\n p.uintDetails.reqCollateral = _collateral;\n } else {\n p.addresses.writer = msg.sender;\n p.uintDetails.collateral = _collateral;\n }\n _addTokenToOwnedPiggies(msg.sender, tokenId);\n\n emit CreatePiggy(\n msg.sender,\n tokenId,\n _strikePrice,\n _expiry.add(block.number),\n _isRequest\n );\n\n return true;\n }\n\n// make sure the ERC-20 contract for collateral correctly reports decimals\nfunction _getERC20Decimals(address _ERC20)\n internal\n returns (uint8)\n{\n (bool success, bytes memory _decBytes) = address(PaymentToken(_ERC20)).call(\n abi.encodeWithSignature(\"decimals()\")\n );\n require(success, \"collateral ERC-20 contract does not properly specify decimals\");\n // convert bytes to uint8:\n uint256 _ERCdecimals;\n for(uint256 i=0; i < _decBytes.length; i++) {\n _ERCdecimals = _ERCdecimals + uint8(_decBytes[i])*(2**(8*(_decBytes.length-(i+1))));\n }\n return uint8(_ERCdecimals);\n}\n\n // helper function to view info from about the piggy outside of the contract\n function getDetails(uint256 _tokenId)\n public\n view\n returns (Piggy memory)\n {\n return piggies[_tokenId];\n }\n\n // this is a helper function to allow view of auction details\n function getAuctionDetails(uint256 _tokenId)\n public\n view\n returns (DetailAuction memory)\n {\n return auctions[_tokenId];\n }\n\n /** @notice Count the number of ERC-59 tokens owned by a particular address\n @dev ERC-59 tokens assigned to the zero address are considered invalid, and this\n function throws for queries about the zero address.\n @param _owner An address for which to query the balance of ERC-59 tokens\n @return The number of ERC-59 tokens owned by `_owner`, possibly zero\n */\n function getOwnedPiggies(address _owner)\n public\n view\n returns (uint256[] memory)\n {\n require(_owner != address(0), \"address cannot be zero\");\n return ownedPiggies[_owner];\n }\n\n function getERC20balance(address _owner, address _erc20)\n public\n view\n returns (uint256)\n {\n require(_owner != address(0), \"address cannot be zero\");\n return ERC20balances[_owner][_erc20];\n }\n\n function transferFrom(address _from, address _to, uint256 _tokenId)\n public\n {\n require(msg.sender == piggies[_tokenId].addresses.holder, \"msg.sender is not the owner\"); //openzep doesn't do this\n _internalTransfer(_from, _to, _tokenId);\n }\n\n // internal transfer for transfers made on behalf of the contract\n function _internalTransfer(address _from, address _to, uint256 _tokenId)\n internal\n {\n require(_from == piggies[_tokenId].addresses.holder, \"from address is not the owner\");\n require(_to != address(0), \"to address is zero\");\n _removeTokenFromOwnedPiggies(_from, _tokenId);\n _addTokenToOwnedPiggies(_to, _tokenId);\n piggies[_tokenId].addresses.holder = _to;\n emit TransferPiggy(_from, _to, _tokenId);\n }\n\n // possibly add function to update reqCollateral if token is an RFP and hasn't been successfully fulfilled\n // maybe allow all fields of an RFP to be updated ?\n // this may be more trouble than it is worth. could allow this function to accept a struct, and check if any keys matching fields of Piggy are nonzero, if so, update those ones\n function updateRFP(\n uint256 _tokenId,\n address _collateralERC,\n address _premiumERC,\n address _dataResolverNow,\n address _dataResolverAtExpiry,\n uint256 _reqCollateral,\n uint256 _lotSize,\n uint256 _strikePrice,\n uint256 _expiry,\n bool _isEuro, // MUST be specified\n bool _isPut // MUST be specified\n )\n public\n returns (bool)\n {\n require(piggies[_tokenId].addresses.holder == msg.sender, \"you must own the RFP to update it\");\n require(piggies[_tokenId].flags.isRequest, \"you can only update an RFP\");\n uint256 expiryBlock;\n if (_collateralERC != address(0)) {\n piggies[_tokenId].addresses.collateralERC = _collateralERC;\n }\n if (_premiumERC != address(0)) {\n piggies[_tokenId].addresses.premiumERC = _premiumERC;\n }\n if (_dataResolverNow != address(0)) {\n piggies[_tokenId].addresses.dataResolverNow = _dataResolverNow;\n }\n if (_dataResolverAtExpiry != address(0)) {\n piggies[_tokenId].addresses.dataResolverAtExpiry = _dataResolverAtExpiry;\n }\n if (_reqCollateral != 0) {\n piggies[_tokenId].uintDetails.reqCollateral = _reqCollateral;\n }\n if (_lotSize != 0) {\n piggies[_tokenId].uintDetails.lotSize = _lotSize;\n }\n if (_strikePrice != 0 ) {\n piggies[_tokenId].uintDetails.strikePrice = _strikePrice;\n }\n if (_expiry != 0) {\n // should this redo the expiry calculation? to be consistent w/ how the creation function works ?\n expiryBlock = _expiry.add(block.number);\n piggies[_tokenId].uintDetails.expiry = expiryBlock;\n }\n piggies[_tokenId].flags.isEuro = _isEuro;\n piggies[_tokenId].flags.isPut = _isPut;\n\n emit UpdateRFP(\n msg.sender,\n _tokenId,\n _collateralERC,\n _premiumERC,\n _dataResolverNow,\n _dataResolverAtExpiry,\n _reqCollateral,\n _lotSize,\n _strikePrice,\n expiryBlock,\n _isEuro,\n _isPut\n );\n\n return true;\n }\n\n // this function can be used to burn any token; if it is an option, will return collateral before burning\n function reclaimAndBurn(uint256 _tokenId)\n public\n returns (bool)\n {\n require(msg.sender == piggies[_tokenId].addresses.holder, \"you must own the token to burn it\");\n require(!auctions[_tokenId].auctionActive, \"you cannot burn a token which is on auction\");\n if (!piggies[_tokenId].flags.isRequest) {\n require(msg.sender == piggies[_tokenId].addresses.writer, \"you must own the collateral to reclaim it\");\n // return the collateral to sender\n PaymentToken(piggies[_tokenId].addresses.collateralERC).transfer(msg.sender, piggies[_tokenId].uintDetails.collateral);\n }\n emit ReclaimAndBurn(msg.sender, _tokenId, piggies[_tokenId].flags.isRequest);\n //remove id from index mapping\n _removeTokenFromOwnedPiggies(piggies[_tokenId].addresses.holder, _tokenId);\n // burn the token (zero out storage fields)\n _resetPiggy(_tokenId);\n return true;\n }\n\n function _clearAuctionDetails(uint256 _tokenId)\n internal\n {\n auctions[_tokenId].startBlock = 0;\n auctions[_tokenId].expiryBlock = 0;\n auctions[_tokenId].startPrice = 0;\n auctions[_tokenId].reservePrice = 0;\n auctions[_tokenId].timeStep = 0;\n auctions[_tokenId].priceStep = 0;\n auctions[_tokenId].auctionActive = false;\n // I don't think we want this one to touch the two state flags; handle those on a per-function basis in the order that makes sense probably\n // MIGHT be ok to set auctionActive = false here though actually...\n }\n\n function startAuction(\n uint256 _tokenId,\n uint256 _startPrice,\n uint256 _reservePrice,\n uint256 _auctionLength,\n uint256 _timeStep,\n uint256 _priceStep\n )\n external\n returns (bool)\n {\n uint256 _auctionExpiry = block.number.add(_auctionLength);\n require(piggies[_tokenId].addresses.holder == msg.sender, \"you must own a token to auction it\");\n require(piggies[_tokenId].uintDetails.expiry > block.number, \"option must not be expired\");\n require(piggies[_tokenId].uintDetails.expiry > _auctionExpiry, \"auction cannot expire after the option\");\n require(!piggies[_tokenId].flags.hasBeenCleared, \"option cannot have been cleared\");\n require(!auctions[_tokenId].auctionActive, \"auction cannot already be running\");\n // as specified below, this is not needed if we change the function (as I have done) to accept an _auctionLength rather than a direct _auctionExpiry value\n //require(_auctionExpiry > block.number, \"auction must expire in the future\"); // DO WE WANT TO ALSO ADD A BUFFER HERE? LIKE IT MUST EXPIRE AT LEAST XX BLOCKS IN THE FUTURE?\n if (piggies[_tokenId].flags.isRequest) {\n bool success = attemptPaymentTransfer(\n piggies[_tokenId].addresses.premiumERC,\n msg.sender,\n address(this),\n _reservePrice // this should be the max the requestor is willing to pay in a reverse dutch auction\n );\n require(success, \"transferFrom did not return true\");\n }\n // if we made it past the various checks, set the auction metadata up in auctions mapping\n auctions[_tokenId].startBlock = block.number;\n auctions[_tokenId].expiryBlock = _auctionExpiry;\n auctions[_tokenId].startPrice = _startPrice;\n auctions[_tokenId].reservePrice = _reservePrice;\n auctions[_tokenId].timeStep = _timeStep;\n auctions[_tokenId].priceStep = _priceStep;\n auctions[_tokenId].auctionActive = true;\n\n emit StartAuction(\n msg.sender,\n _tokenId,\n _startPrice,\n _reservePrice,\n _auctionLength,\n _timeStep,\n _priceStep\n );\n\n return true;\n }\n\n function endAuction(uint256 _tokenId)\n public\n returns (bool)\n {\n require(piggies[_tokenId].addresses.holder == msg.sender, \"you must own a token to auction it\");\n require(auctions[_tokenId].auctionActive, \"auction must be active to cancel it\");\n require(!auctions[_tokenId].satisfyInProgress, \"auction cannot be in the process of being satisfied\"); // this should be added to other functions as well\n if (piggies[_tokenId].flags.isRequest) {\n // refund the _reservePrice premium\n uint256 _premiumToReturn = auctions[_tokenId].reservePrice;\n //auctions[_tokenId].reservePrice = 0; // this sort of offends my sensibilities because we only zero out one auction param, but it is the only one required to change for this logic to work\n PaymentToken(piggies[_tokenId].addresses.premiumERC).transfer(msg.sender, _premiumToReturn);\n }\n _clearAuctionDetails(_tokenId);\n emit EndAuction(msg.sender, _tokenId, piggies[_tokenId].flags.isRequest);\n return true;\n }\n\n // calculate the price for satisfaction of an auction\n // this is an interpolated linear price based on the supplied auction parameters at a resolution of 1 block\n function getAuctionPrice(uint256 _tokenId)\n internal\n view\n returns (uint256)\n {\n // I think we can skip various checks here since they will be in the satisfyAuction function instead\n // (e.g. making sure auction is active and not expired, etc. etc.)\n uint256 _pStart = auctions[_tokenId].startPrice;\n // price delta is (time elapsed) * (price change per time step)\n uint256 _pDelta = (block.number).sub(auctions[_tokenId].startBlock).mul(auctions[_tokenId].priceStep).div(auctions[_tokenId].timeStep);\n if (piggies[_tokenId].flags.isRequest) {\n return _pStart.add(_pDelta);\n } else {\n return (_pStart.sub(_pDelta));\n }\n }\n\n // consider possible attacks and refactor if needed\n function satisfyAuction(uint256 _tokenId)\n public\n returns (bool)\n {\n require(!auctions[_tokenId].satisfyInProgress, \"cannot reenter this function while it is in progress\");\n require(piggies[_tokenId].addresses.holder != msg.sender, \"cannot satisfy your own auction; use endAuction instead\");\n require(auctions[_tokenId].auctionActive, \"auction must be active to satisfy it\");\n // if auction is \"active\" according to state but has expired, change state\n if (auctions[_tokenId].expiryBlock < block.number) {\n //auctions[_tokenId].auctionActive = false; // handled by _clearAuctionDetails now\n _clearAuctionDetails(_tokenId);\n return false;\n }\n // get linear auction premium; reserve price should be a ceiling or floor depending on whether this is an RFP or an option, respectively\n uint256 _auctionPremium = getAuctionPrice(_tokenId);\n // lock mutex\n auctions[_tokenId].satisfyInProgress = true;\n if (piggies[_tokenId].flags.isRequest) {\n // msg.sender needs to delegate reqCollateral\n bool success = attemptPaymentTransfer(\n piggies[_tokenId].addresses.collateralERC,\n msg.sender,\n address(this),\n piggies[_tokenId].uintDetails.reqCollateral\n );\n if (!success) {\n auctions[_tokenId].satisfyInProgress = false;\n return false;\n }\n // if the collateral transfer succeeded, collateral gets set to reqCollateral\n piggies[_tokenId].uintDetails.collateral = piggies[_tokenId].uintDetails.reqCollateral;\n // calculate adjusted premium (based on reservePrice) + possible change due back to current holder\n uint256 _change = 0;\n uint256 _adjPremium = _auctionPremium;\n if (_adjPremium > auctions[_tokenId].reservePrice) {\n _adjPremium = auctions[_tokenId].reservePrice;\n } else {\n _change = auctions[_tokenId].reservePrice.sub(_adjPremium);\n }\n // current holder pays premium (via amount already delegated to this contract in startAuction)\n PaymentToken(piggies[_tokenId].addresses.premiumERC).transfer(msg.sender, _adjPremium);\n // current holder receives any change due\n if (_change > 0) {\n PaymentToken(piggies[_tokenId].addresses.premiumERC).transfer(piggies[_tokenId].addresses.holder, _change);\n }\n // isRequest becomes false\n piggies[_tokenId].flags.isRequest = false;\n // msg.sender becomes writer\n piggies[_tokenId].addresses.writer = msg.sender;\n\n emit SatisfyAuction(\n msg.sender,\n _tokenId,\n _adjPremium,\n _change,\n _auctionPremium\n );\n\n } else {\n // calculate the adjusted premium based on reservePrice\n uint256 _adjPremium = _auctionPremium;\n if (_adjPremium < auctions[_tokenId].reservePrice) {\n _adjPremium = auctions[_tokenId].reservePrice;\n }\n // msg.sender pays (adjusted) premium\n bool success = attemptPaymentTransfer(\n piggies[_tokenId].addresses.premiumERC,\n msg.sender,\n piggies[_tokenId].addresses.holder, // should the SP contract escrow it first?\n _adjPremium\n );\n if (!success) {\n auctions[_tokenId].satisfyInProgress = false;\n return false;\n }\n // msg.sender becomes holder\n _internalTransfer(piggies[_tokenId].addresses.holder, msg.sender, _tokenId);\n\n emit SatisfyAuction(\n msg.sender,\n _tokenId,\n _adjPremium,\n 0,\n _auctionPremium\n );\n\n }\n // auction is ended\n _clearAuctionDetails(_tokenId);\n // mutex released\n auctions[_tokenId].satisfyInProgress = false;\n return true;\n }\n\n /** @notice Call the oracle to fetch the settlement price\n @dev Throws if `_tokenId` is not a valid ERC-59 token.\n Throws if `_oracle` is not a valid contract address.\n Throws if `onMarket(_tokenId)` is true.\n If `isEuro` is true for the specified token, throws if `_expiry` > block.number.\n If `isEuro` is true for the specified token, throws if `_priceNow` is true. [OR specify that it flips that to false always (?)]\n If `priceNow` is true, throws if block.number > `_expiry` for the specified token.\n If `priceNow` is false, throws if block.number < `_expiry` for the specified token.\n If `priceNow` is true, calls the oracle to request the `_underlyingNow` value for the token.\n If `priceNow` is false, calls the oracle to request the `_underlyingExpiry` value for the token.\n Depending on the oracle service implemented, additional state will need to be referenced in\n order to call the oracle, e.g. an endpoint to fetch. This state handling will need to be\n managed on an implementation basis for specific oracle services.\n @param _tokenId The identifier of the specific ERC-59 token for which to fetch a settlement price\n _oracle The address of the oracle contract used to fetch the external settlement price\n _priceNow A boolean for specifying whether to fetch a \"live\" price or a fixed price at\n expiry of the option\n @return The settlement price from the oracle to be used in `settleOption()`\n */\n function requestSettlementPrice(uint256 _tokenId, uint256 _oracleFee) // this should be renamed perhaps, s.t. it is obvious that this is the \"clearing phase\"\n public\n returns (bool)\n {\n require(msg.sender != address(0), \"sender cannot be the zero address\");\n //what check should be done to check that piggy is active?\n require(!auctions[_tokenId].auctionActive, \"cannot clear a token while auction is active\");\n require(!piggies[_tokenId].flags.hasBeenCleared, \"token has already been cleared\"); // this is potentially problematic in the case of \"garbage data\"\n require(_tokenId != 0, \"_tokenId cannot be zero\");\n require(_oracleFee != 0, \"oracle fee cannot be zero\");\n //if Euro require past expiry\n if (piggies[_tokenId].flags.isEuro) {\n require(piggies[_tokenId].uintDetails.expiry <= block.number);\n }\n //fetch data from dataResolver contract\n address _dataResolver;\n if (piggies[_tokenId].flags.isEuro || (piggies[_tokenId].uintDetails.expiry < block.number))\n {\n _dataResolver = piggies[_tokenId].addresses.dataResolverAtExpiry;\n } else {\n require(msg.sender == piggies[_tokenId].addresses.holder, \"only the holder can settle an American style option before expiry\");\n _dataResolver = piggies[_tokenId].addresses.dataResolverNow;\n }\n require(_callResolver(_dataResolver, msg.sender, _oracleFee, _tokenId), \"call to resolver did not return true\");\n return true;\n }\n\n function _callResolver(address _dataResolver, address _feePayer, uint256 _oracleFee, uint256 _tokenId)\n internal\n returns (bool)\n {\n (bool success, ) = address(_dataResolver).call(\n abi.encodeWithSignature(\"fetchData(address,uint256,uint256)\", _feePayer, _oracleFee, _tokenId)\n );\n require(success, \"fetch success did not return true\");\n\n emit RequestSettlementPrice(\n _feePayer,\n _tokenId,\n _oracleFee,\n _dataResolver\n );\n\n return true;\n }\n\n function _callback(\n uint256 _tokenId,\n uint256 _price\n )\n public\n {\n address _dataResolver;\n if (piggies[_tokenId].flags.isEuro || (piggies[_tokenId].uintDetails.expiry < block.number))\n {\n _dataResolver = piggies[_tokenId].addresses.dataResolverAtExpiry;\n } else {\n _dataResolver = piggies[_tokenId].addresses.dataResolverNow;\n }\n require(msg.sender == _dataResolver, \"resolve address was not correct\"); // MUST restrict a call to only the resolver address\n piggies[_tokenId].uintDetails.settlementPrice = _price;\n piggies[_tokenId].flags.hasBeenCleared = true;\n\n emit OracleReturned(\n msg.sender,\n _tokenId,\n _price\n );\n\n }\n\n // this appears to basically be redundant w/ requestSettlementPrice\n // function clearOption(uint256 _tokenId)\n // public\n // returns (bool)\n // {\n // require(msg.sender != address(0));\n // //require(ownerOf(_piggyId) == msg.sender);\n // //what check should be done to check that piggy is active?\n // require(_tokenId != 0);\n\n // //Get a price from the oracle\n // piggies[_tokenId].requestId = requestSettlementPrice(_tokenId);\n\n // return true;\n // }\n\n function _calculateLongPayout(\n bool _isPut,\n uint256 _exercisePrice,\n uint256 _strikePrice,\n uint256 _lotSize,\n uint8 _decimals\n )\n internal\n pure\n returns (uint256 _payout)\n {\n if (_isPut && (_strikePrice > _exercisePrice)) {\n _payout = _strikePrice.sub(_exercisePrice);\n }\n if (!_isPut && (_exercisePrice > _strikePrice)) {\n _payout = _exercisePrice.sub(_strikePrice);\n }\n _payout = _payout.mul(10**uint256(_decimals)).mul(_lotSize).div(100);\n return _payout;\n }\n\n // calculate settlement using oracle's callback data\n // needs to have _settlementPrice from oracle\n // options math goes here -- conditionals based on call/put\n /** @notice Calculate the settlement of ownership of option collateral\n @dev Throws if `_tokenId` is not a valid ERC-59 token.\n Throws if msg.sender is not one of: seller, owner of `_tokenId`.\n Throws if `hasSettlementPrice(_tokenId)` is false.\n\n [Option settlement math goes here for call / put situations]\n\n */\n function settlePiggy(uint256 _tokenId)\n public\n returns (bool)\n {\n require(msg.sender != address(0), \"msg.sender cannot be zero\");\n require(_tokenId != 0, \"tokenId cannot be zero\");\n require(piggies[_tokenId].flags.hasBeenCleared, \"piggy has not received an oracle price\");\n\n uint256 payout;\n\n if(piggies[_tokenId].flags.isEuro) {\n require(piggies[_tokenId].uintDetails.expiry <= block.number, \"European option needs to be expired\");\n }\n payout = _calculateLongPayout(\n piggies[_tokenId].flags.isPut,\n piggies[_tokenId].uintDetails.settlementPrice,\n piggies[_tokenId].uintDetails.strikePrice,\n piggies[_tokenId].uintDetails.lotSize,\n piggies[_tokenId].uintDetails.collateralDecimals\n );\n\n // set the balances of the two counterparties based on the payout\n address _writer = piggies[_tokenId].addresses.writer;\n address _holder = piggies[_tokenId].addresses.holder;\n address _collateralERC = piggies[_tokenId].addresses.collateralERC;\n\n if (payout > piggies[_tokenId].uintDetails.collateral) {\n payout = piggies[_tokenId].uintDetails.collateral;\n }\n ERC20balances[_holder][_collateralERC] = ERC20balances[_holder][_collateralERC].add(payout);\n ERC20balances[_writer][_collateralERC] = piggies[_tokenId].uintDetails.collateral.sub(payout);\n\n emit SettlePiggy(\n msg.sender,\n _tokenId,\n payout,\n piggies[_tokenId].uintDetails.collateral.sub(payout)\n );\n\n _removeTokenFromOwnedPiggies(_holder, _tokenId);\n //clean up piggyId\n _resetPiggy(_tokenId);\n return true;\n }\n\n // claim payout - pull payment\n // sends any reference ERC-20 which the _claimant is owed (as a result of an auction or settlement)\n function claimPayout(address _paymentToken, uint256 _amount)\n public\n returns (bool)\n {\n require(_amount <= ERC20balances[msg.sender][_paymentToken], \"ERC20 balance is less than requested amount\");\n ERC20balances[msg.sender][_paymentToken] = ERC20balances[msg.sender][_paymentToken].sub(_amount);\n //require(token(_stableToken).transfer(msg.sender, balanceOf(msg.sender))), \"Unable to transfer\");\n (bool success, ) = address(PaymentToken(_paymentToken)).call(\n abi.encodeWithSignature(\n \"transfer(address,uint256)\",\n msg.sender,\n _amount\n )\n );\n require(success, \"ERC20 token transfer failed\");\n\n emit ClaimPayout(\n msg.sender,\n _amount,\n _paymentToken\n );\n\n return true;\n }\n\n function _addTokenToOwnedPiggies(address _to, uint256 _tokenId)\n private\n {\n ownedPiggiesIndex[_tokenId] = ownedPiggies[_to].length;\n ownedPiggies[_to].push(_tokenId);\n }\n\n function _removeTokenFromOwnedPiggies(address _from, uint256 _tokenId)\n private\n {\n uint256 lastTokenIndex = ownedPiggies[_from].length.sub(1);\n uint256 tokenIndex = ownedPiggiesIndex[_tokenId];\n\n if (tokenIndex != lastTokenIndex) {\n uint256 lastTokenId = ownedPiggies[_from][lastTokenIndex];\n ownedPiggies[_from][tokenIndex] = lastTokenId;\n ownedPiggiesIndex[lastTokenId] = tokenIndex;\n }\n ownedPiggies[_from].length--;\n }\n\n function _resetPiggy(uint256 _tokenId)\n private\n {\n piggies[_tokenId].addresses.writer = address(0);\n piggies[_tokenId].addresses.holder = address(0);\n piggies[_tokenId].addresses.collateralERC = address(0);\n piggies[_tokenId].addresses.premiumERC = address(0);\n piggies[_tokenId].addresses.dataResolverNow = address(0);\n piggies[_tokenId].addresses.dataResolverAtExpiry = address(0);\n piggies[_tokenId].uintDetails.collateral = 0;\n piggies[_tokenId].uintDetails.lotSize = 0;\n piggies[_tokenId].uintDetails.strikePrice = 0;\n piggies[_tokenId].uintDetails.expiry = 0;\n piggies[_tokenId].uintDetails.settlementPrice = 0;\n piggies[_tokenId].uintDetails.reqCollateral = 0;\n piggies[_tokenId].uintDetails.collateralDecimals = 0;\n piggies[_tokenId].flags.isRequest = false;\n piggies[_tokenId].flags.isEuro = false;\n piggies[_tokenId].flags.isPut = false;\n piggies[_tokenId].flags.hasBeenCleared = false;\n }\n\n function kill()\n public\n {\n require(msg.sender == owner);\n selfdestruct(owner);\n }\n}\n", + "sourcePath": "/home/vagrant/DAPPS/smartpiggiesGithub/amerigo/explorer/contracts/SmartPiggies.sol", + "ast": { + "absolutePath": "/home/vagrant/DAPPS/smartpiggiesGithub/amerigo/explorer/contracts/SmartPiggies.sol", + "exportedSymbols": { + "PaymentToken": [ + 274 + ], + "SmartPiggies": [ + 2805 + ] + }, + "id": 2806, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 247, + "literals": [ + "solidity", + ">=", + "0.4", + ".24", + "<", + "0.6", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "750:32:4" + }, + { + "id": 248, + "literals": [ + "experimental", + "ABIEncoderV2" + ], + "nodeType": "PragmaDirective", + "src": "783:33:4" + }, + { + "baseContracts": [], + "contractDependencies": [], + "contractKind": "interface", + "documentation": null, + "fullyImplemented": false, + "id": 274, + "linearizedBaseContracts": [ + 274 + ], + "name": "PaymentToken", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": null, + "documentation": null, + "id": 259, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "transferFrom", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 255, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 250, + "name": "from", + "nodeType": "VariableDeclaration", + "scope": 259, + "src": "1067:12:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 249, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1067:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 252, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 259, + "src": "1081:10:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 251, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1081:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 254, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 259, + "src": "1093:13:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 253, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1093:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1066:41:4" + }, + "returnParameters": { + "id": 258, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 257, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 259, + "src": "1126:4:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 256, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1126:4:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1125:6:4" + }, + "scope": 274, + "src": "1045:87:4", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "external" + }, + { + "body": null, + "documentation": null, + "id": 268, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "transfer", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 264, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 261, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 268, + "src": "1153:10:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 260, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1153:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 263, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 268, + "src": "1165:13:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 262, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1165:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1152:27:4" + }, + "returnParameters": { + "id": 267, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 266, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 268, + "src": "1198:4:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 265, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1198:4:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1197:6:4" + }, + "scope": 274, + "src": "1135:69:4", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "external" + }, + { + "body": null, + "documentation": null, + "id": 273, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "decimals", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 269, + "nodeType": "ParameterList", + "parameters": [], + "src": "1224:2:4" + }, + "returnParameters": { + "id": 272, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 271, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 273, + "src": "1245:5:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 270, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "1245:5:4", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1244:7:4" + }, + "scope": 274, + "src": "1207:45:4", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "external" + } + ], + "scope": 2806, + "src": "1018:236:4" + }, + { + "absolutePath": "/home/vagrant/DAPPS/smartpiggiesGithub/amerigo/explorer/contracts/ERC165.sol", + "file": "./ERC165.sol", + "id": 275, + "nodeType": "ImportDirective", + "scope": 2806, + "sourceUnit": 51, + "src": "1256:22:4", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "/home/vagrant/DAPPS/smartpiggiesGithub/amerigo/explorer/contracts/SafeMath.sol", + "file": "./SafeMath.sol", + "id": 276, + "nodeType": "ImportDirective", + "scope": 2806, + "sourceUnit": 246, + "src": "1279:24:4", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 277, + "name": "ERC165", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 50, + "src": "1393:6:4", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC165_$50", + "typeString": "contract ERC165" + } + }, + "id": 278, + "nodeType": "InheritanceSpecifier", + "src": "1393:6:4" + } + ], + "contractDependencies": [ + 50, + 60 + ], + "contractKind": "contract", + "documentation": "@title ERC-59 (subject to change) Smart Option Standard", + "fullyImplemented": true, + "id": 2805, + "linearizedBaseContracts": [ + 2805, + 50, + 60 + ], + "name": "SmartPiggies", + "nodeType": "ContractDefinition", + "nodes": [ + { + "id": 281, + "libraryName": { + "contractScope": null, + "id": 279, + "name": "SafeMath", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 245, + "src": "1410:8:4", + "typeDescriptions": { + "typeIdentifier": "t_contract$_SafeMath_$245", + "typeString": "library SafeMath" + } + }, + "nodeType": "UsingForDirective", + "src": "1404:27:4", + "typeName": { + "id": 280, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1423:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + { + "constant": false, + "id": 283, + "name": "owner", + "nodeType": "VariableDeclaration", + "scope": 2805, + "src": "1435:21:4", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + "typeName": { + "id": 282, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1435:15:4", + "stateMutability": "payable", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 285, + "name": "tokenId", + "nodeType": "VariableDeclaration", + "scope": 2805, + "src": "1460:22:4", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 284, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1460:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "public" + }, + { + "canonicalName": "SmartPiggies.DetailAddresses", + "id": 298, + "members": [ + { + "constant": false, + "id": 287, + "name": "writer", + "nodeType": "VariableDeclaration", + "scope": 298, + "src": "1516:14:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 286, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1516:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 289, + "name": "holder", + "nodeType": "VariableDeclaration", + "scope": 298, + "src": "1536:14:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 288, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1536:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 291, + "name": "collateralERC", + "nodeType": "VariableDeclaration", + "scope": 298, + "src": "1556:21:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 290, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1556:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 293, + "name": "premiumERC", + "nodeType": "VariableDeclaration", + "scope": 298, + "src": "1583:18:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 292, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1583:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 295, + "name": "dataResolverNow", + "nodeType": "VariableDeclaration", + "scope": 298, + "src": "1607:23:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 294, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1607:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 297, + "name": "dataResolverAtExpiry", + "nodeType": "VariableDeclaration", + "scope": 298, + "src": "1636:28:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 296, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1636:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "name": "DetailAddresses", + "nodeType": "StructDefinition", + "scope": 2805, + "src": "1487:182:4", + "visibility": "public" + }, + { + "canonicalName": "SmartPiggies.DetailUints", + "id": 313, + "members": [ + { + "constant": false, + "id": 300, + "name": "collateral", + "nodeType": "VariableDeclaration", + "scope": 313, + "src": "1698:18:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 299, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1698:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 302, + "name": "lotSize", + "nodeType": "VariableDeclaration", + "scope": 313, + "src": "1722:15:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 301, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1722:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 304, + "name": "strikePrice", + "nodeType": "VariableDeclaration", + "scope": 313, + "src": "1743:19:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 303, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1743:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 306, + "name": "expiry", + "nodeType": "VariableDeclaration", + "scope": 313, + "src": "1768:14:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 305, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1768:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 308, + "name": "settlementPrice", + "nodeType": "VariableDeclaration", + "scope": 313, + "src": "1788:23:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 307, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1788:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 310, + "name": "reqCollateral", + "nodeType": "VariableDeclaration", + "scope": 313, + "src": "1817:21:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 309, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1817:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 312, + "name": "collateralDecimals", + "nodeType": "VariableDeclaration", + "scope": 313, + "src": "1844:24:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 311, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "1844:5:4", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": null, + "visibility": "internal" + } + ], + "name": "DetailUints", + "nodeType": "StructDefinition", + "scope": 2805, + "src": "1673:243:4", + "visibility": "public" + }, + { + "canonicalName": "SmartPiggies.BoolFlags", + "id": 322, + "members": [ + { + "constant": false, + "id": 315, + "name": "isRequest", + "nodeType": "VariableDeclaration", + "scope": 322, + "src": "1943:14:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 314, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1943:4:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 317, + "name": "isEuro", + "nodeType": "VariableDeclaration", + "scope": 322, + "src": "1963:11:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 316, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1963:4:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 319, + "name": "isPut", + "nodeType": "VariableDeclaration", + "scope": 322, + "src": "1980:10:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 318, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1980:4:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 321, + "name": "hasBeenCleared", + "nodeType": "VariableDeclaration", + "scope": 322, + "src": "1996:19:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 320, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1996:4:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "name": "BoolFlags", + "nodeType": "StructDefinition", + "scope": 2805, + "src": "1920:160:4", + "visibility": "public" + }, + { + "canonicalName": "SmartPiggies.DetailAuction", + "id": 339, + "members": [ + { + "constant": false, + "id": 324, + "name": "startBlock", + "nodeType": "VariableDeclaration", + "scope": 339, + "src": "2111:18:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 323, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2111:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 326, + "name": "expiryBlock", + "nodeType": "VariableDeclaration", + "scope": 339, + "src": "2135:19:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 325, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2135:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 328, + "name": "startPrice", + "nodeType": "VariableDeclaration", + "scope": 339, + "src": "2160:18:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 327, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2160:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 330, + "name": "reservePrice", + "nodeType": "VariableDeclaration", + "scope": 339, + "src": "2184:20:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 329, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2184:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 332, + "name": "timeStep", + "nodeType": "VariableDeclaration", + "scope": 339, + "src": "2210:16:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 331, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2210:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 334, + "name": "priceStep", + "nodeType": "VariableDeclaration", + "scope": 339, + "src": "2232:17:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 333, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2232:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 336, + "name": "auctionActive", + "nodeType": "VariableDeclaration", + "scope": 339, + "src": "2255:18:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 335, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "2255:4:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 338, + "name": "satisfyInProgress", + "nodeType": "VariableDeclaration", + "scope": 339, + "src": "2279:22:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 337, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "2279:4:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "name": "DetailAuction", + "nodeType": "StructDefinition", + "scope": 2805, + "src": "2084:311:4", + "visibility": "public" + }, + { + "canonicalName": "SmartPiggies.Piggy", + "id": 346, + "members": [ + { + "constant": false, + "id": 341, + "name": "addresses", + "nodeType": "VariableDeclaration", + "scope": 346, + "src": "2418:25:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAddresses_$298_storage_ptr", + "typeString": "struct SmartPiggies.DetailAddresses" + }, + "typeName": { + "contractScope": null, + "id": 340, + "name": "DetailAddresses", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 298, + "src": "2418:15:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAddresses_$298_storage_ptr", + "typeString": "struct SmartPiggies.DetailAddresses" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 343, + "name": "uintDetails", + "nodeType": "VariableDeclaration", + "scope": 346, + "src": "2467:23:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailUints_$313_storage_ptr", + "typeString": "struct SmartPiggies.DetailUints" + }, + "typeName": { + "contractScope": null, + "id": 342, + "name": "DetailUints", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 313, + "src": "2467:11:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailUints_$313_storage_ptr", + "typeString": "struct SmartPiggies.DetailUints" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 345, + "name": "flags", + "nodeType": "VariableDeclaration", + "scope": 346, + "src": "2513:15:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BoolFlags_$322_storage_ptr", + "typeString": "struct SmartPiggies.BoolFlags" + }, + "typeName": { + "contractScope": null, + "id": 344, + "name": "BoolFlags", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 322, + "src": "2513:9:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BoolFlags_$322_storage_ptr", + "typeString": "struct SmartPiggies.BoolFlags" + } + }, + "value": null, + "visibility": "internal" + } + ], + "name": "Piggy", + "nodeType": "StructDefinition", + "scope": 2805, + "src": "2399:155:4", + "visibility": "public" + }, + { + "constant": false, + "id": 352, + "name": "ERC20balances", + "nodeType": "VariableDeclaration", + "scope": 2805, + "src": "2558:70:4", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + }, + "typeName": { + "id": 351, + "keyType": { + "id": 347, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2567:7:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "2558:48:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + }, + "valueType": { + "id": 350, + "keyType": { + "id": 348, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2586:7:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "2578:27:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + }, + "valueType": { + "id": 349, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2597:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + } + }, + "value": null, + "visibility": "private" + }, + { + "constant": false, + "id": 357, + "name": "ownedPiggies", + "nodeType": "VariableDeclaration", + "scope": 2805, + "src": "2632:51:4", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_uint256_$dyn_storage_$", + "typeString": "mapping(address => uint256[])" + }, + "typeName": { + "id": 356, + "keyType": { + "id": 353, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2641:7:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "2632:30:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_uint256_$dyn_storage_$", + "typeString": "mapping(address => uint256[])" + }, + "valueType": { + "baseType": { + "id": 354, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2652:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 355, + "length": null, + "nodeType": "ArrayTypeName", + "src": "2652:9:4", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + } + }, + "value": null, + "visibility": "private" + }, + { + "constant": false, + "id": 361, + "name": "ownedPiggiesIndex", + "nodeType": "VariableDeclaration", + "scope": 2805, + "src": "2704:54:4", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$", + "typeString": "mapping(uint256 => uint256)" + }, + "typeName": { + "id": 360, + "keyType": { + "id": 358, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2713:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Mapping", + "src": "2704:28:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$", + "typeString": "mapping(uint256 => uint256)" + }, + "valueType": { + "id": 359, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2724:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "value": null, + "visibility": "private" + }, + { + "constant": false, + "id": 365, + "name": "piggies", + "nodeType": "VariableDeclaration", + "scope": 2805, + "src": "2762:42:4", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy)" + }, + "typeName": { + "id": 364, + "keyType": { + "id": 362, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2771:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Mapping", + "src": "2762:26:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy)" + }, + "valueType": { + "contractScope": null, + "id": 363, + "name": "Piggy", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 346, + "src": "2782:5:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage_ptr", + "typeString": "struct SmartPiggies.Piggy" + } + } + }, + "value": null, + "visibility": "private" + }, + { + "constant": false, + "id": 369, + "name": "auctions", + "nodeType": "VariableDeclaration", + "scope": 2805, + "src": "2808:51:4", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_DetailAuction_$339_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.DetailAuction)" + }, + "typeName": { + "id": 368, + "keyType": { + "id": 366, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2817:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Mapping", + "src": "2808:34:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_DetailAuction_$339_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.DetailAuction)" + }, + "valueType": { + "contractScope": null, + "id": 367, + "name": "DetailAuction", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 339, + "src": "2828:13:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAuction_$339_storage_ptr", + "typeString": "struct SmartPiggies.DetailAuction" + } + } + }, + "value": null, + "visibility": "private" + }, + { + "anonymous": false, + "documentation": null, + "id": 381, + "name": "CreatePiggy", + "nodeType": "EventDefinition", + "parameters": { + "id": 380, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 371, + "indexed": true, + "name": "from", + "nodeType": "VariableDeclaration", + "scope": 381, + "src": "2913:20:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 370, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2913:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 373, + "indexed": true, + "name": "tokenId", + "nodeType": "VariableDeclaration", + "scope": 381, + "src": "2941:23:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 372, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2941:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 375, + "indexed": true, + "name": "strike", + "nodeType": "VariableDeclaration", + "scope": 381, + "src": "2972:22:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 374, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2972:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 377, + "indexed": false, + "name": "expiryBlock", + "nodeType": "VariableDeclaration", + "scope": 381, + "src": "3002:19:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 376, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3002:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 379, + "indexed": false, + "name": "RFP", + "nodeType": "VariableDeclaration", + "scope": 381, + "src": "3029:8:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 378, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "3029:4:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2905:136:4" + }, + "src": "2888:154:4" + }, + { + "anonymous": false, + "documentation": null, + "id": 389, + "name": "TransferPiggy", + "nodeType": "EventDefinition", + "parameters": { + "id": 388, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 383, + "indexed": true, + "name": "from", + "nodeType": "VariableDeclaration", + "scope": 389, + "src": "3073:20:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 382, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3073:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 385, + "indexed": true, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 389, + "src": "3101:18:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 384, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3101:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 387, + "indexed": true, + "name": "tokenId", + "nodeType": "VariableDeclaration", + "scope": 389, + "src": "3127:23:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 386, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3127:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3065:89:4" + }, + "src": "3046:109:4" + }, + { + "anonymous": false, + "documentation": null, + "id": 415, + "name": "UpdateRFP", + "nodeType": "EventDefinition", + "parameters": { + "id": 414, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 391, + "indexed": true, + "name": "from", + "nodeType": "VariableDeclaration", + "scope": 415, + "src": "3182:20:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 390, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3182:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 393, + "indexed": true, + "name": "tokenId", + "nodeType": "VariableDeclaration", + "scope": 415, + "src": "3210:23:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 392, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3210:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 395, + "indexed": false, + "name": "collateralERC", + "nodeType": "VariableDeclaration", + "scope": 415, + "src": "3241:21:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 394, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3241:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 397, + "indexed": false, + "name": "premiumERC", + "nodeType": "VariableDeclaration", + "scope": 415, + "src": "3270:18:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 396, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3270:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 399, + "indexed": false, + "name": "dataResolverNow", + "nodeType": "VariableDeclaration", + "scope": 415, + "src": "3296:23:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 398, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3296:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 401, + "indexed": false, + "name": "dataResolverAtExpiry", + "nodeType": "VariableDeclaration", + "scope": 415, + "src": "3327:28:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 400, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3327:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 403, + "indexed": false, + "name": "reqCollateral", + "nodeType": "VariableDeclaration", + "scope": 415, + "src": "3363:21:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 402, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3363:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 405, + "indexed": false, + "name": "lotSize", + "nodeType": "VariableDeclaration", + "scope": 415, + "src": "3392:15:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 404, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3392:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 407, + "indexed": false, + "name": "strikePrice", + "nodeType": "VariableDeclaration", + "scope": 415, + "src": "3415:19:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 406, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3415:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 409, + "indexed": false, + "name": "expiry", + "nodeType": "VariableDeclaration", + "scope": 415, + "src": "3442:14:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 408, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3442:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 411, + "indexed": false, + "name": "isEuro", + "nodeType": "VariableDeclaration", + "scope": 415, + "src": "3464:11:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 410, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "3464:4:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 413, + "indexed": false, + "name": "isPut", + "nodeType": "VariableDeclaration", + "scope": 415, + "src": "3483:10:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 412, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "3483:4:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3174:323:4" + }, + "src": "3159:339:4" + }, + { + "anonymous": false, + "documentation": null, + "id": 423, + "name": "ReclaimAndBurn", + "nodeType": "EventDefinition", + "parameters": { + "id": 422, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 417, + "indexed": true, + "name": "from", + "nodeType": "VariableDeclaration", + "scope": 423, + "src": "3530:20:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 416, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3530:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 419, + "indexed": true, + "name": "tokenId", + "nodeType": "VariableDeclaration", + "scope": 423, + "src": "3558:23:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 418, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3558:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 421, + "indexed": true, + "name": "RFP", + "nodeType": "VariableDeclaration", + "scope": 423, + "src": "3589:16:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 420, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "3589:4:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3522:87:4" + }, + "src": "3502:108:4" + }, + { + "anonymous": false, + "documentation": null, + "id": 439, + "name": "StartAuction", + "nodeType": "EventDefinition", + "parameters": { + "id": 438, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 425, + "indexed": true, + "name": "from", + "nodeType": "VariableDeclaration", + "scope": 439, + "src": "3640:20:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 424, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3640:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 427, + "indexed": true, + "name": "tokenId", + "nodeType": "VariableDeclaration", + "scope": 439, + "src": "3668:23:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 426, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3668:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 429, + "indexed": false, + "name": "startPrice", + "nodeType": "VariableDeclaration", + "scope": 439, + "src": "3699:18:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 428, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3699:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 431, + "indexed": false, + "name": "reservePrice", + "nodeType": "VariableDeclaration", + "scope": 439, + "src": "3725:20:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 430, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3725:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 433, + "indexed": false, + "name": "auctionLength", + "nodeType": "VariableDeclaration", + "scope": 439, + "src": "3753:21:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 432, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3753:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 435, + "indexed": false, + "name": "timeStep", + "nodeType": "VariableDeclaration", + "scope": 439, + "src": "3782:16:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 434, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3782:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 437, + "indexed": false, + "name": "priceStep", + "nodeType": "VariableDeclaration", + "scope": 439, + "src": "3806:17:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 436, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3806:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3632:195:4" + }, + "src": "3614:214:4" + }, + { + "anonymous": false, + "documentation": null, + "id": 447, + "name": "EndAuction", + "nodeType": "EventDefinition", + "parameters": { + "id": 446, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 441, + "indexed": true, + "name": "from", + "nodeType": "VariableDeclaration", + "scope": 447, + "src": "3856:20:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 440, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3856:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 443, + "indexed": true, + "name": "tokenId", + "nodeType": "VariableDeclaration", + "scope": 447, + "src": "3884:23:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 442, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3884:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 445, + "indexed": true, + "name": "RFP", + "nodeType": "VariableDeclaration", + "scope": 447, + "src": "3915:16:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 444, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "3915:4:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3848:87:4" + }, + "src": "3832:104:4" + }, + { + "anonymous": false, + "documentation": null, + "id": 459, + "name": "SatisfyAuction", + "nodeType": "EventDefinition", + "parameters": { + "id": 458, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 449, + "indexed": true, + "name": "from", + "nodeType": "VariableDeclaration", + "scope": 459, + "src": "3968:20:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 448, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3968:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 451, + "indexed": true, + "name": "tokenId", + "nodeType": "VariableDeclaration", + "scope": 459, + "src": "3996:23:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 450, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3996:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 453, + "indexed": false, + "name": "paidPremium", + "nodeType": "VariableDeclaration", + "scope": 459, + "src": "4027:19:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 452, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4027:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 455, + "indexed": false, + "name": "change", + "nodeType": "VariableDeclaration", + "scope": 459, + "src": "4054:14:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 454, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4054:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 457, + "indexed": false, + "name": "auctionPremium", + "nodeType": "VariableDeclaration", + "scope": 459, + "src": "4076:22:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 456, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4076:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3960:142:4" + }, + "src": "3940:163:4" + }, + { + "anonymous": false, + "documentation": null, + "id": 469, + "name": "RequestSettlementPrice", + "nodeType": "EventDefinition", + "parameters": { + "id": 468, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 461, + "indexed": true, + "name": "feePayer", + "nodeType": "VariableDeclaration", + "scope": 469, + "src": "4143:24:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 460, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4143:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 463, + "indexed": true, + "name": "tokenId", + "nodeType": "VariableDeclaration", + "scope": 469, + "src": "4175:23:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 462, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4175:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 465, + "indexed": false, + "name": "oracleFee", + "nodeType": "VariableDeclaration", + "scope": 469, + "src": "4206:17:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 464, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4206:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 467, + "indexed": false, + "name": "dataResolver", + "nodeType": "VariableDeclaration", + "scope": 469, + "src": "4231:20:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 466, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4231:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4135:120:4" + }, + "src": "4107:149:4" + }, + { + "anonymous": false, + "documentation": null, + "id": 477, + "name": "OracleReturned", + "nodeType": "EventDefinition", + "parameters": { + "id": 476, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 471, + "indexed": true, + "name": "resolver", + "nodeType": "VariableDeclaration", + "scope": 477, + "src": "4288:24:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 470, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4288:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 473, + "indexed": true, + "name": "tokenId", + "nodeType": "VariableDeclaration", + "scope": 477, + "src": "4320:23:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 472, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4320:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 475, + "indexed": true, + "name": "price", + "nodeType": "VariableDeclaration", + "scope": 477, + "src": "4351:21:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 474, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4351:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4280:96:4" + }, + "src": "4260:117:4" + }, + { + "anonymous": false, + "documentation": null, + "id": 487, + "name": "SettlePiggy", + "nodeType": "EventDefinition", + "parameters": { + "id": 486, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 479, + "indexed": true, + "name": "from", + "nodeType": "VariableDeclaration", + "scope": 487, + "src": "4405:20:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 478, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4405:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 481, + "indexed": true, + "name": "tokenId", + "nodeType": "VariableDeclaration", + "scope": 487, + "src": "4432:23:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 480, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4432:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 483, + "indexed": true, + "name": "holderPayout", + "nodeType": "VariableDeclaration", + "scope": 487, + "src": "4462:28:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 482, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4462:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 485, + "indexed": false, + "name": "writerPayout", + "nodeType": "VariableDeclaration", + "scope": 487, + "src": "4497:20:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 484, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4497:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4398:123:4" + }, + "src": "4381:141:4" + }, + { + "anonymous": false, + "documentation": null, + "id": 495, + "name": "ClaimPayout", + "nodeType": "EventDefinition", + "parameters": { + "id": 494, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 489, + "indexed": true, + "name": "from", + "nodeType": "VariableDeclaration", + "scope": 495, + "src": "4551:20:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 488, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4551:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 491, + "indexed": true, + "name": "amount", + "nodeType": "VariableDeclaration", + "scope": 495, + "src": "4579:22:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 490, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4579:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 493, + "indexed": true, + "name": "paymentToken", + "nodeType": "VariableDeclaration", + "scope": 495, + "src": "4609:28:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 492, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4609:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4543:98:4" + }, + "src": "4526:116:4" + }, + { + "body": { + "id": 503, + "nodeType": "Block", + "src": "4915:92:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 501, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 498, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 283, + "src": "4945:5:4", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 499, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2820, + "src": "4953:3:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 500, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "4953:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "4945:18:4", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "id": 502, + "nodeType": "ExpressionStatement", + "src": "4945:18:4" + } + ] + }, + "documentation": "constructor should throw if various things aren't properly set\nalso should throw if the contract is not delegated an amount of collateral designated\nin the reference ERC-20 which is >= the collateral value of the piggy", + "id": 504, + "implemented": true, + "kind": "constructor", + "modifiers": [], + "name": "", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 496, + "nodeType": "ParameterList", + "parameters": [], + "src": "4899:2:4" + }, + "returnParameters": { + "id": 497, + "nodeType": "ParameterList", + "parameters": [], + "src": "4915:0:4" + }, + "scope": 2805, + "src": "4888:119:4", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 536, + "nodeType": "Block", + "src": "5180:223:4", + "statements": [ + { + "assignments": [ + 518, + null + ], + "declarations": [ + { + "constant": false, + "id": 518, + "name": "success", + "nodeType": "VariableDeclaration", + "scope": 536, + "src": "5187:12:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 517, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "5187:4:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + }, + null + ], + "id": 533, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "7472616e7366657246726f6d28616464726573732c616464726573732c75696e7432353629", + "id": 527, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5280:39:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_23b872dd7302113369cda2901243429419bec145408fa8b352b3dd92b66c680b", + "typeString": "literal_string \"transferFrom(address,address,uint256)\"" + }, + "value": "transferFrom(address,address,uint256)" + }, + { + "argumentTypes": null, + "id": 528, + "name": "_from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 508, + "src": "5329:5:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 529, + "name": "_to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 510, + "src": "5344:3:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 530, + "name": "_amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 512, + "src": "5357:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_23b872dd7302113369cda2901243429419bec145408fa8b352b3dd92b66c680b", + "typeString": "literal_string \"transferFrom(address,address,uint256)\"" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 525, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2807, + "src": "5247:3:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 526, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "encodeWithSignature", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "5247:23:4", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$", + "typeString": "function (string memory) pure returns (bytes memory)" + } + }, + "id": 531, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5247:125:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 521, + "name": "_ERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 506, + "src": "5226:6:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 520, + "name": "PaymentToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 274, + "src": "5213:12:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_PaymentToken_$274_$", + "typeString": "type(contract PaymentToken)" + } + }, + "id": 522, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5213:20:4", + "typeDescriptions": { + "typeIdentifier": "t_contract$_PaymentToken_$274", + "typeString": "contract PaymentToken" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_PaymentToken_$274", + "typeString": "contract PaymentToken" + } + ], + "id": 519, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "5205:7:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 523, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5205:29:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 524, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "call", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "5205:34:4", + "typeDescriptions": { + "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$", + "typeString": "function (bytes memory) payable returns (bool,bytes memory)" + } + }, + "id": 532, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5205:173:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$", + "typeString": "tuple(bool,bytes memory)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "5186:192:4" + }, + { + "expression": { + "argumentTypes": null, + "id": 534, + "name": "success", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 518, + "src": "5391:7:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 516, + "id": 535, + "nodeType": "Return", + "src": "5384:14:4" + } + ] + }, + "documentation": null, + "id": 537, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "attemptPaymentTransfer", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 513, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 506, + "name": "_ERC20", + "nodeType": "VariableDeclaration", + "scope": 537, + "src": "5086:14:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 505, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5086:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 508, + "name": "_from", + "nodeType": "VariableDeclaration", + "scope": 537, + "src": "5102:13:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 507, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5102:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 510, + "name": "_to", + "nodeType": "VariableDeclaration", + "scope": 537, + "src": "5117:11:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 509, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5117:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 512, + "name": "_amount", + "nodeType": "VariableDeclaration", + "scope": 537, + "src": "5130:15:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 511, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5130:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "5085:61:4" + }, + "returnParameters": { + "id": 516, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 515, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 537, + "src": "5172:4:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 514, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "5172:4:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "5171:6:4" + }, + "scope": 2805, + "src": "5054:349:4", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "private" + }, + { + "body": { + "id": 797, + "nodeType": "Block", + "src": "8764:1864:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 587, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 581, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 575, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 569, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 565, + "name": "_collateralERC", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 539, + "src": "8783:14:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 567, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8809: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": 566, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "8801:7:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 568, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8801:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "8783:28:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 574, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 570, + "name": "_premiumERC", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 541, + "src": "8820:11:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 572, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8843: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": 571, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "8835:7:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 573, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8835:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "8820:25:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "8783:62:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 580, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 576, + "name": "_dataResolverNow", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 543, + "src": "8854:16:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 578, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8882: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": 577, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "8874:7:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 579, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8874:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "8854:30:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "8783:101:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 586, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 582, + "name": "_dataResolverAtExpiry", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 545, + "src": "8893:21:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 584, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8926: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": 583, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "8918:7:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 585, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8918:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "8893:35:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "8783:145:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "6164647265737365732063616e6e6f74206265207a65726f", + "id": 588, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8935:26:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_04b4803be6c06d5f35b7b540ae4bce56518da084f117a7525381eb79fdf75203", + "typeString": "literal_string \"addresses cannot be zero\"" + }, + "value": "addresses cannot be zero" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_04b4803be6c06d5f35b7b540ae4bce56518da084f117a7525381eb79fdf75203", + "typeString": "literal_string \"addresses cannot be zero\"" + } + ], + "id": 564, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2823, + 2824 + ], + "referencedDeclaration": 2824, + "src": "8769:7:4", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 589, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8769:197:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 590, + "nodeType": "ExpressionStatement", + "src": "8769:197:4" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 606, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 602, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 598, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 594, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 592, + "name": "_collateral", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 547, + "src": "8985:11:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 593, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9000:1:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "8985:16:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 597, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 595, + "name": "_lotSize", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 549, + "src": "9010:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 596, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9022:1:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "9010:13:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "8985:38:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 601, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 599, + "name": "_strikePrice", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 551, + "src": "9032:12:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 600, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9048:1:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "9032:17:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "8985:64:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 605, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 603, + "name": "_expiry", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 553, + "src": "9058:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 604, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9069:1:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "9058:12:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "8985:85:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "6f7074696f6e20706172616d65746572732063616e6e6f74206265207a65726f", + "id": 607, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9077:34:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_ac99e164bea37b648bac329df7c0cdace8a6038fe5232a0b7866c4984b85edf8", + "typeString": "literal_string \"option parameters cannot be zero\"" + }, + "value": "option parameters cannot be zero" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_ac99e164bea37b648bac329df7c0cdace8a6038fe5232a0b7866c4984b85edf8", + "typeString": "literal_string \"option parameters cannot be zero\"" + } + ], + "id": 591, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2823, + 2824 + ], + "referencedDeclaration": 2824, + "src": "8971:7:4", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 608, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8971:145:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 609, + "nodeType": "ExpressionStatement", + "src": "8971:145:4" + }, + { + "condition": { + "argumentTypes": null, + "id": 611, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "9190:11:4", + "subExpression": { + "argumentTypes": null, + "id": 610, + "name": "_isRequest", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 559, + "src": "9191:10:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 630, + "nodeType": "IfStatement", + "src": "9186:233:4", + "trueBody": { + "id": 629, + "nodeType": "Block", + "src": "9203:216:4", + "statements": [ + { + "assignments": [ + 613 + ], + "declarations": [ + { + "constant": false, + "id": 613, + "name": "success", + "nodeType": "VariableDeclaration", + "scope": 629, + "src": "9210:12:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 612, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "9210:4:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 623, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 615, + "name": "_collateralERC", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 539, + "src": "9256:14:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 616, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2820, + "src": "9296:3:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 617, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "9296:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 619, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2843, + "src": "9323:4:4", + "typeDescriptions": { + "typeIdentifier": "t_contract$_SmartPiggies_$2805", + "typeString": "contract SmartPiggies" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_SmartPiggies_$2805", + "typeString": "contract SmartPiggies" + } + ], + "id": 618, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "9315:7:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 620, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9315:13:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 621, + "name": "_collateral", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 547, + "src": "9337:11:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 614, + "name": "attemptPaymentTransfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 537, + "src": "9225:22:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,address,address,uint256) returns (bool)" + } + }, + "id": 622, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9225:130:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "9210:145:4" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 625, + "name": "success", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 613, + "src": "9370:7:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "546f6b656e207472616e7366657220646964206e6f7420636f6d706c657465", + "id": 626, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9379:33:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_7dfd8cf2b3edad113675466e31dce9cad239a317a5d8a68bee6c9cb579f1bea2", + "typeString": "literal_string \"Token transfer did not complete\"" + }, + "value": "Token transfer did not complete" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_7dfd8cf2b3edad113675466e31dce9cad239a317a5d8a68bee6c9cb579f1bea2", + "typeString": "literal_string \"Token transfer did not complete\"" + } + ], + "id": 624, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2823, + 2824 + ], + "referencedDeclaration": 2824, + "src": "9362:7:4", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 627, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9362:51:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 628, + "nodeType": "ExpressionStatement", + "src": "9362:51:4" + } + ] + } + }, + { + "expression": { + "argumentTypes": null, + "id": 636, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 631, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 285, + "src": "9536:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "31", + "id": 634, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9558:1:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + } + ], + "expression": { + "argumentTypes": null, + "id": 632, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 285, + "src": "9546:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 633, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 224, + "src": "9546:11:4", + "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": 635, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9546:14:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "9536:24:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 637, + "nodeType": "ExpressionStatement", + "src": "9536:24:4" + }, + { + "assignments": [ + 639 + ], + "declarations": [ + { + "constant": false, + "id": 639, + "name": "p", + "nodeType": "VariableDeclaration", + "scope": 797, + "src": "9627:15:4", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage_ptr", + "typeString": "struct SmartPiggies.Piggy" + }, + "typeName": { + "contractScope": null, + "id": 638, + "name": "Piggy", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 346, + "src": "9627:5:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage_ptr", + "typeString": "struct SmartPiggies.Piggy" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 643, + "initialValue": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 640, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "9645:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 642, + "indexExpression": { + "argumentTypes": null, + "id": 641, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 285, + "src": "9653:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "9645:16:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "9627:34:4" + }, + { + "expression": { + "argumentTypes": null, + "id": 651, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 644, + "name": "p", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 639, + "src": "9666:1:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage_ptr", + "typeString": "struct SmartPiggies.Piggy storage pointer" + } + }, + "id": 647, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "addresses", + "nodeType": "MemberAccess", + "referencedDeclaration": 341, + "src": "9666:11:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAddresses_$298_storage", + "typeString": "struct SmartPiggies.DetailAddresses storage ref" + } + }, + "id": 648, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "holder", + "nodeType": "MemberAccess", + "referencedDeclaration": 289, + "src": "9666:18:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 649, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2820, + "src": "9687:3:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 650, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "9687:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "9666:31:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 652, + "nodeType": "ExpressionStatement", + "src": "9666:31:4" + }, + { + "expression": { + "argumentTypes": null, + "id": 659, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 653, + "name": "p", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 639, + "src": "9702:1:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage_ptr", + "typeString": "struct SmartPiggies.Piggy storage pointer" + } + }, + "id": 656, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "addresses", + "nodeType": "MemberAccess", + "referencedDeclaration": 341, + "src": "9702:11:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAddresses_$298_storage", + "typeString": "struct SmartPiggies.DetailAddresses storage ref" + } + }, + "id": 657, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "collateralERC", + "nodeType": "MemberAccess", + "referencedDeclaration": 291, + "src": "9702:25:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 658, + "name": "_collateralERC", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 539, + "src": "9730:14:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "9702:42:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 660, + "nodeType": "ExpressionStatement", + "src": "9702:42:4" + }, + { + "expression": { + "argumentTypes": null, + "id": 667, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 661, + "name": "p", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 639, + "src": "9749:1:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage_ptr", + "typeString": "struct SmartPiggies.Piggy storage pointer" + } + }, + "id": 664, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "addresses", + "nodeType": "MemberAccess", + "referencedDeclaration": 341, + "src": "9749:11:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAddresses_$298_storage", + "typeString": "struct SmartPiggies.DetailAddresses storage ref" + } + }, + "id": 665, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "premiumERC", + "nodeType": "MemberAccess", + "referencedDeclaration": 293, + "src": "9749:22:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 666, + "name": "_premiumERC", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 541, + "src": "9774:11:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "9749:36:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 668, + "nodeType": "ExpressionStatement", + "src": "9749:36:4" + }, + { + "expression": { + "argumentTypes": null, + "id": 675, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 669, + "name": "p", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 639, + "src": "9790:1:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage_ptr", + "typeString": "struct SmartPiggies.Piggy storage pointer" + } + }, + "id": 672, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "addresses", + "nodeType": "MemberAccess", + "referencedDeclaration": 341, + "src": "9790:11:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAddresses_$298_storage", + "typeString": "struct SmartPiggies.DetailAddresses storage ref" + } + }, + "id": 673, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "dataResolverNow", + "nodeType": "MemberAccess", + "referencedDeclaration": 295, + "src": "9790:27:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 674, + "name": "_dataResolverNow", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 543, + "src": "9820:16:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "9790:46:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 676, + "nodeType": "ExpressionStatement", + "src": "9790:46:4" + }, + { + "expression": { + "argumentTypes": null, + "id": 683, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 677, + "name": "p", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 639, + "src": "9841:1:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage_ptr", + "typeString": "struct SmartPiggies.Piggy storage pointer" + } + }, + "id": 680, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "addresses", + "nodeType": "MemberAccess", + "referencedDeclaration": 341, + "src": "9841:11:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAddresses_$298_storage", + "typeString": "struct SmartPiggies.DetailAddresses storage ref" + } + }, + "id": 681, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "dataResolverAtExpiry", + "nodeType": "MemberAccess", + "referencedDeclaration": 297, + "src": "9841:32:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 682, + "name": "_dataResolverAtExpiry", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 545, + "src": "9876:21:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "9841:56:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 684, + "nodeType": "ExpressionStatement", + "src": "9841:56:4" + }, + { + "expression": { + "argumentTypes": null, + "id": 693, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 685, + "name": "p", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 639, + "src": "9902:1:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage_ptr", + "typeString": "struct SmartPiggies.Piggy storage pointer" + } + }, + "id": 688, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "uintDetails", + "nodeType": "MemberAccess", + "referencedDeclaration": 343, + "src": "9902:13:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailUints_$313_storage", + "typeString": "struct SmartPiggies.DetailUints storage ref" + } + }, + "id": 689, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "collateralDecimals", + "nodeType": "MemberAccess", + "referencedDeclaration": 312, + "src": "9902:32:4", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 691, + "name": "_collateralERC", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 539, + "src": "9955:14:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 690, + "name": "_getERC20Decimals", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 872, + "src": "9937:17:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$_t_uint8_$", + "typeString": "function (address) returns (uint8)" + } + }, + "id": 692, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9937:33:4", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "src": "9902:68:4", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "id": 694, + "nodeType": "ExpressionStatement", + "src": "9902:68:4" + }, + { + "expression": { + "argumentTypes": null, + "id": 701, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 695, + "name": "p", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 639, + "src": "9975:1:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage_ptr", + "typeString": "struct SmartPiggies.Piggy storage pointer" + } + }, + "id": 698, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "uintDetails", + "nodeType": "MemberAccess", + "referencedDeclaration": 343, + "src": "9975:13:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailUints_$313_storage", + "typeString": "struct SmartPiggies.DetailUints storage ref" + } + }, + "id": 699, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "lotSize", + "nodeType": "MemberAccess", + "referencedDeclaration": 302, + "src": "9975:21:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 700, + "name": "_lotSize", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 549, + "src": "9999:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "9975:32:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 702, + "nodeType": "ExpressionStatement", + "src": "9975:32:4" + }, + { + "expression": { + "argumentTypes": null, + "id": 709, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 703, + "name": "p", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 639, + "src": "10012:1:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage_ptr", + "typeString": "struct SmartPiggies.Piggy storage pointer" + } + }, + "id": 706, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "uintDetails", + "nodeType": "MemberAccess", + "referencedDeclaration": 343, + "src": "10012:13:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailUints_$313_storage", + "typeString": "struct SmartPiggies.DetailUints storage ref" + } + }, + "id": 707, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "strikePrice", + "nodeType": "MemberAccess", + "referencedDeclaration": 304, + "src": "10012:25:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 708, + "name": "_strikePrice", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 551, + "src": "10040:12:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "10012:40:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 710, + "nodeType": "ExpressionStatement", + "src": "10012:40:4" + }, + { + "expression": { + "argumentTypes": null, + "id": 721, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 711, + "name": "p", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 639, + "src": "10057:1:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage_ptr", + "typeString": "struct SmartPiggies.Piggy storage pointer" + } + }, + "id": 714, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "uintDetails", + "nodeType": "MemberAccess", + "referencedDeclaration": 343, + "src": "10057:13:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailUints_$313_storage", + "typeString": "struct SmartPiggies.DetailUints storage ref" + } + }, + "id": 715, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "expiry", + "nodeType": "MemberAccess", + "referencedDeclaration": 306, + "src": "10057:20:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 718, + "name": "block", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2810, + "src": "10092:5:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_block", + "typeString": "block" + } + }, + "id": 719, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "number", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "10092:12:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 716, + "name": "_expiry", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 553, + "src": "10080:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 717, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 224, + "src": "10080:11:4", + "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": 720, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10080:25:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "10057:48:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 722, + "nodeType": "ExpressionStatement", + "src": "10057:48:4" + }, + { + "expression": { + "argumentTypes": null, + "id": 729, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 723, + "name": "p", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 639, + "src": "10110:1:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage_ptr", + "typeString": "struct SmartPiggies.Piggy storage pointer" + } + }, + "id": 726, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "flags", + "nodeType": "MemberAccess", + "referencedDeclaration": 345, + "src": "10110:7:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BoolFlags_$322_storage", + "typeString": "struct SmartPiggies.BoolFlags storage ref" + } + }, + "id": 727, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "isEuro", + "nodeType": "MemberAccess", + "referencedDeclaration": 317, + "src": "10110:14:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 728, + "name": "_isEuro", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 555, + "src": "10127:7:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "10110:24:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 730, + "nodeType": "ExpressionStatement", + "src": "10110:24:4" + }, + { + "expression": { + "argumentTypes": null, + "id": 737, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 731, + "name": "p", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 639, + "src": "10139:1:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage_ptr", + "typeString": "struct SmartPiggies.Piggy storage pointer" + } + }, + "id": 734, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "flags", + "nodeType": "MemberAccess", + "referencedDeclaration": 345, + "src": "10139:7:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BoolFlags_$322_storage", + "typeString": "struct SmartPiggies.BoolFlags storage ref" + } + }, + "id": 735, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "isPut", + "nodeType": "MemberAccess", + "referencedDeclaration": 319, + "src": "10139:13:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 736, + "name": "_isPut", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 557, + "src": "10155:6:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "10139:22:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 738, + "nodeType": "ExpressionStatement", + "src": "10139:22:4" + }, + { + "expression": { + "argumentTypes": null, + "id": 745, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 739, + "name": "p", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 639, + "src": "10166:1:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage_ptr", + "typeString": "struct SmartPiggies.Piggy storage pointer" + } + }, + "id": 742, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "flags", + "nodeType": "MemberAccess", + "referencedDeclaration": 345, + "src": "10166:7:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BoolFlags_$322_storage", + "typeString": "struct SmartPiggies.BoolFlags storage ref" + } + }, + "id": 743, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "isRequest", + "nodeType": "MemberAccess", + "referencedDeclaration": 315, + "src": "10166:17:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 744, + "name": "_isRequest", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 559, + "src": "10186:10:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "10166:30:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 746, + "nodeType": "ExpressionStatement", + "src": "10166:30:4" + }, + { + "condition": { + "argumentTypes": null, + "id": 747, + "name": "_isRequest", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 559, + "src": "10272:10:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 774, + "nodeType": "Block", + "src": "10344:89:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 764, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 757, + "name": "p", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 639, + "src": "10351:1:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage_ptr", + "typeString": "struct SmartPiggies.Piggy storage pointer" + } + }, + "id": 760, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "addresses", + "nodeType": "MemberAccess", + "referencedDeclaration": 341, + "src": "10351:11:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAddresses_$298_storage", + "typeString": "struct SmartPiggies.DetailAddresses storage ref" + } + }, + "id": 761, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "writer", + "nodeType": "MemberAccess", + "referencedDeclaration": 287, + "src": "10351:18:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 762, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2820, + "src": "10372:3:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 763, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "10372:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "10351:31:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 765, + "nodeType": "ExpressionStatement", + "src": "10351:31:4" + }, + { + "expression": { + "argumentTypes": null, + "id": 772, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 766, + "name": "p", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 639, + "src": "10389:1:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage_ptr", + "typeString": "struct SmartPiggies.Piggy storage pointer" + } + }, + "id": 769, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "uintDetails", + "nodeType": "MemberAccess", + "referencedDeclaration": 343, + "src": "10389:13:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailUints_$313_storage", + "typeString": "struct SmartPiggies.DetailUints storage ref" + } + }, + "id": 770, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "collateral", + "nodeType": "MemberAccess", + "referencedDeclaration": 300, + "src": "10389:24:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 771, + "name": "_collateral", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 547, + "src": "10416:11:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "10389:38:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 773, + "nodeType": "ExpressionStatement", + "src": "10389:38:4" + } + ] + }, + "id": 775, + "nodeType": "IfStatement", + "src": "10268:165:4", + "trueBody": { + "id": 756, + "nodeType": "Block", + "src": "10284:54:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 754, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 748, + "name": "p", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 639, + "src": "10291:1:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage_ptr", + "typeString": "struct SmartPiggies.Piggy storage pointer" + } + }, + "id": 751, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "uintDetails", + "nodeType": "MemberAccess", + "referencedDeclaration": 343, + "src": "10291:13:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailUints_$313_storage", + "typeString": "struct SmartPiggies.DetailUints storage ref" + } + }, + "id": 752, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "reqCollateral", + "nodeType": "MemberAccess", + "referencedDeclaration": 310, + "src": "10291:27:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 753, + "name": "_collateral", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 547, + "src": "10321:11:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "10291:41:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 755, + "nodeType": "ExpressionStatement", + "src": "10291:41:4" + } + ] + } + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 777, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2820, + "src": "10461:3:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 778, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "10461:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 779, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 285, + "src": "10473:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 776, + "name": "_addTokenToOwnedPiggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2578, + "src": "10437:23:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 780, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10437:44:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 781, + "nodeType": "ExpressionStatement", + "src": "10437:44:4" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 783, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2820, + "src": "10510:3:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 784, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "10510:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 785, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 285, + "src": "10527:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 786, + "name": "_strikePrice", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 551, + "src": "10541:12:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 789, + "name": "block", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2810, + "src": "10572:5:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_block", + "typeString": "block" + } + }, + "id": 790, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "number", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "10572:12:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 787, + "name": "_expiry", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 553, + "src": "10560:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 788, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 224, + "src": "10560:11:4", + "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": 791, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10560:25:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 792, + "name": "_isRequest", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 559, + "src": "10592:10:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 782, + "name": "CreatePiggy", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 381, + "src": "10492:11:4", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_bool_$returns$__$", + "typeString": "function (address,uint256,uint256,uint256,bool)" + } + }, + "id": 793, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10492:115:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 794, + "nodeType": "EmitStatement", + "src": "10487:120:4" + }, + { + "expression": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 795, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10620:4:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 563, + "id": 796, + "nodeType": "Return", + "src": "10613:11:4" + } + ] + }, + "documentation": "@notice Create a new ERC-59 token\n@dev Throws if `_collateralERC` is not a valid Ethereum (ERC-20) address.\nThrows if `_premiumERC` is not a valid Ethereum (ERC-20) address (may be same\nas `_collateralERC`).\nThrows if `_oracle` is not a valid Ethereum address.\nThrows if `_expiry` < block.number.\nIf `_asRequest` is true, throws if `_reqCollateral` == 0.\nIf `_asRequest` is false, throws if msg.sender has not delegated at least `_collateral`\nin the ERC-20 token whose contract is `_collateralERC` to the ERC-59 contract.\nWhen a new token is created, msg.sender should be recorded as the creator and owner.\nIf `_asRequest` is true, the zero address should be recorded as the seller.\nIf `_asRequest` is false, msg.sender should be recorded as the seller.\nIf `_asRequest` is false, `_reqCollateral` will be irrelevant and should be captured as 0.\nIf `_asRequest` is false, the ERC-59 contract must take ownership of `_collateral` amount\nof ERC-20 tokens governed by the `_collateralERC` contract.\n@param _collateralERC The address of the reference ERC-20 token to be used as collateral\n@param _premiumERC The address of the reference ERC-20 token to be used to pay the premium\nparam _oracle The address of a service contract which will return the settlement price\nparam _asRequest If true, will create the token as an \"RFP\" / request for a particular option\nparam _underlyingNow An identifier for the reference underlying which the contract at `_oracle`\nis able to parse to return the current price of the underlying\nparam _underlyingExpiry An identifier for the reference underlying which the contract at\n`_oracle` is able to parse to return the price of the underlying at `_expiry`\n@param _collateral The amount of collateral for the option, denominated in units of the token\nat the `_collateralERC` address\n@param _lotSize A multiplier on the settlement price used to determine settlement claims\n@param _strikePrice The strike value of the option, in the same units as the settlement price\n@param _expiry The block height at which the option will expire\nparam _reqCollateral The amount of collateral desired in the option, if creating with\n`_asRequest` == true, denominated in units of the token at the `_collateralERC` address\n@param _isEuro If true, the option can only be settled at or after `_expiry` is reached, else\nit can be settled at any time\n@param _isPut If true, the settlement claims will be calculated for a put option; else they\nwill be calculated for a call option", + "id": 798, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "createPiggy", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 560, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 539, + "name": "_collateralERC", + "nodeType": "VariableDeclaration", + "scope": 798, + "src": "8477:22:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 538, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8477:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 541, + "name": "_premiumERC", + "nodeType": "VariableDeclaration", + "scope": 798, + "src": "8504:19:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 540, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8504:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 543, + "name": "_dataResolverNow", + "nodeType": "VariableDeclaration", + "scope": 798, + "src": "8528:24:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 542, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8528:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 545, + "name": "_dataResolverAtExpiry", + "nodeType": "VariableDeclaration", + "scope": 798, + "src": "8557:29:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 544, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8557:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 547, + "name": "_collateral", + "nodeType": "VariableDeclaration", + "scope": 798, + "src": "8591:19:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 546, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8591:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 549, + "name": "_lotSize", + "nodeType": "VariableDeclaration", + "scope": 798, + "src": "8615:16:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 548, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8615:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 551, + "name": "_strikePrice", + "nodeType": "VariableDeclaration", + "scope": 798, + "src": "8636:20:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 550, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8636:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 553, + "name": "_expiry", + "nodeType": "VariableDeclaration", + "scope": 798, + "src": "8661:15:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 552, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8661:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 555, + "name": "_isEuro", + "nodeType": "VariableDeclaration", + "scope": 798, + "src": "8681:12:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 554, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "8681:4:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 557, + "name": "_isPut", + "nodeType": "VariableDeclaration", + "scope": 798, + "src": "8698:11:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 556, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "8698:4:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 559, + "name": "_isRequest", + "nodeType": "VariableDeclaration", + "scope": 798, + "src": "8714:15:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 558, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "8714:4:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "8472:262:4" + }, + "returnParameters": { + "id": 563, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 562, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 798, + "src": "8757:4:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 561, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "8757:4:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "8756:6:4" + }, + "scope": 2805, + "src": "8452:2176:4", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 871, + "nodeType": "Block", + "src": "10777:449:4", + "statements": [ + { + "assignments": [ + 806, + 808 + ], + "declarations": [ + { + "constant": false, + "id": 806, + "name": "success", + "nodeType": "VariableDeclaration", + "scope": 871, + "src": "10782:12:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 805, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "10782:4:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 808, + "name": "_decBytes", + "nodeType": "VariableDeclaration", + "scope": 871, + "src": "10796:22:4", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 807, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "10796:5:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 820, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "646563696d616c732829", + "id": 817, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10888:12:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_313ce567add4d438edf58b94ff345d7d38c45b17dfc0f947988d7819dca364f9", + "typeString": "literal_string \"decimals()\"" + }, + "value": "decimals()" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_313ce567add4d438edf58b94ff345d7d38c45b17dfc0f947988d7819dca364f9", + "typeString": "literal_string \"decimals()\"" + } + ], + "expression": { + "argumentTypes": null, + "id": 815, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2807, + "src": "10864:3:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 816, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "encodeWithSignature", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "10864:23:4", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$", + "typeString": "function (string memory) pure returns (bytes memory)" + } + }, + "id": 818, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10864:37:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 811, + "name": "_ERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 800, + "src": "10843:6:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 810, + "name": "PaymentToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 274, + "src": "10830:12:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_PaymentToken_$274_$", + "typeString": "type(contract PaymentToken)" + } + }, + "id": 812, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10830:20:4", + "typeDescriptions": { + "typeIdentifier": "t_contract$_PaymentToken_$274", + "typeString": "contract PaymentToken" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_PaymentToken_$274", + "typeString": "contract PaymentToken" + } + ], + "id": 809, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "10822:7:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 813, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10822:29:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 814, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "call", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "10822:34:4", + "typeDescriptions": { + "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$", + "typeString": "function (bytes memory) payable returns (bool,bytes memory)" + } + }, + "id": 819, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10822:85:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$", + "typeString": "tuple(bool,bytes memory)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "10781:126:4" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 822, + "name": "success", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 806, + "src": "10920:7:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "636f6c6c61746572616c204552432d323020636f6e747261637420646f6573206e6f742070726f7065726c79207370656369667920646563696d616c73", + "id": 823, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10929:63:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_e3d386bf715f6ade1ba03d3571c7bd8099823592469a72ba820b6c3855a0c7b7", + "typeString": "literal_string \"collateral ERC-20 contract does not properly specify decimals\"" + }, + "value": "collateral ERC-20 contract does not properly specify decimals" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_e3d386bf715f6ade1ba03d3571c7bd8099823592469a72ba820b6c3855a0c7b7", + "typeString": "literal_string \"collateral ERC-20 contract does not properly specify decimals\"" + } + ], + "id": 821, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2823, + 2824 + ], + "referencedDeclaration": 2824, + "src": "10912:7:4", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 824, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10912:81:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 825, + "nodeType": "ExpressionStatement", + "src": "10912:81:4" + }, + { + "assignments": [ + 827 + ], + "declarations": [ + { + "constant": false, + "id": 827, + "name": "_ERCdecimals", + "nodeType": "VariableDeclaration", + "scope": 871, + "src": "11028:20:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 826, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "11028:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 828, + "initialValue": null, + "nodeType": "VariableDeclarationStatement", + "src": "11028:20:4" + }, + { + "body": { + "id": 865, + "nodeType": "Block", + "src": "11097:96:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 863, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 840, + "name": "_ERCdecimals", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 827, + "src": "11104:12:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 862, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 841, + "name": "_ERCdecimals", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 827, + "src": "11119:12:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 861, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 843, + "name": "_decBytes", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 808, + "src": "11140:9:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 845, + "indexExpression": { + "argumentTypes": null, + "id": 844, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 830, + "src": "11150:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "11140:12:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + } + ], + "id": 842, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "11134:5:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint8_$", + "typeString": "type(uint8)" + }, + "typeName": "uint8" + }, + "id": 846, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "11134:19:4", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 859, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "hexValue": "32", + "id": 847, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "11155:1:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + }, + "nodeType": "BinaryOperation", + "operator": "**", + "rightExpression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 857, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "hexValue": "38", + "id": 848, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "11159:1:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_8_by_1", + "typeString": "int_const 8" + }, + "value": "8" + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 855, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 849, + "name": "_decBytes", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 808, + "src": "11162:9:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 850, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "11162:16:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 853, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 851, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 830, + "src": "11180:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "argumentTypes": null, + "hexValue": "31", + "id": 852, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "11182:1:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "11180:3:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 854, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "11179:5:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "11162:22:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 856, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "11161:24:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "11159:26:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 858, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "11158:28:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "11155:31:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 860, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "11154:33:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "11134:53:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "11119:68:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "11104:83:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 864, + "nodeType": "ExpressionStatement", + "src": "11104:83:4" + } + ] + }, + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 836, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 833, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 830, + "src": "11070:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 834, + "name": "_decBytes", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 808, + "src": "11074:9:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 835, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "11074:16:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "11070:20:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 866, + "initializationExpression": { + "assignments": [ + 830 + ], + "declarations": [ + { + "constant": false, + "id": 830, + "name": "i", + "nodeType": "VariableDeclaration", + "scope": 866, + "src": "11057:9:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 829, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "11057:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 832, + "initialValue": { + "argumentTypes": null, + "hexValue": "30", + "id": 831, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "11067:1:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "11057:11:4" + }, + "loopExpression": { + "expression": { + "argumentTypes": null, + "id": 838, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "11092:3:4", + "subExpression": { + "argumentTypes": null, + "id": 837, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 830, + "src": "11092:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 839, + "nodeType": "ExpressionStatement", + "src": "11092:3:4" + }, + "nodeType": "ForStatement", + "src": "11053:140:4" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 868, + "name": "_ERCdecimals", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 827, + "src": "11210:12:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 867, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "11204:5:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint8_$", + "typeString": "type(uint8)" + }, + "typeName": "uint8" + }, + "id": 869, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "11204:19:4", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "functionReturnParameters": 804, + "id": 870, + "nodeType": "Return", + "src": "11197:26:4" + } + ] + }, + "documentation": null, + "id": 872, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_getERC20Decimals", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 801, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 800, + "name": "_ERC20", + "nodeType": "VariableDeclaration", + "scope": 872, + "src": "10732:14:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 799, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "10732:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "10731:16:4" + }, + "returnParameters": { + "id": 804, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 803, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 872, + "src": "10770:5:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 802, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "10770:5:4", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "10769:7:4" + }, + "scope": 2805, + "src": "10705:521:4", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 883, + "nodeType": "Block", + "src": "11396:35:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 879, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "11409:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 881, + "indexExpression": { + "argumentTypes": null, + "id": 880, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 874, + "src": "11417:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "11409:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "functionReturnParameters": 878, + "id": 882, + "nodeType": "Return", + "src": "11402:24:4" + } + ] + }, + "documentation": null, + "id": 884, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getDetails", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 875, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 874, + "name": "_tokenId", + "nodeType": "VariableDeclaration", + "scope": 884, + "src": "11329:16:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 873, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "11329:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "11328:18:4" + }, + "returnParameters": { + "id": 878, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 877, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 884, + "src": "11380:12:4", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_memory_ptr", + "typeString": "struct SmartPiggies.Piggy" + }, + "typeName": { + "contractScope": null, + "id": 876, + "name": "Piggy", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 346, + "src": "11380:5:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage_ptr", + "typeString": "struct SmartPiggies.Piggy" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "11379:14:4" + }, + "scope": 2805, + "src": "11309:122:4", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 895, + "nodeType": "Block", + "src": "11601:36:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 891, + "name": "auctions", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 369, + "src": "11614:8:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_DetailAuction_$339_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.DetailAuction storage ref)" + } + }, + "id": 893, + "indexExpression": { + "argumentTypes": null, + "id": 892, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 886, + "src": "11623:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "11614:18:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAuction_$339_storage", + "typeString": "struct SmartPiggies.DetailAuction storage ref" + } + }, + "functionReturnParameters": 890, + "id": 894, + "nodeType": "Return", + "src": "11607:25:4" + } + ] + }, + "documentation": null, + "id": 896, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getAuctionDetails", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 887, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 886, + "name": "_tokenId", + "nodeType": "VariableDeclaration", + "scope": 896, + "src": "11526:16:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 885, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "11526:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "11525:18:4" + }, + "returnParameters": { + "id": 890, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 889, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 896, + "src": "11577:20:4", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAuction_$339_memory_ptr", + "typeString": "struct SmartPiggies.DetailAuction" + }, + "typeName": { + "contractScope": null, + "id": 888, + "name": "DetailAuction", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 339, + "src": "11577:13:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAuction_$339_storage_ptr", + "typeString": "struct SmartPiggies.DetailAuction" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "11576:22:4" + }, + "scope": 2805, + "src": "11499:138:4", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 917, + "nodeType": "Block", + "src": "12119:99:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 909, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 905, + "name": "_owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 898, + "src": "12133:6:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 907, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "12151: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": 906, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "12143:7:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 908, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "12143:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "12133:20:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "616464726573732063616e6e6f74206265207a65726f", + "id": 910, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "12155:24:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_a9941ee6da268eebad354f3ad5eda2e3e27f59ae11bbb28a54fc77e5ab33eca9", + "typeString": "literal_string \"address cannot be zero\"" + }, + "value": "address cannot be zero" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_a9941ee6da268eebad354f3ad5eda2e3e27f59ae11bbb28a54fc77e5ab33eca9", + "typeString": "literal_string \"address cannot be zero\"" + } + ], + "id": 904, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2823, + 2824 + ], + "referencedDeclaration": 2824, + "src": "12125:7:4", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 911, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "12125:55:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 912, + "nodeType": "ExpressionStatement", + "src": "12125:55:4" + }, + { + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 913, + "name": "ownedPiggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 357, + "src": "12193:12:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_uint256_$dyn_storage_$", + "typeString": "mapping(address => uint256[] storage ref)" + } + }, + "id": 915, + "indexExpression": { + "argumentTypes": null, + "id": 914, + "name": "_owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 898, + "src": "12206:6:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "12193:20:4", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage", + "typeString": "uint256[] storage ref" + } + }, + "functionReturnParameters": 903, + "id": 916, + "nodeType": "Return", + "src": "12186:27:4" + } + ] + }, + "documentation": "@notice Count the number of ERC-59 tokens owned by a particular address\n@dev ERC-59 tokens assigned to the zero address are considered invalid, and this\nfunction throws for queries about the zero address.\n@param _owner An address for which to query the balance of ERC-59 tokens\n@return The number of ERC-59 tokens owned by `_owner`, possibly zero", + "id": 918, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getOwnedPiggies", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 899, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 898, + "name": "_owner", + "nodeType": "VariableDeclaration", + "scope": 918, + "src": "12050:14:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 897, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "12050:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "12049:16:4" + }, + "returnParameters": { + "id": 903, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 902, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 918, + "src": "12099:16:4", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 900, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "12099:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 901, + "length": null, + "nodeType": "ArrayTypeName", + "src": "12099:9:4", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "12098:18:4" + }, + "scope": 2805, + "src": "12025:193:4", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 942, + "nodeType": "Block", + "src": "12323:108:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 932, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 928, + "name": "_owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 920, + "src": "12337:6:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 930, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "12355: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": 929, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "12347:7:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 931, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "12347:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "12337:20:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "616464726573732063616e6e6f74206265207a65726f", + "id": 933, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "12359:24:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_a9941ee6da268eebad354f3ad5eda2e3e27f59ae11bbb28a54fc77e5ab33eca9", + "typeString": "literal_string \"address cannot be zero\"" + }, + "value": "address cannot be zero" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_a9941ee6da268eebad354f3ad5eda2e3e27f59ae11bbb28a54fc77e5ab33eca9", + "typeString": "literal_string \"address cannot be zero\"" + } + ], + "id": 927, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2823, + 2824 + ], + "referencedDeclaration": 2824, + "src": "12329:7:4", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 934, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "12329:55:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 935, + "nodeType": "ExpressionStatement", + "src": "12329:55:4" + }, + { + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 936, + "name": "ERC20balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 352, + "src": "12397:13:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + } + }, + "id": 938, + "indexExpression": { + "argumentTypes": null, + "id": 937, + "name": "_owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 920, + "src": "12411:6:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "12397:21:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 940, + "indexExpression": { + "argumentTypes": null, + "id": 939, + "name": "_erc20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 922, + "src": "12419:6:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "12397:29:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 926, + "id": 941, + "nodeType": "Return", + "src": "12390:36:4" + } + ] + }, + "documentation": null, + "id": 943, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getERC20balance", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 923, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 920, + "name": "_owner", + "nodeType": "VariableDeclaration", + "scope": 943, + "src": "12247:14:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 919, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "12247:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 922, + "name": "_erc20", + "nodeType": "VariableDeclaration", + "scope": 943, + "src": "12263:14:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 921, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "12263:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "12246:32:4" + }, + "returnParameters": { + "id": 926, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 925, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 943, + "src": "12312:7:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 924, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "12312:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "12311:9:4" + }, + "scope": 2805, + "src": "12222:209:4", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 970, + "nodeType": "Block", + "src": "12516:170:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 960, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 953, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2820, + "src": "12530:3:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 954, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "12530:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 955, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "12544:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 957, + "indexExpression": { + "argumentTypes": null, + "id": 956, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 949, + "src": "12552:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "12544:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 958, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "addresses", + "nodeType": "MemberAccess", + "referencedDeclaration": 341, + "src": "12544:27:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAddresses_$298_storage", + "typeString": "struct SmartPiggies.DetailAddresses storage ref" + } + }, + "id": 959, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "holder", + "nodeType": "MemberAccess", + "referencedDeclaration": 289, + "src": "12544:34:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "12530:48:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "6d73672e73656e646572206973206e6f7420746865206f776e6572", + "id": 961, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "12580:29:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_fe1f2fd5008784e7e36b999381f1742f307634673a00747c7e17263f99f9413f", + "typeString": "literal_string \"msg.sender is not the owner\"" + }, + "value": "msg.sender is not the owner" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_fe1f2fd5008784e7e36b999381f1742f307634673a00747c7e17263f99f9413f", + "typeString": "literal_string \"msg.sender is not the owner\"" + } + ], + "id": 952, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2823, + 2824 + ], + "referencedDeclaration": 2824, + "src": "12522:7:4", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 962, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "12522:88:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 963, + "nodeType": "ExpressionStatement", + "src": "12522:88:4" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 965, + "name": "_from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 945, + "src": "12660:5:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 966, + "name": "_to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 947, + "src": "12667:3:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 967, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 949, + "src": "12672:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 964, + "name": "_internalTransfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1025, + "src": "12642:17:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 968, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "12642:39:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 969, + "nodeType": "ExpressionStatement", + "src": "12642:39:4" + } + ] + }, + "documentation": null, + "id": 971, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "transferFrom", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 950, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 945, + "name": "_from", + "nodeType": "VariableDeclaration", + "scope": 971, + "src": "12457:13:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 944, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "12457:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 947, + "name": "_to", + "nodeType": "VariableDeclaration", + "scope": 971, + "src": "12472:11:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 946, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "12472:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 949, + "name": "_tokenId", + "nodeType": "VariableDeclaration", + "scope": 971, + "src": "12485:16:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 948, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "12485:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "12456:46:4" + }, + "returnParameters": { + "id": 951, + "nodeType": "ParameterList", + "parameters": [], + "src": "12516:0:4" + }, + "scope": 2805, + "src": "12435:251:4", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 1024, + "nodeType": "Block", + "src": "12846:337:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 987, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 981, + "name": "_from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 973, + "src": "12860:5:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 982, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "12869:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 984, + "indexExpression": { + "argumentTypes": null, + "id": 983, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 977, + "src": "12877:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "12869:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 985, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "addresses", + "nodeType": "MemberAccess", + "referencedDeclaration": 341, + "src": "12869:27:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAddresses_$298_storage", + "typeString": "struct SmartPiggies.DetailAddresses storage ref" + } + }, + "id": 986, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "holder", + "nodeType": "MemberAccess", + "referencedDeclaration": 289, + "src": "12869:34:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "12860:43:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "66726f6d2061646472657373206973206e6f7420746865206f776e6572", + "id": 988, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "12905:31:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_99843832e911c3c269d6e837b97801c2d642529f985a3b8389d66cfd6f915338", + "typeString": "literal_string \"from address is not the owner\"" + }, + "value": "from address is not the owner" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_99843832e911c3c269d6e837b97801c2d642529f985a3b8389d66cfd6f915338", + "typeString": "literal_string \"from address is not the owner\"" + } + ], + "id": 980, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2823, + 2824 + ], + "referencedDeclaration": 2824, + "src": "12852:7:4", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 989, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "12852:85:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 990, + "nodeType": "ExpressionStatement", + "src": "12852:85:4" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 996, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 992, + "name": "_to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 975, + "src": "12951:3:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 994, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "12966: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": 993, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "12958:7:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 995, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "12958:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "12951:17:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "746f2061646472657373206973207a65726f", + "id": 997, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "12970:20:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_ba95b908b4488c4477717d86e0713cc9cd35576f43001de482194a4df6630027", + "typeString": "literal_string \"to address is zero\"" + }, + "value": "to address is zero" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_ba95b908b4488c4477717d86e0713cc9cd35576f43001de482194a4df6630027", + "typeString": "literal_string \"to address is zero\"" + } + ], + "id": 991, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2823, + 2824 + ], + "referencedDeclaration": 2824, + "src": "12943:7:4", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 998, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "12943:48:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 999, + "nodeType": "ExpressionStatement", + "src": "12943:48:4" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1001, + "name": "_from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 973, + "src": "13026:5:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1002, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 977, + "src": "13033:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1000, + "name": "_removeTokenFromOwnedPiggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2635, + "src": "12997:28:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 1003, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "12997:45:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1004, + "nodeType": "ExpressionStatement", + "src": "12997:45:4" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1006, + "name": "_to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 975, + "src": "13072:3:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1007, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 977, + "src": "13077:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1005, + "name": "_addTokenToOwnedPiggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2578, + "src": "13048:23:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 1008, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "13048:38:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1009, + "nodeType": "ExpressionStatement", + "src": "13048:38:4" + }, + { + "expression": { + "argumentTypes": null, + "id": 1016, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1010, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "13092:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 1012, + "indexExpression": { + "argumentTypes": null, + "id": 1011, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 977, + "src": "13100:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "13092:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 1013, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "addresses", + "nodeType": "MemberAccess", + "referencedDeclaration": 341, + "src": "13092:27:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAddresses_$298_storage", + "typeString": "struct SmartPiggies.DetailAddresses storage ref" + } + }, + "id": 1014, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "holder", + "nodeType": "MemberAccess", + "referencedDeclaration": 289, + "src": "13092:34:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 1015, + "name": "_to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 975, + "src": "13129:3:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "13092:40:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 1017, + "nodeType": "ExpressionStatement", + "src": "13092:40:4" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1019, + "name": "_from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 973, + "src": "13157:5:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1020, + "name": "_to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 975, + "src": "13164:3:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1021, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 977, + "src": "13169:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1018, + "name": "TransferPiggy", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 389, + "src": "13143:13:4", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 1022, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "13143:35:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1023, + "nodeType": "EmitStatement", + "src": "13138:40:4" + } + ] + }, + "documentation": null, + "id": 1025, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_internalTransfer", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 978, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 973, + "name": "_from", + "nodeType": "VariableDeclaration", + "scope": 1025, + "src": "12785:13:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 972, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "12785:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 975, + "name": "_to", + "nodeType": "VariableDeclaration", + "scope": 1025, + "src": "12800:11:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 974, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "12800:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 977, + "name": "_tokenId", + "nodeType": "VariableDeclaration", + "scope": 1025, + "src": "12813:16:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 976, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "12813:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "12784:46:4" + }, + "returnParameters": { + "id": 979, + "nodeType": "ParameterList", + "parameters": [], + "src": "12846:0:4" + }, + "scope": 2805, + "src": "12758:425:4", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 1230, + "nodeType": "Block", + "src": "13902:1574:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 1060, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1053, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "13916:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 1055, + "indexExpression": { + "argumentTypes": null, + "id": 1054, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1027, + "src": "13924:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "13916:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 1056, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "addresses", + "nodeType": "MemberAccess", + "referencedDeclaration": 341, + "src": "13916:27:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAddresses_$298_storage", + "typeString": "struct SmartPiggies.DetailAddresses storage ref" + } + }, + "id": 1057, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "holder", + "nodeType": "MemberAccess", + "referencedDeclaration": 289, + "src": "13916:34:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1058, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2820, + "src": "13954:3:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1059, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "13954:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "13916:48:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "796f75206d757374206f776e207468652052465020746f20757064617465206974", + "id": 1061, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "13966:35:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_1e7bdd33272a5c5d01810a40a6212bfe78a37d0eecf21f79c5c83d78fb8884a2", + "typeString": "literal_string \"you must own the RFP to update it\"" + }, + "value": "you must own the RFP to update it" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_1e7bdd33272a5c5d01810a40a6212bfe78a37d0eecf21f79c5c83d78fb8884a2", + "typeString": "literal_string \"you must own the RFP to update it\"" + } + ], + "id": 1052, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2823, + 2824 + ], + "referencedDeclaration": 2824, + "src": "13908:7:4", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 1062, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "13908:94:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1063, + "nodeType": "ExpressionStatement", + "src": "13908:94:4" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1065, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "14016:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 1067, + "indexExpression": { + "argumentTypes": null, + "id": 1066, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1027, + "src": "14024:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "14016:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 1068, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "flags", + "nodeType": "MemberAccess", + "referencedDeclaration": 345, + "src": "14016:23:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BoolFlags_$322_storage", + "typeString": "struct SmartPiggies.BoolFlags storage ref" + } + }, + "id": 1069, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "isRequest", + "nodeType": "MemberAccess", + "referencedDeclaration": 315, + "src": "14016:33:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "796f752063616e206f6e6c792075706461746520616e20524650", + "id": 1070, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "14051:28:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_f6a873ed8c71059d518992e0b4cceea2bcfd7fa380403e709a78f342fbbb8a76", + "typeString": "literal_string \"you can only update an RFP\"" + }, + "value": "you can only update an RFP" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_f6a873ed8c71059d518992e0b4cceea2bcfd7fa380403e709a78f342fbbb8a76", + "typeString": "literal_string \"you can only update an RFP\"" + } + ], + "id": 1064, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2823, + 2824 + ], + "referencedDeclaration": 2824, + "src": "14008:7:4", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 1071, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "14008:72:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1072, + "nodeType": "ExpressionStatement", + "src": "14008:72:4" + }, + { + "assignments": [ + 1074 + ], + "declarations": [ + { + "constant": false, + "id": 1074, + "name": "expiryBlock", + "nodeType": "VariableDeclaration", + "scope": 1230, + "src": "14086:19:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1073, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "14086:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1075, + "initialValue": null, + "nodeType": "VariableDeclarationStatement", + "src": "14086:19:4" + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 1080, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1076, + "name": "_collateralERC", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1029, + "src": "14115:14:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 1078, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "14141: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": 1077, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "14133:7:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 1079, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "14133:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "14115:28:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 1090, + "nodeType": "IfStatement", + "src": "14111:107:4", + "trueBody": { + "id": 1089, + "nodeType": "Block", + "src": "14145:73:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 1087, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1081, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "14153:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 1083, + "indexExpression": { + "argumentTypes": null, + "id": 1082, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1027, + "src": "14161:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "14153:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 1084, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "addresses", + "nodeType": "MemberAccess", + "referencedDeclaration": 341, + "src": "14153:27:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAddresses_$298_storage", + "typeString": "struct SmartPiggies.DetailAddresses storage ref" + } + }, + "id": 1085, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "collateralERC", + "nodeType": "MemberAccess", + "referencedDeclaration": 291, + "src": "14153:41:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 1086, + "name": "_collateralERC", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1029, + "src": "14197:14:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "14153:58:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 1088, + "nodeType": "ExpressionStatement", + "src": "14153:58:4" + } + ] + } + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 1095, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1091, + "name": "_premiumERC", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1031, + "src": "14227:11:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 1093, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "14250: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": 1092, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "14242:7:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 1094, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "14242:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "14227:25:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 1105, + "nodeType": "IfStatement", + "src": "14223:98:4", + "trueBody": { + "id": 1104, + "nodeType": "Block", + "src": "14254:67:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 1102, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1096, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "14262:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 1098, + "indexExpression": { + "argumentTypes": null, + "id": 1097, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1027, + "src": "14270:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "14262:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 1099, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "addresses", + "nodeType": "MemberAccess", + "referencedDeclaration": 341, + "src": "14262:27:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAddresses_$298_storage", + "typeString": "struct SmartPiggies.DetailAddresses storage ref" + } + }, + "id": 1100, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "premiumERC", + "nodeType": "MemberAccess", + "referencedDeclaration": 293, + "src": "14262:38:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 1101, + "name": "_premiumERC", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1031, + "src": "14303:11:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "14262:52:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 1103, + "nodeType": "ExpressionStatement", + "src": "14262:52:4" + } + ] + } + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 1110, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1106, + "name": "_dataResolverNow", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1033, + "src": "14330:16:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 1108, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "14358: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": 1107, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "14350:7:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 1109, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "14350:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "14330:30:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 1120, + "nodeType": "IfStatement", + "src": "14326:113:4", + "trueBody": { + "id": 1119, + "nodeType": "Block", + "src": "14362:77:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 1117, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1111, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "14370:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 1113, + "indexExpression": { + "argumentTypes": null, + "id": 1112, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1027, + "src": "14378:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "14370:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 1114, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "addresses", + "nodeType": "MemberAccess", + "referencedDeclaration": 341, + "src": "14370:27:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAddresses_$298_storage", + "typeString": "struct SmartPiggies.DetailAddresses storage ref" + } + }, + "id": 1115, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "dataResolverNow", + "nodeType": "MemberAccess", + "referencedDeclaration": 295, + "src": "14370:43:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 1116, + "name": "_dataResolverNow", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1033, + "src": "14416:16:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "14370:62:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 1118, + "nodeType": "ExpressionStatement", + "src": "14370:62:4" + } + ] + } + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 1125, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1121, + "name": "_dataResolverAtExpiry", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1035, + "src": "14448:21:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 1123, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "14481: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": 1122, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "14473:7:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 1124, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "14473:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "14448:35:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 1135, + "nodeType": "IfStatement", + "src": "14444:128:4", + "trueBody": { + "id": 1134, + "nodeType": "Block", + "src": "14485:87:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 1132, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1126, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "14493:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 1128, + "indexExpression": { + "argumentTypes": null, + "id": 1127, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1027, + "src": "14501:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "14493:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 1129, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "addresses", + "nodeType": "MemberAccess", + "referencedDeclaration": 341, + "src": "14493:27:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAddresses_$298_storage", + "typeString": "struct SmartPiggies.DetailAddresses storage ref" + } + }, + "id": 1130, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "dataResolverAtExpiry", + "nodeType": "MemberAccess", + "referencedDeclaration": 297, + "src": "14493:48:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 1131, + "name": "_dataResolverAtExpiry", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1035, + "src": "14544:21:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "14493:72:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 1133, + "nodeType": "ExpressionStatement", + "src": "14493:72:4" + } + ] + } + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1138, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1136, + "name": "_reqCollateral", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1037, + "src": "14581:14:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 1137, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "14599:1:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "14581:19:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 1148, + "nodeType": "IfStatement", + "src": "14577:100:4", + "trueBody": { + "id": 1147, + "nodeType": "Block", + "src": "14602:75:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 1145, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1139, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "14610:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 1141, + "indexExpression": { + "argumentTypes": null, + "id": 1140, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1027, + "src": "14618:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "14610:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 1142, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "uintDetails", + "nodeType": "MemberAccess", + "referencedDeclaration": 343, + "src": "14610:29:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailUints_$313_storage", + "typeString": "struct SmartPiggies.DetailUints storage ref" + } + }, + "id": 1143, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "reqCollateral", + "nodeType": "MemberAccess", + "referencedDeclaration": 310, + "src": "14610:43:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 1144, + "name": "_reqCollateral", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1037, + "src": "14656:14:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "14610:60:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1146, + "nodeType": "ExpressionStatement", + "src": "14610:60:4" + } + ] + } + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1151, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1149, + "name": "_lotSize", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1039, + "src": "14686:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 1150, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "14698:1:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "14686:13:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 1161, + "nodeType": "IfStatement", + "src": "14682:82:4", + "trueBody": { + "id": 1160, + "nodeType": "Block", + "src": "14701:63:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 1158, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1152, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "14709:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 1154, + "indexExpression": { + "argumentTypes": null, + "id": 1153, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1027, + "src": "14717:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "14709:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 1155, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "uintDetails", + "nodeType": "MemberAccess", + "referencedDeclaration": 343, + "src": "14709:29:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailUints_$313_storage", + "typeString": "struct SmartPiggies.DetailUints storage ref" + } + }, + "id": 1156, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "lotSize", + "nodeType": "MemberAccess", + "referencedDeclaration": 302, + "src": "14709:37:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 1157, + "name": "_lotSize", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1039, + "src": "14749:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "14709:48:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1159, + "nodeType": "ExpressionStatement", + "src": "14709:48:4" + } + ] + } + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1164, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1162, + "name": "_strikePrice", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1041, + "src": "14773:12:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 1163, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "14789:1:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "14773:17:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 1174, + "nodeType": "IfStatement", + "src": "14769:95:4", + "trueBody": { + "id": 1173, + "nodeType": "Block", + "src": "14793:71:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 1171, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1165, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "14801:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 1167, + "indexExpression": { + "argumentTypes": null, + "id": 1166, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1027, + "src": "14809:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "14801:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 1168, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "uintDetails", + "nodeType": "MemberAccess", + "referencedDeclaration": 343, + "src": "14801:29:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailUints_$313_storage", + "typeString": "struct SmartPiggies.DetailUints storage ref" + } + }, + "id": 1169, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "strikePrice", + "nodeType": "MemberAccess", + "referencedDeclaration": 304, + "src": "14801:41:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 1170, + "name": "_strikePrice", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1041, + "src": "14845:12:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "14801:56:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1172, + "nodeType": "ExpressionStatement", + "src": "14801:56:4" + } + ] + } + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1177, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1175, + "name": "_expiry", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1043, + "src": "14873:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 1176, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "14884:1:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "14873:12:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 1195, + "nodeType": "IfStatement", + "src": "14869:234:4", + "trueBody": { + "id": 1194, + "nodeType": "Block", + "src": "14887:216:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 1184, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 1178, + "name": "expiryBlock", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1074, + "src": "14999:11:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1181, + "name": "block", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2810, + "src": "15025:5:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_block", + "typeString": "block" + } + }, + "id": 1182, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "number", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "15025:12:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 1179, + "name": "_expiry", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1043, + "src": "15013:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1180, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 224, + "src": "15013:11:4", + "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": 1183, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "15013:25:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "14999:39:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1185, + "nodeType": "ExpressionStatement", + "src": "14999:39:4" + }, + { + "expression": { + "argumentTypes": null, + "id": 1192, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1186, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "15046:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 1188, + "indexExpression": { + "argumentTypes": null, + "id": 1187, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1027, + "src": "15054:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "15046:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 1189, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "uintDetails", + "nodeType": "MemberAccess", + "referencedDeclaration": 343, + "src": "15046:29:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailUints_$313_storage", + "typeString": "struct SmartPiggies.DetailUints storage ref" + } + }, + "id": 1190, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "expiry", + "nodeType": "MemberAccess", + "referencedDeclaration": 306, + "src": "15046:36:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 1191, + "name": "expiryBlock", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1074, + "src": "15085:11:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "15046:50:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1193, + "nodeType": "ExpressionStatement", + "src": "15046:50:4" + } + ] + } + }, + { + "expression": { + "argumentTypes": null, + "id": 1202, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1196, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "15108:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 1198, + "indexExpression": { + "argumentTypes": null, + "id": 1197, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1027, + "src": "15116:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "15108:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 1199, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "flags", + "nodeType": "MemberAccess", + "referencedDeclaration": 345, + "src": "15108:23:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BoolFlags_$322_storage", + "typeString": "struct SmartPiggies.BoolFlags storage ref" + } + }, + "id": 1200, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "isEuro", + "nodeType": "MemberAccess", + "referencedDeclaration": 317, + "src": "15108:30:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 1201, + "name": "_isEuro", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1045, + "src": "15141:7:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "15108:40:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1203, + "nodeType": "ExpressionStatement", + "src": "15108:40:4" + }, + { + "expression": { + "argumentTypes": null, + "id": 1210, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1204, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "15154:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 1206, + "indexExpression": { + "argumentTypes": null, + "id": 1205, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1027, + "src": "15162:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "15154:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 1207, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "flags", + "nodeType": "MemberAccess", + "referencedDeclaration": 345, + "src": "15154:23:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BoolFlags_$322_storage", + "typeString": "struct SmartPiggies.BoolFlags storage ref" + } + }, + "id": 1208, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "isPut", + "nodeType": "MemberAccess", + "referencedDeclaration": 319, + "src": "15154:29:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 1209, + "name": "_isPut", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1047, + "src": "15186:6:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "15154:38:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1211, + "nodeType": "ExpressionStatement", + "src": "15154:38:4" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1213, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2820, + "src": "15221:3:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1214, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "15221:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 1215, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1027, + "src": "15239:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 1216, + "name": "_collateralERC", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1029, + "src": "15255:14:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1217, + "name": "_premiumERC", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1031, + "src": "15277:11:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1218, + "name": "_dataResolverNow", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1033, + "src": "15296:16:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1219, + "name": "_dataResolverAtExpiry", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1035, + "src": "15320:21:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1220, + "name": "_reqCollateral", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1037, + "src": "15349:14:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 1221, + "name": "_lotSize", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1039, + "src": "15371:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 1222, + "name": "_strikePrice", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1041, + "src": "15387:12:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 1223, + "name": "expiryBlock", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1074, + "src": "15407:11:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 1224, + "name": "_isEuro", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1045, + "src": "15426:7:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "id": 1225, + "name": "_isPut", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1047, + "src": "15441:6:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 1212, + "name": "UpdateRFP", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 415, + "src": "15204:9:4", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_address_$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_bool_$_t_bool_$returns$__$", + "typeString": "function (address,uint256,address,address,address,address,uint256,uint256,uint256,uint256,bool,bool)" + } + }, + "id": 1226, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "15204:249:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1227, + "nodeType": "EmitStatement", + "src": "15199:254:4" + }, + { + "expression": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 1228, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "15467:4:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 1051, + "id": 1229, + "nodeType": "Return", + "src": "15460:11:4" + } + ] + }, + "documentation": null, + "id": 1231, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "updateRFP", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1048, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1027, + "name": "_tokenId", + "nodeType": "VariableDeclaration", + "scope": 1231, + "src": "13553:16:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1026, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "13553:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1029, + "name": "_collateralERC", + "nodeType": "VariableDeclaration", + "scope": 1231, + "src": "13575:22:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1028, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "13575:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1031, + "name": "_premiumERC", + "nodeType": "VariableDeclaration", + "scope": 1231, + "src": "13603:19:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1030, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "13603:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1033, + "name": "_dataResolverNow", + "nodeType": "VariableDeclaration", + "scope": 1231, + "src": "13628:24:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1032, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "13628:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1035, + "name": "_dataResolverAtExpiry", + "nodeType": "VariableDeclaration", + "scope": 1231, + "src": "13658:29:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1034, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "13658:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1037, + "name": "_reqCollateral", + "nodeType": "VariableDeclaration", + "scope": 1231, + "src": "13693:22:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1036, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "13693:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1039, + "name": "_lotSize", + "nodeType": "VariableDeclaration", + "scope": 1231, + "src": "13721:16:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1038, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "13721:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1041, + "name": "_strikePrice", + "nodeType": "VariableDeclaration", + "scope": 1231, + "src": "13743:20:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1040, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "13743:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1043, + "name": "_expiry", + "nodeType": "VariableDeclaration", + "scope": 1231, + "src": "13769:15:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1042, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "13769:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1045, + "name": "_isEuro", + "nodeType": "VariableDeclaration", + "scope": 1231, + "src": "13790:12:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 1044, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "13790:4:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1047, + "name": "_isPut", + "nodeType": "VariableDeclaration", + "scope": 1231, + "src": "13830:11:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 1046, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "13830:4:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "13547:322:4" + }, + "returnParameters": { + "id": 1051, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1050, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 1231, + "src": "13894:4:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 1049, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "13894:4:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "13893:6:4" + }, + "scope": 2805, + "src": "13529:1947:4", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 1322, + "nodeType": "Block", + "src": "15662:818:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 1246, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1239, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2820, + "src": "15676:3:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1240, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "15676:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1241, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "15690:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 1243, + "indexExpression": { + "argumentTypes": null, + "id": 1242, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1233, + "src": "15698:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "15690:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 1244, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "addresses", + "nodeType": "MemberAccess", + "referencedDeclaration": 341, + "src": "15690:27:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAddresses_$298_storage", + "typeString": "struct SmartPiggies.DetailAddresses storage ref" + } + }, + "id": 1245, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "holder", + "nodeType": "MemberAccess", + "referencedDeclaration": 289, + "src": "15690:34:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "15676:48:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "796f75206d757374206f776e2074686520746f6b656e20746f206275726e206974", + "id": 1247, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "15726:35:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_ae5efd2f25cc052b288460f4af4064285c949a9fe14d0e09925196031bf6eb1c", + "typeString": "literal_string \"you must own the token to burn it\"" + }, + "value": "you must own the token to burn it" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_ae5efd2f25cc052b288460f4af4064285c949a9fe14d0e09925196031bf6eb1c", + "typeString": "literal_string \"you must own the token to burn it\"" + } + ], + "id": 1238, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2823, + 2824 + ], + "referencedDeclaration": 2824, + "src": "15668:7:4", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 1248, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "15668:94:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1249, + "nodeType": "ExpressionStatement", + "src": "15668:94:4" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1255, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "15776:33:4", + "subExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1251, + "name": "auctions", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 369, + "src": "15777:8:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_DetailAuction_$339_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.DetailAuction storage ref)" + } + }, + "id": 1253, + "indexExpression": { + "argumentTypes": null, + "id": 1252, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1233, + "src": "15786:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "15777:18:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAuction_$339_storage", + "typeString": "struct SmartPiggies.DetailAuction storage ref" + } + }, + "id": 1254, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "auctionActive", + "nodeType": "MemberAccess", + "referencedDeclaration": 336, + "src": "15777:32:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "796f752063616e6e6f74206275726e206120746f6b656e207768696368206973206f6e2061756374696f6e", + "id": 1256, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "15811:45:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_94906766d6c5f71acdbc2faad8a02da0c8731bc18b156d0371c37f687d0f8207", + "typeString": "literal_string \"you cannot burn a token which is on auction\"" + }, + "value": "you cannot burn a token which is on auction" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_94906766d6c5f71acdbc2faad8a02da0c8731bc18b156d0371c37f687d0f8207", + "typeString": "literal_string \"you cannot burn a token which is on auction\"" + } + ], + "id": 1250, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2823, + 2824 + ], + "referencedDeclaration": 2824, + "src": "15768:7:4", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 1257, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "15768:89:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1258, + "nodeType": "ExpressionStatement", + "src": "15768:89:4" + }, + { + "condition": { + "argumentTypes": null, + "id": 1264, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "15867:34:4", + "subExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1259, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "15868:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 1261, + "indexExpression": { + "argumentTypes": null, + "id": 1260, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1233, + "src": "15876:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "15868:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 1262, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "flags", + "nodeType": "MemberAccess", + "referencedDeclaration": 345, + "src": "15868:23:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BoolFlags_$322_storage", + "typeString": "struct SmartPiggies.BoolFlags storage ref" + } + }, + "id": 1263, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "isRequest", + "nodeType": "MemberAccess", + "referencedDeclaration": 315, + "src": "15868:33:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 1295, + "nodeType": "IfStatement", + "src": "15863:324:4", + "trueBody": { + "id": 1294, + "nodeType": "Block", + "src": "15903:284:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 1273, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1266, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2820, + "src": "15919:3:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1267, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "15919:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1268, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "15933:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 1270, + "indexExpression": { + "argumentTypes": null, + "id": 1269, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1233, + "src": "15941:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "15933:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 1271, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "addresses", + "nodeType": "MemberAccess", + "referencedDeclaration": 341, + "src": "15933:27:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAddresses_$298_storage", + "typeString": "struct SmartPiggies.DetailAddresses storage ref" + } + }, + "id": 1272, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "writer", + "nodeType": "MemberAccess", + "referencedDeclaration": 287, + "src": "15933:34:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "15919:48:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "796f75206d757374206f776e2074686520636f6c6c61746572616c20746f207265636c61696d206974", + "id": 1274, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "15969:43:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_e1a37be9c1372dff3a2267a67b092292ca46345df721c9020edbf06b5199d701", + "typeString": "literal_string \"you must own the collateral to reclaim it\"" + }, + "value": "you must own the collateral to reclaim it" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_e1a37be9c1372dff3a2267a67b092292ca46345df721c9020edbf06b5199d701", + "typeString": "literal_string \"you must own the collateral to reclaim it\"" + } + ], + "id": 1265, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2823, + 2824 + ], + "referencedDeclaration": 2824, + "src": "15911:7:4", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 1275, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "15911:102:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1276, + "nodeType": "ExpressionStatement", + "src": "15911:102:4" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1285, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2820, + "src": "16127:3:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1286, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "16127:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1287, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "16139:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 1289, + "indexExpression": { + "argumentTypes": null, + "id": 1288, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1233, + "src": "16147:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "16139:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 1290, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "uintDetails", + "nodeType": "MemberAccess", + "referencedDeclaration": 343, + "src": "16139:29:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailUints_$313_storage", + "typeString": "struct SmartPiggies.DetailUints storage ref" + } + }, + "id": 1291, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "collateral", + "nodeType": "MemberAccess", + "referencedDeclaration": 300, + "src": "16139:40:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1278, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "16075:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 1280, + "indexExpression": { + "argumentTypes": null, + "id": 1279, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1233, + "src": "16083:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "16075:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 1281, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "addresses", + "nodeType": "MemberAccess", + "referencedDeclaration": 341, + "src": "16075:27:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAddresses_$298_storage", + "typeString": "struct SmartPiggies.DetailAddresses storage ref" + } + }, + "id": 1282, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "collateralERC", + "nodeType": "MemberAccess", + "referencedDeclaration": 291, + "src": "16075:41:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1277, + "name": "PaymentToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 274, + "src": "16062:12:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_PaymentToken_$274_$", + "typeString": "type(contract PaymentToken)" + } + }, + "id": 1283, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "16062:55:4", + "typeDescriptions": { + "typeIdentifier": "t_contract$_PaymentToken_$274", + "typeString": "contract PaymentToken" + } + }, + "id": 1284, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "transfer", + "nodeType": "MemberAccess", + "referencedDeclaration": 268, + "src": "16062:64:4", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,uint256) external returns (bool)" + } + }, + "id": 1292, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "16062:118:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1293, + "nodeType": "ExpressionStatement", + "src": "16062:118:4" + } + ] + } + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1297, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2820, + "src": "16212:3:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1298, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "16212:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 1299, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1233, + "src": "16224:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1300, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "16234:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 1302, + "indexExpression": { + "argumentTypes": null, + "id": 1301, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1233, + "src": "16242:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "16234:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 1303, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "flags", + "nodeType": "MemberAccess", + "referencedDeclaration": 345, + "src": "16234:23:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BoolFlags_$322_storage", + "typeString": "struct SmartPiggies.BoolFlags storage ref" + } + }, + "id": 1304, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "isRequest", + "nodeType": "MemberAccess", + "referencedDeclaration": 315, + "src": "16234:33:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 1296, + "name": "ReclaimAndBurn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 423, + "src": "16197:14:4", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_bool_$returns$__$", + "typeString": "function (address,uint256,bool)" + } + }, + "id": 1305, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "16197:71:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1306, + "nodeType": "EmitStatement", + "src": "16192:76:4" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1308, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "16338:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 1310, + "indexExpression": { + "argumentTypes": null, + "id": 1309, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1233, + "src": "16346:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "16338:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 1311, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "addresses", + "nodeType": "MemberAccess", + "referencedDeclaration": 341, + "src": "16338:27:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAddresses_$298_storage", + "typeString": "struct SmartPiggies.DetailAddresses storage ref" + } + }, + "id": 1312, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "holder", + "nodeType": "MemberAccess", + "referencedDeclaration": 289, + "src": "16338:34:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1313, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1233, + "src": "16374:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1307, + "name": "_removeTokenFromOwnedPiggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2635, + "src": "16309:28:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 1314, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "16309:74:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1315, + "nodeType": "ExpressionStatement", + "src": "16309:74:4" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1317, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1233, + "src": "16449:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1316, + "name": "_resetPiggy", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2789, + "src": "16437:11:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$__$", + "typeString": "function (uint256)" + } + }, + "id": 1318, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "16437:21:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1319, + "nodeType": "ExpressionStatement", + "src": "16437:21:4" + }, + { + "expression": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 1320, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "16471:4:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 1237, + "id": 1321, + "nodeType": "Return", + "src": "16464:11:4" + } + ] + }, + "documentation": null, + "id": 1323, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "reclaimAndBurn", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1234, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1233, + "name": "_tokenId", + "nodeType": "VariableDeclaration", + "scope": 1323, + "src": "15612:16:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1232, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "15612:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "15611:18:4" + }, + "returnParameters": { + "id": 1237, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1236, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 1323, + "src": "15654:4:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 1235, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "15654:4:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "15653:6:4" + }, + "scope": 2805, + "src": "15588:892:4", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 1377, + "nodeType": "Block", + "src": "16547:501:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 1333, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1328, + "name": "auctions", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 369, + "src": "16553:8:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_DetailAuction_$339_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.DetailAuction storage ref)" + } + }, + "id": 1330, + "indexExpression": { + "argumentTypes": null, + "id": 1329, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1325, + "src": "16562:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "16553:18:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAuction_$339_storage", + "typeString": "struct SmartPiggies.DetailAuction storage ref" + } + }, + "id": 1331, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "startBlock", + "nodeType": "MemberAccess", + "referencedDeclaration": 324, + "src": "16553:29:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "30", + "id": 1332, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "16585:1:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "16553:33:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1334, + "nodeType": "ExpressionStatement", + "src": "16553:33:4" + }, + { + "expression": { + "argumentTypes": null, + "id": 1340, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1335, + "name": "auctions", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 369, + "src": "16592:8:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_DetailAuction_$339_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.DetailAuction storage ref)" + } + }, + "id": 1337, + "indexExpression": { + "argumentTypes": null, + "id": 1336, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1325, + "src": "16601:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "16592:18:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAuction_$339_storage", + "typeString": "struct SmartPiggies.DetailAuction storage ref" + } + }, + "id": 1338, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "expiryBlock", + "nodeType": "MemberAccess", + "referencedDeclaration": 326, + "src": "16592:30:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "30", + "id": 1339, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "16625:1:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "16592:34:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1341, + "nodeType": "ExpressionStatement", + "src": "16592:34:4" + }, + { + "expression": { + "argumentTypes": null, + "id": 1347, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1342, + "name": "auctions", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 369, + "src": "16632:8:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_DetailAuction_$339_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.DetailAuction storage ref)" + } + }, + "id": 1344, + "indexExpression": { + "argumentTypes": null, + "id": 1343, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1325, + "src": "16641:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "16632:18:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAuction_$339_storage", + "typeString": "struct SmartPiggies.DetailAuction storage ref" + } + }, + "id": 1345, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "startPrice", + "nodeType": "MemberAccess", + "referencedDeclaration": 328, + "src": "16632:29:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "30", + "id": 1346, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "16664:1:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "16632:33:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1348, + "nodeType": "ExpressionStatement", + "src": "16632:33:4" + }, + { + "expression": { + "argumentTypes": null, + "id": 1354, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1349, + "name": "auctions", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 369, + "src": "16671:8:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_DetailAuction_$339_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.DetailAuction storage ref)" + } + }, + "id": 1351, + "indexExpression": { + "argumentTypes": null, + "id": 1350, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1325, + "src": "16680:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "16671:18:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAuction_$339_storage", + "typeString": "struct SmartPiggies.DetailAuction storage ref" + } + }, + "id": 1352, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "reservePrice", + "nodeType": "MemberAccess", + "referencedDeclaration": 330, + "src": "16671:31:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "30", + "id": 1353, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "16705:1:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "16671:35:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1355, + "nodeType": "ExpressionStatement", + "src": "16671:35:4" + }, + { + "expression": { + "argumentTypes": null, + "id": 1361, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1356, + "name": "auctions", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 369, + "src": "16712:8:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_DetailAuction_$339_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.DetailAuction storage ref)" + } + }, + "id": 1358, + "indexExpression": { + "argumentTypes": null, + "id": 1357, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1325, + "src": "16721:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "16712:18:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAuction_$339_storage", + "typeString": "struct SmartPiggies.DetailAuction storage ref" + } + }, + "id": 1359, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "timeStep", + "nodeType": "MemberAccess", + "referencedDeclaration": 332, + "src": "16712:27:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "30", + "id": 1360, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "16742:1:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "16712:31:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1362, + "nodeType": "ExpressionStatement", + "src": "16712:31:4" + }, + { + "expression": { + "argumentTypes": null, + "id": 1368, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1363, + "name": "auctions", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 369, + "src": "16749:8:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_DetailAuction_$339_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.DetailAuction storage ref)" + } + }, + "id": 1365, + "indexExpression": { + "argumentTypes": null, + "id": 1364, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1325, + "src": "16758:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "16749:18:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAuction_$339_storage", + "typeString": "struct SmartPiggies.DetailAuction storage ref" + } + }, + "id": 1366, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "priceStep", + "nodeType": "MemberAccess", + "referencedDeclaration": 334, + "src": "16749:28:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "30", + "id": 1367, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "16780:1:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "16749:32:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1369, + "nodeType": "ExpressionStatement", + "src": "16749:32:4" + }, + { + "expression": { + "argumentTypes": null, + "id": 1375, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1370, + "name": "auctions", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 369, + "src": "16787:8:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_DetailAuction_$339_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.DetailAuction storage ref)" + } + }, + "id": 1372, + "indexExpression": { + "argumentTypes": null, + "id": 1371, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1325, + "src": "16796:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "16787:18:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAuction_$339_storage", + "typeString": "struct SmartPiggies.DetailAuction storage ref" + } + }, + "id": 1373, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "auctionActive", + "nodeType": "MemberAccess", + "referencedDeclaration": 336, + "src": "16787:32:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "66616c7365", + "id": 1374, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "16822:5:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "src": "16787:40:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1376, + "nodeType": "ExpressionStatement", + "src": "16787:40:4" + } + ] + }, + "documentation": null, + "id": 1378, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_clearAuctionDetails", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1326, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1325, + "name": "_tokenId", + "nodeType": "VariableDeclaration", + "scope": 1378, + "src": "16514:16:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1324, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "16514:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "16513:18:4" + }, + "returnParameters": { + "id": 1327, + "nodeType": "ParameterList", + "parameters": [], + "src": "16547:0:4" + }, + "scope": 2805, + "src": "16484:564:4", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 1548, + "nodeType": "Block", + "src": "17261:1866:4", + "statements": [ + { + "assignments": [ + 1396 + ], + "declarations": [ + { + "constant": false, + "id": 1396, + "name": "_auctionExpiry", + "nodeType": "VariableDeclaration", + "scope": 1548, + "src": "17267:22:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1395, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "17267:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1402, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1400, + "name": "_auctionLength", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1386, + "src": "17309:14:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1397, + "name": "block", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2810, + "src": "17292:5:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_block", + "typeString": "block" + } + }, + "id": 1398, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "number", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "17292:12:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1399, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 224, + "src": "17292:16:4", + "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": 1401, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "17292:32:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "17267:57:4" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 1411, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1404, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "17338:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 1406, + "indexExpression": { + "argumentTypes": null, + "id": 1405, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1380, + "src": "17346:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "17338:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 1407, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "addresses", + "nodeType": "MemberAccess", + "referencedDeclaration": 341, + "src": "17338:27:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAddresses_$298_storage", + "typeString": "struct SmartPiggies.DetailAddresses storage ref" + } + }, + "id": 1408, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "holder", + "nodeType": "MemberAccess", + "referencedDeclaration": 289, + "src": "17338:34:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1409, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2820, + "src": "17376:3:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1410, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "17376:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "17338:48:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "796f75206d757374206f776e206120746f6b656e20746f2061756374696f6e206974", + "id": 1412, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "17388:36:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_347b553f3479dd6198fdca821cd75f6d27d0336c41b4547759f0a4c4f21c9a92", + "typeString": "literal_string \"you must own a token to auction it\"" + }, + "value": "you must own a token to auction it" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_347b553f3479dd6198fdca821cd75f6d27d0336c41b4547759f0a4c4f21c9a92", + "typeString": "literal_string \"you must own a token to auction it\"" + } + ], + "id": 1403, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2823, + 2824 + ], + "referencedDeclaration": 2824, + "src": "17330:7:4", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 1413, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "17330:95:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1414, + "nodeType": "ExpressionStatement", + "src": "17330:95:4" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1423, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1416, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "17439:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 1418, + "indexExpression": { + "argumentTypes": null, + "id": 1417, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1380, + "src": "17447:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "17439:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 1419, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "uintDetails", + "nodeType": "MemberAccess", + "referencedDeclaration": 343, + "src": "17439:29:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailUints_$313_storage", + "typeString": "struct SmartPiggies.DetailUints storage ref" + } + }, + "id": 1420, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "expiry", + "nodeType": "MemberAccess", + "referencedDeclaration": 306, + "src": "17439:36:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1421, + "name": "block", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2810, + "src": "17478:5:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_block", + "typeString": "block" + } + }, + "id": 1422, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "number", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "17478:12:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "17439:51:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "6f7074696f6e206d757374206e6f742062652065787069726564", + "id": 1424, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "17492:28:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_ba126d0c204e17df1d0c888d9310fb1a71bf1e5ac964bdfd20946754b0eb84fe", + "typeString": "literal_string \"option must not be expired\"" + }, + "value": "option must not be expired" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_ba126d0c204e17df1d0c888d9310fb1a71bf1e5ac964bdfd20946754b0eb84fe", + "typeString": "literal_string \"option must not be expired\"" + } + ], + "id": 1415, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2823, + 2824 + ], + "referencedDeclaration": 2824, + "src": "17431:7:4", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 1425, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "17431:90:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1426, + "nodeType": "ExpressionStatement", + "src": "17431:90:4" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1434, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1428, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "17535:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 1430, + "indexExpression": { + "argumentTypes": null, + "id": 1429, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1380, + "src": "17543:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "17535:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 1431, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "uintDetails", + "nodeType": "MemberAccess", + "referencedDeclaration": 343, + "src": "17535:29:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailUints_$313_storage", + "typeString": "struct SmartPiggies.DetailUints storage ref" + } + }, + "id": 1432, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "expiry", + "nodeType": "MemberAccess", + "referencedDeclaration": 306, + "src": "17535:36:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "id": 1433, + "name": "_auctionExpiry", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1396, + "src": "17574:14:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "17535:53:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "61756374696f6e2063616e6e6f742065787069726520616674657220746865206f7074696f6e", + "id": 1435, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "17590:40:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_daf46ad355eb83d623c4a90b6054984c4a49e4edba5a28880e2c350c8e4a5235", + "typeString": "literal_string \"auction cannot expire after the option\"" + }, + "value": "auction cannot expire after the option" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_daf46ad355eb83d623c4a90b6054984c4a49e4edba5a28880e2c350c8e4a5235", + "typeString": "literal_string \"auction cannot expire after the option\"" + } + ], + "id": 1427, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2823, + 2824 + ], + "referencedDeclaration": 2824, + "src": "17527:7:4", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 1436, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "17527:104:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1437, + "nodeType": "ExpressionStatement", + "src": "17527:104:4" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1444, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "17645:39:4", + "subExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1439, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "17646:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 1441, + "indexExpression": { + "argumentTypes": null, + "id": 1440, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1380, + "src": "17654:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "17646:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 1442, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "flags", + "nodeType": "MemberAccess", + "referencedDeclaration": 345, + "src": "17646:23:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BoolFlags_$322_storage", + "typeString": "struct SmartPiggies.BoolFlags storage ref" + } + }, + "id": 1443, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "hasBeenCleared", + "nodeType": "MemberAccess", + "referencedDeclaration": 321, + "src": "17646:38:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "6f7074696f6e2063616e6e6f742068617665206265656e20636c6561726564", + "id": 1445, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "17686:33:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_27073f39ec9976896b20149ca5e815b73111f8a75112e9c5d8b9ee35967e8927", + "typeString": "literal_string \"option cannot have been cleared\"" + }, + "value": "option cannot have been cleared" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_27073f39ec9976896b20149ca5e815b73111f8a75112e9c5d8b9ee35967e8927", + "typeString": "literal_string \"option cannot have been cleared\"" + } + ], + "id": 1438, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2823, + 2824 + ], + "referencedDeclaration": 2824, + "src": "17637:7:4", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 1446, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "17637:83:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1447, + "nodeType": "ExpressionStatement", + "src": "17637:83:4" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1453, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "17734:33:4", + "subExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1449, + "name": "auctions", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 369, + "src": "17735:8:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_DetailAuction_$339_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.DetailAuction storage ref)" + } + }, + "id": 1451, + "indexExpression": { + "argumentTypes": null, + "id": 1450, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1380, + "src": "17744:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "17735:18:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAuction_$339_storage", + "typeString": "struct SmartPiggies.DetailAuction storage ref" + } + }, + "id": 1452, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "auctionActive", + "nodeType": "MemberAccess", + "referencedDeclaration": 336, + "src": "17735:32:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "61756374696f6e2063616e6e6f7420616c72656164792062652072756e6e696e67", + "id": 1454, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "17769:35:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_75e7be135ed90dd1a70249ea02e2cf969271d5c8707ac2d8fa92cff139cff01a", + "typeString": "literal_string \"auction cannot already be running\"" + }, + "value": "auction cannot already be running" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_75e7be135ed90dd1a70249ea02e2cf969271d5c8707ac2d8fa92cff139cff01a", + "typeString": "literal_string \"auction cannot already be running\"" + } + ], + "id": 1448, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2823, + 2824 + ], + "referencedDeclaration": 2824, + "src": "17726:7:4", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 1455, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "17726:79:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1456, + "nodeType": "ExpressionStatement", + "src": "17726:79:4" + }, + { + "condition": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1457, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "18153:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 1459, + "indexExpression": { + "argumentTypes": null, + "id": 1458, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1380, + "src": "18161:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "18153:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 1460, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "flags", + "nodeType": "MemberAccess", + "referencedDeclaration": 345, + "src": "18153:23:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BoolFlags_$322_storage", + "typeString": "struct SmartPiggies.BoolFlags storage ref" + } + }, + "id": 1461, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "isRequest", + "nodeType": "MemberAccess", + "referencedDeclaration": 315, + "src": "18153:33:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 1484, + "nodeType": "IfStatement", + "src": "18149:359:4", + "trueBody": { + "id": 1483, + "nodeType": "Block", + "src": "18188:320:4", + "statements": [ + { + "assignments": [ + 1463 + ], + "declarations": [ + { + "constant": false, + "id": 1463, + "name": "success", + "nodeType": "VariableDeclaration", + "scope": 1483, + "src": "18196:12:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 1462, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "18196:4:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1477, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1465, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "18243:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 1467, + "indexExpression": { + "argumentTypes": null, + "id": 1466, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1380, + "src": "18251:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "18243:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 1468, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "addresses", + "nodeType": "MemberAccess", + "referencedDeclaration": 341, + "src": "18243:27:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAddresses_$298_storage", + "typeString": "struct SmartPiggies.DetailAddresses storage ref" + } + }, + "id": 1469, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "premiumERC", + "nodeType": "MemberAccess", + "referencedDeclaration": 293, + "src": "18243:38:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1470, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2820, + "src": "18291:3:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1471, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "18291:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1473, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2843, + "src": "18319:4:4", + "typeDescriptions": { + "typeIdentifier": "t_contract$_SmartPiggies_$2805", + "typeString": "contract SmartPiggies" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_SmartPiggies_$2805", + "typeString": "contract SmartPiggies" + } + ], + "id": 1472, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "18311:7:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 1474, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "18311:13:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1475, + "name": "_reservePrice", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1384, + "src": "18334:13:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1464, + "name": "attemptPaymentTransfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 537, + "src": "18211:22:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,address,address,uint256) returns (bool)" + } + }, + "id": 1476, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "18211:230:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "18196:245:4" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1479, + "name": "success", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1463, + "src": "18457:7:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "7472616e7366657246726f6d20646964206e6f742072657475726e2074727565", + "id": 1480, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "18466:34:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_35b8e48e80d109dedabaecc36aa806b1e346b95a74c9bec1da46923b6d341700", + "typeString": "literal_string \"transferFrom did not return true\"" + }, + "value": "transferFrom did not return true" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_35b8e48e80d109dedabaecc36aa806b1e346b95a74c9bec1da46923b6d341700", + "typeString": "literal_string \"transferFrom did not return true\"" + } + ], + "id": 1478, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2823, + 2824 + ], + "referencedDeclaration": 2824, + "src": "18449:7:4", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 1481, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "18449:52:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1482, + "nodeType": "ExpressionStatement", + "src": "18449:52:4" + } + ] + } + }, + { + "expression": { + "argumentTypes": null, + "id": 1491, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1485, + "name": "auctions", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 369, + "src": "18607:8:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_DetailAuction_$339_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.DetailAuction storage ref)" + } + }, + "id": 1487, + "indexExpression": { + "argumentTypes": null, + "id": 1486, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1380, + "src": "18616:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "18607:18:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAuction_$339_storage", + "typeString": "struct SmartPiggies.DetailAuction storage ref" + } + }, + "id": 1488, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "startBlock", + "nodeType": "MemberAccess", + "referencedDeclaration": 324, + "src": "18607:29:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1489, + "name": "block", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2810, + "src": "18639:5:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_block", + "typeString": "block" + } + }, + "id": 1490, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "number", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "18639:12:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "18607:44:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1492, + "nodeType": "ExpressionStatement", + "src": "18607:44:4" + }, + { + "expression": { + "argumentTypes": null, + "id": 1498, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1493, + "name": "auctions", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 369, + "src": "18657:8:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_DetailAuction_$339_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.DetailAuction storage ref)" + } + }, + "id": 1495, + "indexExpression": { + "argumentTypes": null, + "id": 1494, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1380, + "src": "18666:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "18657:18:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAuction_$339_storage", + "typeString": "struct SmartPiggies.DetailAuction storage ref" + } + }, + "id": 1496, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "expiryBlock", + "nodeType": "MemberAccess", + "referencedDeclaration": 326, + "src": "18657:30:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 1497, + "name": "_auctionExpiry", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1396, + "src": "18690:14:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "18657:47:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1499, + "nodeType": "ExpressionStatement", + "src": "18657:47:4" + }, + { + "expression": { + "argumentTypes": null, + "id": 1505, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1500, + "name": "auctions", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 369, + "src": "18710:8:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_DetailAuction_$339_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.DetailAuction storage ref)" + } + }, + "id": 1502, + "indexExpression": { + "argumentTypes": null, + "id": 1501, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1380, + "src": "18719:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "18710:18:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAuction_$339_storage", + "typeString": "struct SmartPiggies.DetailAuction storage ref" + } + }, + "id": 1503, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "startPrice", + "nodeType": "MemberAccess", + "referencedDeclaration": 328, + "src": "18710:29:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 1504, + "name": "_startPrice", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1382, + "src": "18742:11:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "18710:43:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1506, + "nodeType": "ExpressionStatement", + "src": "18710:43:4" + }, + { + "expression": { + "argumentTypes": null, + "id": 1512, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1507, + "name": "auctions", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 369, + "src": "18759:8:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_DetailAuction_$339_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.DetailAuction storage ref)" + } + }, + "id": 1509, + "indexExpression": { + "argumentTypes": null, + "id": 1508, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1380, + "src": "18768:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "18759:18:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAuction_$339_storage", + "typeString": "struct SmartPiggies.DetailAuction storage ref" + } + }, + "id": 1510, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "reservePrice", + "nodeType": "MemberAccess", + "referencedDeclaration": 330, + "src": "18759:31:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 1511, + "name": "_reservePrice", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1384, + "src": "18793:13:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "18759:47:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1513, + "nodeType": "ExpressionStatement", + "src": "18759:47:4" + }, + { + "expression": { + "argumentTypes": null, + "id": 1519, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1514, + "name": "auctions", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 369, + "src": "18812:8:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_DetailAuction_$339_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.DetailAuction storage ref)" + } + }, + "id": 1516, + "indexExpression": { + "argumentTypes": null, + "id": 1515, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1380, + "src": "18821:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "18812:18:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAuction_$339_storage", + "typeString": "struct SmartPiggies.DetailAuction storage ref" + } + }, + "id": 1517, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "timeStep", + "nodeType": "MemberAccess", + "referencedDeclaration": 332, + "src": "18812:27:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 1518, + "name": "_timeStep", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1388, + "src": "18842:9:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "18812:39:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1520, + "nodeType": "ExpressionStatement", + "src": "18812:39:4" + }, + { + "expression": { + "argumentTypes": null, + "id": 1526, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1521, + "name": "auctions", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 369, + "src": "18857:8:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_DetailAuction_$339_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.DetailAuction storage ref)" + } + }, + "id": 1523, + "indexExpression": { + "argumentTypes": null, + "id": 1522, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1380, + "src": "18866:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "18857:18:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAuction_$339_storage", + "typeString": "struct SmartPiggies.DetailAuction storage ref" + } + }, + "id": 1524, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "priceStep", + "nodeType": "MemberAccess", + "referencedDeclaration": 334, + "src": "18857:28:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 1525, + "name": "_priceStep", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1390, + "src": "18888:10:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "18857:41:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1527, + "nodeType": "ExpressionStatement", + "src": "18857:41:4" + }, + { + "expression": { + "argumentTypes": null, + "id": 1533, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1528, + "name": "auctions", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 369, + "src": "18904:8:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_DetailAuction_$339_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.DetailAuction storage ref)" + } + }, + "id": 1530, + "indexExpression": { + "argumentTypes": null, + "id": 1529, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1380, + "src": "18913:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "18904:18:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAuction_$339_storage", + "typeString": "struct SmartPiggies.DetailAuction storage ref" + } + }, + "id": 1531, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "auctionActive", + "nodeType": "MemberAccess", + "referencedDeclaration": 336, + "src": "18904:32:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 1532, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "18939:4:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "src": "18904:39:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1534, + "nodeType": "ExpressionStatement", + "src": "18904:39:4" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1536, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2820, + "src": "18975:3:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1537, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "18975:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 1538, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1380, + "src": "18993:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 1539, + "name": "_startPrice", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1382, + "src": "19009:11:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 1540, + "name": "_reservePrice", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1384, + "src": "19028:13:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 1541, + "name": "_auctionLength", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1386, + "src": "19049:14:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 1542, + "name": "_timeStep", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1388, + "src": "19071:9:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 1543, + "name": "_priceStep", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1390, + "src": "19088:10:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1535, + "name": "StartAuction", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 439, + "src": "18955:12:4", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256,uint256,uint256,uint256,uint256,uint256)" + } + }, + "id": 1544, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "18955:149:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1545, + "nodeType": "EmitStatement", + "src": "18950:154:4" + }, + { + "expression": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 1546, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "19118:4:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 1394, + "id": 1547, + "nodeType": "Return", + "src": "19111:11:4" + } + ] + }, + "documentation": null, + "id": 1549, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "startAuction", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1391, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1380, + "name": "_tokenId", + "nodeType": "VariableDeclaration", + "scope": 1549, + "src": "17079:16:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1379, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "17079:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1382, + "name": "_startPrice", + "nodeType": "VariableDeclaration", + "scope": 1549, + "src": "17101:19:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1381, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "17101:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1384, + "name": "_reservePrice", + "nodeType": "VariableDeclaration", + "scope": 1549, + "src": "17126:21:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1383, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "17126:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1386, + "name": "_auctionLength", + "nodeType": "VariableDeclaration", + "scope": 1549, + "src": "17153:22:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1385, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "17153:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1388, + "name": "_timeStep", + "nodeType": "VariableDeclaration", + "scope": 1549, + "src": "17181:17:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1387, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "17181:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1390, + "name": "_priceStep", + "nodeType": "VariableDeclaration", + "scope": 1549, + "src": "17204:18:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1389, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "17204:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "17073:153:4" + }, + "returnParameters": { + "id": 1394, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1393, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 1549, + "src": "17253:4:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 1392, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "17253:4:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "17252:6:4" + }, + "scope": 2805, + "src": "17052:2075:4", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "external" + }, + { + "body": { + "id": 1629, + "nodeType": "Block", + "src": "19201:936:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 1564, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1557, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "19215:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 1559, + "indexExpression": { + "argumentTypes": null, + "id": 1558, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1551, + "src": "19223:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "19215:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 1560, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "addresses", + "nodeType": "MemberAccess", + "referencedDeclaration": 341, + "src": "19215:27:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAddresses_$298_storage", + "typeString": "struct SmartPiggies.DetailAddresses storage ref" + } + }, + "id": 1561, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "holder", + "nodeType": "MemberAccess", + "referencedDeclaration": 289, + "src": "19215:34:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1562, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2820, + "src": "19253:3:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1563, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "19253:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "19215:48:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "796f75206d757374206f776e206120746f6b656e20746f2061756374696f6e206974", + "id": 1565, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "19265:36:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_347b553f3479dd6198fdca821cd75f6d27d0336c41b4547759f0a4c4f21c9a92", + "typeString": "literal_string \"you must own a token to auction it\"" + }, + "value": "you must own a token to auction it" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_347b553f3479dd6198fdca821cd75f6d27d0336c41b4547759f0a4c4f21c9a92", + "typeString": "literal_string \"you must own a token to auction it\"" + } + ], + "id": 1556, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2823, + 2824 + ], + "referencedDeclaration": 2824, + "src": "19207:7:4", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 1566, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "19207:95:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1567, + "nodeType": "ExpressionStatement", + "src": "19207:95:4" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1569, + "name": "auctions", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 369, + "src": "19316:8:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_DetailAuction_$339_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.DetailAuction storage ref)" + } + }, + "id": 1571, + "indexExpression": { + "argumentTypes": null, + "id": 1570, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1551, + "src": "19325:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "19316:18:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAuction_$339_storage", + "typeString": "struct SmartPiggies.DetailAuction storage ref" + } + }, + "id": 1572, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "auctionActive", + "nodeType": "MemberAccess", + "referencedDeclaration": 336, + "src": "19316:32:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "61756374696f6e206d7573742062652061637469766520746f2063616e63656c206974", + "id": 1573, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "19350:37:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_d628b799737a92349c6ea16e9a2c5925f97e27b7f8836620f38d9e95dcb51daa", + "typeString": "literal_string \"auction must be active to cancel it\"" + }, + "value": "auction must be active to cancel it" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_d628b799737a92349c6ea16e9a2c5925f97e27b7f8836620f38d9e95dcb51daa", + "typeString": "literal_string \"auction must be active to cancel it\"" + } + ], + "id": 1568, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2823, + 2824 + ], + "referencedDeclaration": 2824, + "src": "19308:7:4", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 1574, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "19308:80:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1575, + "nodeType": "ExpressionStatement", + "src": "19308:80:4" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1581, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "19402:37:4", + "subExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1577, + "name": "auctions", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 369, + "src": "19403:8:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_DetailAuction_$339_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.DetailAuction storage ref)" + } + }, + "id": 1579, + "indexExpression": { + "argumentTypes": null, + "id": 1578, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1551, + "src": "19412:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "19403:18:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAuction_$339_storage", + "typeString": "struct SmartPiggies.DetailAuction storage ref" + } + }, + "id": 1580, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "satisfyInProgress", + "nodeType": "MemberAccess", + "referencedDeclaration": 338, + "src": "19403:36:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "61756374696f6e2063616e6e6f7420626520696e207468652070726f63657373206f66206265696e6720736174697366696564", + "id": 1582, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "19441:53:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_2e85065a51dd5ddc3b550cdcec6a89d37b41e2021606af9209014f7e9b3e3717", + "typeString": "literal_string \"auction cannot be in the process of being satisfied\"" + }, + "value": "auction cannot be in the process of being satisfied" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_2e85065a51dd5ddc3b550cdcec6a89d37b41e2021606af9209014f7e9b3e3717", + "typeString": "literal_string \"auction cannot be in the process of being satisfied\"" + } + ], + "id": 1576, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2823, + 2824 + ], + "referencedDeclaration": 2824, + "src": "19394:7:4", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 1583, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "19394:101:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1584, + "nodeType": "ExpressionStatement", + "src": "19394:101:4" + }, + { + "condition": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1585, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "19557:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 1587, + "indexExpression": { + "argumentTypes": null, + "id": 1586, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1551, + "src": "19565:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "19557:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 1588, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "flags", + "nodeType": "MemberAccess", + "referencedDeclaration": 345, + "src": "19557:23:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BoolFlags_$322_storage", + "typeString": "struct SmartPiggies.BoolFlags storage ref" + } + }, + "id": 1589, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "isRequest", + "nodeType": "MemberAccess", + "referencedDeclaration": 315, + "src": "19557:33:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 1611, + "nodeType": "IfStatement", + "src": "19553:449:4", + "trueBody": { + "id": 1610, + "nodeType": "Block", + "src": "19592:410:4", + "statements": [ + { + "assignments": [ + 1591 + ], + "declarations": [ + { + "constant": false, + "id": 1591, + "name": "_premiumToReturn", + "nodeType": "VariableDeclaration", + "scope": 1610, + "src": "19642:24:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1590, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "19642:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1596, + "initialValue": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1592, + "name": "auctions", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 369, + "src": "19669:8:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_DetailAuction_$339_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.DetailAuction storage ref)" + } + }, + "id": 1594, + "indexExpression": { + "argumentTypes": null, + "id": 1593, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1551, + "src": "19678:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "19669:18:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAuction_$339_storage", + "typeString": "struct SmartPiggies.DetailAuction storage ref" + } + }, + "id": 1595, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "reservePrice", + "nodeType": "MemberAccess", + "referencedDeclaration": 330, + "src": "19669:31:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "19642:58:4" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1605, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2820, + "src": "19966:3:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1606, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "19966:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 1607, + "name": "_premiumToReturn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1591, + "src": "19978:16:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1598, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "19917:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 1600, + "indexExpression": { + "argumentTypes": null, + "id": 1599, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1551, + "src": "19925:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "19917:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 1601, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "addresses", + "nodeType": "MemberAccess", + "referencedDeclaration": 341, + "src": "19917:27:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAddresses_$298_storage", + "typeString": "struct SmartPiggies.DetailAddresses storage ref" + } + }, + "id": 1602, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "premiumERC", + "nodeType": "MemberAccess", + "referencedDeclaration": 293, + "src": "19917:38:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1597, + "name": "PaymentToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 274, + "src": "19904:12:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_PaymentToken_$274_$", + "typeString": "type(contract PaymentToken)" + } + }, + "id": 1603, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "19904:52:4", + "typeDescriptions": { + "typeIdentifier": "t_contract$_PaymentToken_$274", + "typeString": "contract PaymentToken" + } + }, + "id": 1604, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "transfer", + "nodeType": "MemberAccess", + "referencedDeclaration": 268, + "src": "19904:61:4", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,uint256) external returns (bool)" + } + }, + "id": 1608, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "19904:91:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1609, + "nodeType": "ExpressionStatement", + "src": "19904:91:4" + } + ] + } + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1613, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1551, + "src": "20028:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1612, + "name": "_clearAuctionDetails", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1378, + "src": "20007:20:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$__$", + "typeString": "function (uint256)" + } + }, + "id": 1614, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "20007:30:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1615, + "nodeType": "ExpressionStatement", + "src": "20007:30:4" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1617, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2820, + "src": "20059:3:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1618, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "20059:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 1619, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1551, + "src": "20071:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1620, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "20081:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 1622, + "indexExpression": { + "argumentTypes": null, + "id": 1621, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1551, + "src": "20089:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "20081:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 1623, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "flags", + "nodeType": "MemberAccess", + "referencedDeclaration": 345, + "src": "20081:23:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BoolFlags_$322_storage", + "typeString": "struct SmartPiggies.BoolFlags storage ref" + } + }, + "id": 1624, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "isRequest", + "nodeType": "MemberAccess", + "referencedDeclaration": 315, + "src": "20081:33:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 1616, + "name": "EndAuction", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 447, + "src": "20048:10:4", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_bool_$returns$__$", + "typeString": "function (address,uint256,bool)" + } + }, + "id": 1625, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "20048:67:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1626, + "nodeType": "EmitStatement", + "src": "20043:72:4" + }, + { + "expression": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 1627, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "20128:4:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 1555, + "id": 1628, + "nodeType": "Return", + "src": "20121:11:4" + } + ] + }, + "documentation": null, + "id": 1630, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "endAuction", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1552, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1551, + "name": "_tokenId", + "nodeType": "VariableDeclaration", + "scope": 1630, + "src": "19151:16:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1550, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "19151:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "19150:18:4" + }, + "returnParameters": { + "id": 1555, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1554, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 1630, + "src": "19193:4:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 1553, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "19193:4:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "19192:6:4" + }, + "scope": 2805, + "src": "19131:1006:4", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 1687, + "nodeType": "Block", + "src": "20396:578:4", + "statements": [ + { + "assignments": [ + 1638 + ], + "declarations": [ + { + "constant": false, + "id": 1638, + "name": "_pStart", + "nodeType": "VariableDeclaration", + "scope": 1687, + "src": "20578:15:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1637, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "20578:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1643, + "initialValue": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1639, + "name": "auctions", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 369, + "src": "20596:8:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_DetailAuction_$339_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.DetailAuction storage ref)" + } + }, + "id": 1641, + "indexExpression": { + "argumentTypes": null, + "id": 1640, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1632, + "src": "20605:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "20596:18:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAuction_$339_storage", + "typeString": "struct SmartPiggies.DetailAuction storage ref" + } + }, + "id": 1642, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "startPrice", + "nodeType": "MemberAccess", + "referencedDeclaration": 328, + "src": "20596:29:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "20578:47:4" + }, + { + "assignments": [ + 1645 + ], + "declarations": [ + { + "constant": false, + "id": 1645, + "name": "_pDelta", + "nodeType": "VariableDeclaration", + "scope": 1687, + "src": "20699:15:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1644, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "20699:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1667, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1662, + "name": "auctions", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 369, + "src": "20805:8:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_DetailAuction_$339_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.DetailAuction storage ref)" + } + }, + "id": 1664, + "indexExpression": { + "argumentTypes": null, + "id": 1663, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1632, + "src": "20814:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "20805:18:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAuction_$339_storage", + "typeString": "struct SmartPiggies.DetailAuction storage ref" + } + }, + "id": 1665, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "timeStep", + "nodeType": "MemberAccess", + "referencedDeclaration": 332, + "src": "20805:27:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1656, + "name": "auctions", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 369, + "src": "20771:8:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_DetailAuction_$339_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.DetailAuction storage ref)" + } + }, + "id": 1658, + "indexExpression": { + "argumentTypes": null, + "id": 1657, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1632, + "src": "20780:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "20771:18:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAuction_$339_storage", + "typeString": "struct SmartPiggies.DetailAuction storage ref" + } + }, + "id": 1659, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "priceStep", + "nodeType": "MemberAccess", + "referencedDeclaration": 334, + "src": "20771:28:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1650, + "name": "auctions", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 369, + "src": "20736:8:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_DetailAuction_$339_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.DetailAuction storage ref)" + } + }, + "id": 1652, + "indexExpression": { + "argumentTypes": null, + "id": 1651, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1632, + "src": "20745:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "20736:18:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAuction_$339_storage", + "typeString": "struct SmartPiggies.DetailAuction storage ref" + } + }, + "id": 1653, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "startBlock", + "nodeType": "MemberAccess", + "referencedDeclaration": 324, + "src": "20736:29:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1646, + "name": "block", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2810, + "src": "20718:5:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_block", + "typeString": "block" + } + }, + "id": 1647, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "number", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "20718:12:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 1648, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "20717:14:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1649, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sub", + "nodeType": "MemberAccess", + "referencedDeclaration": 200, + "src": "20717:18:4", + "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": 1654, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "20717:49:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1655, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "mul", + "nodeType": "MemberAccess", + "referencedDeclaration": 152, + "src": "20717:53:4", + "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": 1660, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "20717:83:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1661, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "div", + "nodeType": "MemberAccess", + "referencedDeclaration": 176, + "src": "20717:87:4", + "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": 1666, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "20717:116:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "20699:134:4" + }, + { + "condition": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1668, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "20843:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 1670, + "indexExpression": { + "argumentTypes": null, + "id": 1669, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1632, + "src": "20851:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "20843:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 1671, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "flags", + "nodeType": "MemberAccess", + "referencedDeclaration": 345, + "src": "20843:23:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BoolFlags_$322_storage", + "typeString": "struct SmartPiggies.BoolFlags storage ref" + } + }, + "id": 1672, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "isRequest", + "nodeType": "MemberAccess", + "referencedDeclaration": 315, + "src": "20843:33:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 1685, + "nodeType": "Block", + "src": "20926:44:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1681, + "name": "_pDelta", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1645, + "src": "20954:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 1679, + "name": "_pStart", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1638, + "src": "20942:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1680, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sub", + "nodeType": "MemberAccess", + "referencedDeclaration": 200, + "src": "20942:11:4", + "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": 1682, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "20942:20:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 1683, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "20941:22:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 1636, + "id": 1684, + "nodeType": "Return", + "src": "20934:29:4" + } + ] + }, + "id": 1686, + "nodeType": "IfStatement", + "src": "20839:131:4", + "trueBody": { + "id": 1678, + "nodeType": "Block", + "src": "20878:42:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1675, + "name": "_pDelta", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1645, + "src": "20905:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 1673, + "name": "_pStart", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1638, + "src": "20893:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1674, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 224, + "src": "20893:11:4", + "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": 1676, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "20893:20:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 1636, + "id": 1677, + "nodeType": "Return", + "src": "20886:27:4" + } + ] + } + } + ] + }, + "documentation": null, + "id": 1688, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getAuctionPrice", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1633, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1632, + "name": "_tokenId", + "nodeType": "VariableDeclaration", + "scope": 1688, + "src": "20332:16:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1631, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "20332:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "20331:18:4" + }, + "returnParameters": { + "id": 1636, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1635, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 1688, + "src": "20385:7:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1634, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "20385:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "20384:9:4" + }, + "scope": 2805, + "src": "20307:667:4", + "stateMutability": "view", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 1982, + "nodeType": "Block", + "src": "21106:3569:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1700, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "21120:37:4", + "subExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1696, + "name": "auctions", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 369, + "src": "21121:8:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_DetailAuction_$339_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.DetailAuction storage ref)" + } + }, + "id": 1698, + "indexExpression": { + "argumentTypes": null, + "id": 1697, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1690, + "src": "21130:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "21121:18:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAuction_$339_storage", + "typeString": "struct SmartPiggies.DetailAuction storage ref" + } + }, + "id": 1699, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "satisfyInProgress", + "nodeType": "MemberAccess", + "referencedDeclaration": 338, + "src": "21121:36:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "63616e6e6f74207265656e74657220746869732066756e6374696f6e207768696c6520697420697320696e2070726f6772657373", + "id": 1701, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "21159:54:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_6a34dcd3ede81bbd1e22bc4d5fb3a35a06c8f704b873ce69d53ec62180454676", + "typeString": "literal_string \"cannot reenter this function while it is in progress\"" + }, + "value": "cannot reenter this function while it is in progress" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_6a34dcd3ede81bbd1e22bc4d5fb3a35a06c8f704b873ce69d53ec62180454676", + "typeString": "literal_string \"cannot reenter this function while it is in progress\"" + } + ], + "id": 1695, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2823, + 2824 + ], + "referencedDeclaration": 2824, + "src": "21112:7:4", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 1702, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "21112:102:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1703, + "nodeType": "ExpressionStatement", + "src": "21112:102:4" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 1712, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1705, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "21228:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 1707, + "indexExpression": { + "argumentTypes": null, + "id": 1706, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1690, + "src": "21236:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "21228:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 1708, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "addresses", + "nodeType": "MemberAccess", + "referencedDeclaration": 341, + "src": "21228:27:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAddresses_$298_storage", + "typeString": "struct SmartPiggies.DetailAddresses storage ref" + } + }, + "id": 1709, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "holder", + "nodeType": "MemberAccess", + "referencedDeclaration": 289, + "src": "21228:34:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1710, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2820, + "src": "21266:3:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1711, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "21266:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "21228:48:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "63616e6e6f74207361746973667920796f7572206f776e2061756374696f6e3b2075736520656e6441756374696f6e20696e7374656164", + "id": 1713, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "21278:57:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_112f3e3ad5bb7a63f742b0817bbe32876de85d03ad362398959d793954c3e061", + "typeString": "literal_string \"cannot satisfy your own auction; use endAuction instead\"" + }, + "value": "cannot satisfy your own auction; use endAuction instead" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_112f3e3ad5bb7a63f742b0817bbe32876de85d03ad362398959d793954c3e061", + "typeString": "literal_string \"cannot satisfy your own auction; use endAuction instead\"" + } + ], + "id": 1704, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2823, + 2824 + ], + "referencedDeclaration": 2824, + "src": "21220:7:4", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 1714, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "21220:116:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1715, + "nodeType": "ExpressionStatement", + "src": "21220:116:4" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1717, + "name": "auctions", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 369, + "src": "21350:8:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_DetailAuction_$339_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.DetailAuction storage ref)" + } + }, + "id": 1719, + "indexExpression": { + "argumentTypes": null, + "id": 1718, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1690, + "src": "21359:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "21350:18:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAuction_$339_storage", + "typeString": "struct SmartPiggies.DetailAuction storage ref" + } + }, + "id": 1720, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "auctionActive", + "nodeType": "MemberAccess", + "referencedDeclaration": 336, + "src": "21350:32:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "61756374696f6e206d7573742062652061637469766520746f2073617469736679206974", + "id": 1721, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "21384:38:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_47fbac54a3159745f1291bcc5f2bf48b19397de937c242968b64ec1bba31c110", + "typeString": "literal_string \"auction must be active to satisfy it\"" + }, + "value": "auction must be active to satisfy it" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_47fbac54a3159745f1291bcc5f2bf48b19397de937c242968b64ec1bba31c110", + "typeString": "literal_string \"auction must be active to satisfy it\"" + } + ], + "id": 1716, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2823, + 2824 + ], + "referencedDeclaration": 2824, + "src": "21342:7:4", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 1722, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "21342:81:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1723, + "nodeType": "ExpressionStatement", + "src": "21342:81:4" + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1730, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1724, + "name": "auctions", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 369, + "src": "21512:8:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_DetailAuction_$339_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.DetailAuction storage ref)" + } + }, + "id": 1726, + "indexExpression": { + "argumentTypes": null, + "id": 1725, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1690, + "src": "21521:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "21512:18:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAuction_$339_storage", + "typeString": "struct SmartPiggies.DetailAuction storage ref" + } + }, + "id": 1727, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "expiryBlock", + "nodeType": "MemberAccess", + "referencedDeclaration": 326, + "src": "21512:30:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1728, + "name": "block", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2810, + "src": "21545:5:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_block", + "typeString": "block" + } + }, + "id": 1729, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "number", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "21545:12:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "21512:45:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 1738, + "nodeType": "IfStatement", + "src": "21508:206:4", + "trueBody": { + "id": 1737, + "nodeType": "Block", + "src": "21559:155:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1732, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1690, + "src": "21678:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1731, + "name": "_clearAuctionDetails", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1378, + "src": "21657:20:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$__$", + "typeString": "function (uint256)" + } + }, + "id": 1733, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "21657:30:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1734, + "nodeType": "ExpressionStatement", + "src": "21657:30:4" + }, + { + "expression": { + "argumentTypes": null, + "hexValue": "66616c7365", + "id": 1735, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "21702:5:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "functionReturnParameters": 1694, + "id": 1736, + "nodeType": "Return", + "src": "21695:12:4" + } + ] + } + }, + { + "assignments": [ + 1740 + ], + "declarations": [ + { + "constant": false, + "id": 1740, + "name": "_auctionPremium", + "nodeType": "VariableDeclaration", + "scope": 1982, + "src": "21860:23:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1739, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "21860:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1744, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1742, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1690, + "src": "21902:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1741, + "name": "getAuctionPrice", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1688, + "src": "21886:15:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256) view returns (uint256)" + } + }, + "id": 1743, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "21886:25:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "21860:51:4" + }, + { + "expression": { + "argumentTypes": null, + "id": 1750, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1745, + "name": "auctions", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 369, + "src": "21935:8:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_DetailAuction_$339_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.DetailAuction storage ref)" + } + }, + "id": 1747, + "indexExpression": { + "argumentTypes": null, + "id": 1746, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1690, + "src": "21944:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "21935:18:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAuction_$339_storage", + "typeString": "struct SmartPiggies.DetailAuction storage ref" + } + }, + "id": 1748, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "satisfyInProgress", + "nodeType": "MemberAccess", + "referencedDeclaration": 338, + "src": "21935:36:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 1749, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "21974:4:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "src": "21935:43:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1751, + "nodeType": "ExpressionStatement", + "src": "21935:43:4" + }, + { + "condition": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1752, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "21988:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 1754, + "indexExpression": { + "argumentTypes": null, + "id": 1753, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1690, + "src": "21996:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "21988:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 1755, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "flags", + "nodeType": "MemberAccess", + "referencedDeclaration": 345, + "src": "21988:23:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BoolFlags_$322_storage", + "typeString": "struct SmartPiggies.BoolFlags storage ref" + } + }, + "id": 1756, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "isRequest", + "nodeType": "MemberAccess", + "referencedDeclaration": 315, + "src": "21988:33:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 1967, + "nodeType": "Block", + "src": "23656:866:4", + "statements": [ + { + "assignments": [ + 1898 + ], + "declarations": [ + { + "constant": false, + "id": 1898, + "name": "_adjPremium", + "nodeType": "VariableDeclaration", + "scope": 1967, + "src": "23726:19:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1897, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "23726:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1900, + "initialValue": { + "argumentTypes": null, + "id": 1899, + "name": "_auctionPremium", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1740, + "src": "23748:15:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "23726:37:4" + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1906, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1901, + "name": "_adjPremium", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1898, + "src": "23775:11:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1902, + "name": "auctions", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 369, + "src": "23789:8:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_DetailAuction_$339_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.DetailAuction storage ref)" + } + }, + "id": 1904, + "indexExpression": { + "argumentTypes": null, + "id": 1903, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1690, + "src": "23798:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "23789:18:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAuction_$339_storage", + "typeString": "struct SmartPiggies.DetailAuction storage ref" + } + }, + "id": 1905, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "reservePrice", + "nodeType": "MemberAccess", + "referencedDeclaration": 330, + "src": "23789:31:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "23775:45:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 1915, + "nodeType": "IfStatement", + "src": "23771:115:4", + "trueBody": { + "id": 1914, + "nodeType": "Block", + "src": "23822:64:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 1912, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 1907, + "name": "_adjPremium", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1898, + "src": "23832:11:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1908, + "name": "auctions", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 369, + "src": "23846:8:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_DetailAuction_$339_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.DetailAuction storage ref)" + } + }, + "id": 1910, + "indexExpression": { + "argumentTypes": null, + "id": 1909, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1690, + "src": "23855:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "23846:18:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAuction_$339_storage", + "typeString": "struct SmartPiggies.DetailAuction storage ref" + } + }, + "id": 1911, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "reservePrice", + "nodeType": "MemberAccess", + "referencedDeclaration": 330, + "src": "23846:31:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "23832:45:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1913, + "nodeType": "ExpressionStatement", + "src": "23832:45:4" + } + ] + } + }, + { + "assignments": [ + 1917 + ], + "declarations": [ + { + "constant": false, + "id": 1917, + "name": "success", + "nodeType": "VariableDeclaration", + "scope": 1967, + "src": "23937:12:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 1916, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "23937:4:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1933, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1919, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "23984:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 1921, + "indexExpression": { + "argumentTypes": null, + "id": 1920, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1690, + "src": "23992:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "23984:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 1922, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "addresses", + "nodeType": "MemberAccess", + "referencedDeclaration": 341, + "src": "23984:27:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAddresses_$298_storage", + "typeString": "struct SmartPiggies.DetailAddresses storage ref" + } + }, + "id": 1923, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "premiumERC", + "nodeType": "MemberAccess", + "referencedDeclaration": 293, + "src": "23984:38:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1924, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2820, + "src": "24032:3:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1925, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "24032:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1926, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "24052:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 1928, + "indexExpression": { + "argumentTypes": null, + "id": 1927, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1690, + "src": "24060:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "24052:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 1929, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "addresses", + "nodeType": "MemberAccess", + "referencedDeclaration": 341, + "src": "24052:27:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAddresses_$298_storage", + "typeString": "struct SmartPiggies.DetailAddresses storage ref" + } + }, + "id": 1930, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "holder", + "nodeType": "MemberAccess", + "referencedDeclaration": 289, + "src": "24052:34:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1931, + "name": "_adjPremium", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1898, + "src": "24140:11:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1918, + "name": "attemptPaymentTransfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 537, + "src": "23952:22:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,address,address,uint256) returns (bool)" + } + }, + "id": 1932, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "23952:207:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "23937:222:4" + }, + { + "condition": { + "argumentTypes": null, + "id": 1935, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "24171:8:4", + "subExpression": { + "argumentTypes": null, + "id": 1934, + "name": "success", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1917, + "src": "24172:7:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 1946, + "nodeType": "IfStatement", + "src": "24167:99:4", + "trueBody": { + "id": 1945, + "nodeType": "Block", + "src": "24181:85:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 1941, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1936, + "name": "auctions", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 369, + "src": "24191:8:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_DetailAuction_$339_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.DetailAuction storage ref)" + } + }, + "id": 1938, + "indexExpression": { + "argumentTypes": null, + "id": 1937, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1690, + "src": "24200:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "24191:18:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAuction_$339_storage", + "typeString": "struct SmartPiggies.DetailAuction storage ref" + } + }, + "id": 1939, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "satisfyInProgress", + "nodeType": "MemberAccess", + "referencedDeclaration": 338, + "src": "24191:36:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "66616c7365", + "id": 1940, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "24230:5:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "src": "24191:44:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1942, + "nodeType": "ExpressionStatement", + "src": "24191:44:4" + }, + { + "expression": { + "argumentTypes": null, + "hexValue": "66616c7365", + "id": 1943, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "24252:5:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "functionReturnParameters": 1694, + "id": 1944, + "nodeType": "Return", + "src": "24245:12:4" + } + ] + } + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1948, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "24326:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 1950, + "indexExpression": { + "argumentTypes": null, + "id": 1949, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1690, + "src": "24334:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "24326:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 1951, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "addresses", + "nodeType": "MemberAccess", + "referencedDeclaration": 341, + "src": "24326:27:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAddresses_$298_storage", + "typeString": "struct SmartPiggies.DetailAddresses storage ref" + } + }, + "id": 1952, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "holder", + "nodeType": "MemberAccess", + "referencedDeclaration": 289, + "src": "24326:34:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1953, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2820, + "src": "24362:3:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1954, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "24362:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 1955, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1690, + "src": "24374:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1947, + "name": "_internalTransfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1025, + "src": "24308:17:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 1956, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "24308:75:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1957, + "nodeType": "ExpressionStatement", + "src": "24308:75:4" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1959, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2820, + "src": "24421:3:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1960, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "24421:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 1961, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1690, + "src": "24441:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 1962, + "name": "_adjPremium", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1898, + "src": "24459:11:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "hexValue": "30", + "id": 1963, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "24480:1:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + { + "argumentTypes": null, + "id": 1964, + "name": "_auctionPremium", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1740, + "src": "24491:15:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1958, + "name": "SatisfyAuction", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 459, + "src": "24397:14:4", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256,uint256,uint256,uint256)" + } + }, + "id": 1965, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "24397:117:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1966, + "nodeType": "EmitStatement", + "src": "24392:122:4" + } + ] + }, + "id": 1968, + "nodeType": "IfStatement", + "src": "21984:2538:4", + "trueBody": { + "id": 1896, + "nodeType": "Block", + "src": "22023:1627:4", + "statements": [ + { + "assignments": [ + 1758 + ], + "declarations": [ + { + "constant": false, + "id": 1758, + "name": "success", + "nodeType": "VariableDeclaration", + "scope": 1896, + "src": "22083:12:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 1757, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "22083:4:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1776, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1760, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "22130:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 1762, + "indexExpression": { + "argumentTypes": null, + "id": 1761, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1690, + "src": "22138:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "22130:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 1763, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "addresses", + "nodeType": "MemberAccess", + "referencedDeclaration": 341, + "src": "22130:27:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAddresses_$298_storage", + "typeString": "struct SmartPiggies.DetailAddresses storage ref" + } + }, + "id": 1764, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "collateralERC", + "nodeType": "MemberAccess", + "referencedDeclaration": 291, + "src": "22130:41:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1765, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2820, + "src": "22181:3:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1766, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "22181:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1768, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2843, + "src": "22209:4:4", + "typeDescriptions": { + "typeIdentifier": "t_contract$_SmartPiggies_$2805", + "typeString": "contract SmartPiggies" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_SmartPiggies_$2805", + "typeString": "contract SmartPiggies" + } + ], + "id": 1767, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "22201:7:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 1769, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "22201:13:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1770, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "22224:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 1772, + "indexExpression": { + "argumentTypes": null, + "id": 1771, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1690, + "src": "22232:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "22224:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 1773, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "uintDetails", + "nodeType": "MemberAccess", + "referencedDeclaration": 343, + "src": "22224:29:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailUints_$313_storage", + "typeString": "struct SmartPiggies.DetailUints storage ref" + } + }, + "id": 1774, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "reqCollateral", + "nodeType": "MemberAccess", + "referencedDeclaration": 310, + "src": "22224:43:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1759, + "name": "attemptPaymentTransfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 537, + "src": "22098:22:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,address,address,uint256) returns (bool)" + } + }, + "id": 1775, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "22098:177:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "22083:192:4" + }, + { + "condition": { + "argumentTypes": null, + "id": 1778, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "22287:8:4", + "subExpression": { + "argumentTypes": null, + "id": 1777, + "name": "success", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1758, + "src": "22288:7:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 1789, + "nodeType": "IfStatement", + "src": "22283:99:4", + "trueBody": { + "id": 1788, + "nodeType": "Block", + "src": "22297:85:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 1784, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1779, + "name": "auctions", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 369, + "src": "22307:8:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_DetailAuction_$339_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.DetailAuction storage ref)" + } + }, + "id": 1781, + "indexExpression": { + "argumentTypes": null, + "id": 1780, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1690, + "src": "22316:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "22307:18:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAuction_$339_storage", + "typeString": "struct SmartPiggies.DetailAuction storage ref" + } + }, + "id": 1782, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "satisfyInProgress", + "nodeType": "MemberAccess", + "referencedDeclaration": 338, + "src": "22307:36:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "66616c7365", + "id": 1783, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "22346:5:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "src": "22307:44:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1785, + "nodeType": "ExpressionStatement", + "src": "22307:44:4" + }, + { + "expression": { + "argumentTypes": null, + "hexValue": "66616c7365", + "id": 1786, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "22368:5:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "functionReturnParameters": 1694, + "id": 1787, + "nodeType": "Return", + "src": "22361:12:4" + } + ] + } + }, + { + "expression": { + "argumentTypes": null, + "id": 1800, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1790, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "22473:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 1792, + "indexExpression": { + "argumentTypes": null, + "id": 1791, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1690, + "src": "22481:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "22473:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 1793, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "uintDetails", + "nodeType": "MemberAccess", + "referencedDeclaration": 343, + "src": "22473:29:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailUints_$313_storage", + "typeString": "struct SmartPiggies.DetailUints storage ref" + } + }, + "id": 1794, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "collateral", + "nodeType": "MemberAccess", + "referencedDeclaration": 300, + "src": "22473:40:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1795, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "22516:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 1797, + "indexExpression": { + "argumentTypes": null, + "id": 1796, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1690, + "src": "22524:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "22516:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 1798, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "uintDetails", + "nodeType": "MemberAccess", + "referencedDeclaration": 343, + "src": "22516:29:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailUints_$313_storage", + "typeString": "struct SmartPiggies.DetailUints storage ref" + } + }, + "id": 1799, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "reqCollateral", + "nodeType": "MemberAccess", + "referencedDeclaration": 310, + "src": "22516:43:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "22473:86:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1801, + "nodeType": "ExpressionStatement", + "src": "22473:86:4" + }, + { + "assignments": [ + 1803 + ], + "declarations": [ + { + "constant": false, + "id": 1803, + "name": "_change", + "nodeType": "VariableDeclaration", + "scope": 1896, + "src": "22672:15:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1802, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "22672:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1805, + "initialValue": { + "argumentTypes": null, + "hexValue": "30", + "id": 1804, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "22690:1:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "22672:19:4" + }, + { + "assignments": [ + 1807 + ], + "declarations": [ + { + "constant": false, + "id": 1807, + "name": "_adjPremium", + "nodeType": "VariableDeclaration", + "scope": 1896, + "src": "22699:19:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1806, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "22699:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1809, + "initialValue": { + "argumentTypes": null, + "id": 1808, + "name": "_auctionPremium", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1740, + "src": "22721:15:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "22699:37:4" + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1815, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1810, + "name": "_adjPremium", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1807, + "src": "22748:11:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1811, + "name": "auctions", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 369, + "src": "22762:8:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_DetailAuction_$339_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.DetailAuction storage ref)" + } + }, + "id": 1813, + "indexExpression": { + "argumentTypes": null, + "id": 1812, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1690, + "src": "22771:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "22762:18:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAuction_$339_storage", + "typeString": "struct SmartPiggies.DetailAuction storage ref" + } + }, + "id": 1814, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "reservePrice", + "nodeType": "MemberAccess", + "referencedDeclaration": 330, + "src": "22762:31:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "22748:45:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 1834, + "nodeType": "Block", + "src": "22865:77:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 1832, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 1824, + "name": "_change", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1803, + "src": "22875:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1830, + "name": "_adjPremium", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1807, + "src": "22921:11:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1825, + "name": "auctions", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 369, + "src": "22885:8:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_DetailAuction_$339_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.DetailAuction storage ref)" + } + }, + "id": 1827, + "indexExpression": { + "argumentTypes": null, + "id": 1826, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1690, + "src": "22894:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "22885:18:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAuction_$339_storage", + "typeString": "struct SmartPiggies.DetailAuction storage ref" + } + }, + "id": 1828, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "reservePrice", + "nodeType": "MemberAccess", + "referencedDeclaration": 330, + "src": "22885:31:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1829, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sub", + "nodeType": "MemberAccess", + "referencedDeclaration": 200, + "src": "22885:35:4", + "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": 1831, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "22885:48:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "22875:58:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1833, + "nodeType": "ExpressionStatement", + "src": "22875:58:4" + } + ] + }, + "id": 1835, + "nodeType": "IfStatement", + "src": "22744:198:4", + "trueBody": { + "id": 1823, + "nodeType": "Block", + "src": "22795:64:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 1821, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 1816, + "name": "_adjPremium", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1807, + "src": "22805:11:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1817, + "name": "auctions", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 369, + "src": "22819:8:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_DetailAuction_$339_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.DetailAuction storage ref)" + } + }, + "id": 1819, + "indexExpression": { + "argumentTypes": null, + "id": 1818, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1690, + "src": "22828:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "22819:18:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAuction_$339_storage", + "typeString": "struct SmartPiggies.DetailAuction storage ref" + } + }, + "id": 1820, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "reservePrice", + "nodeType": "MemberAccess", + "referencedDeclaration": 330, + "src": "22819:31:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "22805:45:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1822, + "nodeType": "ExpressionStatement", + "src": "22805:45:4" + } + ] + } + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1844, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2820, + "src": "23112:3:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1845, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "23112:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 1846, + "name": "_adjPremium", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1807, + "src": "23124:11:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1837, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "23063:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 1839, + "indexExpression": { + "argumentTypes": null, + "id": 1838, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1690, + "src": "23071:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "23063:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 1840, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "addresses", + "nodeType": "MemberAccess", + "referencedDeclaration": 341, + "src": "23063:27:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAddresses_$298_storage", + "typeString": "struct SmartPiggies.DetailAddresses storage ref" + } + }, + "id": 1841, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "premiumERC", + "nodeType": "MemberAccess", + "referencedDeclaration": 293, + "src": "23063:38:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1836, + "name": "PaymentToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 274, + "src": "23050:12:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_PaymentToken_$274_$", + "typeString": "type(contract PaymentToken)" + } + }, + "id": 1842, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "23050:52:4", + "typeDescriptions": { + "typeIdentifier": "t_contract$_PaymentToken_$274", + "typeString": "contract PaymentToken" + } + }, + "id": 1843, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "transfer", + "nodeType": "MemberAccess", + "referencedDeclaration": 268, + "src": "23050:61:4", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,uint256) external returns (bool)" + } + }, + "id": 1847, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "23050:86:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1848, + "nodeType": "ExpressionStatement", + "src": "23050:86:4" + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1851, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1849, + "name": "_change", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1803, + "src": "23196:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 1850, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "23206:1:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "23196:11:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 1869, + "nodeType": "IfStatement", + "src": "23192:142:4", + "trueBody": { + "id": 1868, + "nodeType": "Block", + "src": "23209:125:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1860, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "23281:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 1862, + "indexExpression": { + "argumentTypes": null, + "id": 1861, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1690, + "src": "23289:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "23281:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 1863, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "addresses", + "nodeType": "MemberAccess", + "referencedDeclaration": 341, + "src": "23281:27:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAddresses_$298_storage", + "typeString": "struct SmartPiggies.DetailAddresses storage ref" + } + }, + "id": 1864, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "holder", + "nodeType": "MemberAccess", + "referencedDeclaration": 289, + "src": "23281:34:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1865, + "name": "_change", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1803, + "src": "23317:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1853, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "23232:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 1855, + "indexExpression": { + "argumentTypes": null, + "id": 1854, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1690, + "src": "23240:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "23232:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 1856, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "addresses", + "nodeType": "MemberAccess", + "referencedDeclaration": 341, + "src": "23232:27:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAddresses_$298_storage", + "typeString": "struct SmartPiggies.DetailAddresses storage ref" + } + }, + "id": 1857, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "premiumERC", + "nodeType": "MemberAccess", + "referencedDeclaration": 293, + "src": "23232:38:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1852, + "name": "PaymentToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 274, + "src": "23219:12:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_PaymentToken_$274_$", + "typeString": "type(contract PaymentToken)" + } + }, + "id": 1858, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "23219:52:4", + "typeDescriptions": { + "typeIdentifier": "t_contract$_PaymentToken_$274", + "typeString": "contract PaymentToken" + } + }, + "id": 1859, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "transfer", + "nodeType": "MemberAccess", + "referencedDeclaration": 268, + "src": "23219:61:4", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,uint256) external returns (bool)" + } + }, + "id": 1866, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "23219:106:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1867, + "nodeType": "ExpressionStatement", + "src": "23219:106:4" + } + ] + } + }, + { + "expression": { + "argumentTypes": null, + "id": 1876, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1870, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "23374:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 1872, + "indexExpression": { + "argumentTypes": null, + "id": 1871, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1690, + "src": "23382:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "23374:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 1873, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "flags", + "nodeType": "MemberAccess", + "referencedDeclaration": 345, + "src": "23374:23:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BoolFlags_$322_storage", + "typeString": "struct SmartPiggies.BoolFlags storage ref" + } + }, + "id": 1874, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "isRequest", + "nodeType": "MemberAccess", + "referencedDeclaration": 315, + "src": "23374:33:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "66616c7365", + "id": 1875, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "23410:5:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "src": "23374:41:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1877, + "nodeType": "ExpressionStatement", + "src": "23374:41:4" + }, + { + "expression": { + "argumentTypes": null, + "id": 1885, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1878, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "23458:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 1880, + "indexExpression": { + "argumentTypes": null, + "id": 1879, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1690, + "src": "23466:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "23458:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 1881, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "addresses", + "nodeType": "MemberAccess", + "referencedDeclaration": 341, + "src": "23458:27:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAddresses_$298_storage", + "typeString": "struct SmartPiggies.DetailAddresses storage ref" + } + }, + "id": 1882, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "writer", + "nodeType": "MemberAccess", + "referencedDeclaration": 287, + "src": "23458:34:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1883, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2820, + "src": "23495:3:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1884, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "23495:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "23458:47:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 1886, + "nodeType": "ExpressionStatement", + "src": "23458:47:4" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1888, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2820, + "src": "23543:3:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1889, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "23543:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 1890, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1690, + "src": "23563:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 1891, + "name": "_adjPremium", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1807, + "src": "23581:11:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 1892, + "name": "_change", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1803, + "src": "23602:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 1893, + "name": "_auctionPremium", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1740, + "src": "23619:15:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1887, + "name": "SatisfyAuction", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 459, + "src": "23519:14:4", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256,uint256,uint256,uint256)" + } + }, + "id": 1894, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "23519:123:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1895, + "nodeType": "EmitStatement", + "src": "23514:128:4" + } + ] + } + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1970, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1690, + "src": "24572:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1969, + "name": "_clearAuctionDetails", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1378, + "src": "24551:20:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$__$", + "typeString": "function (uint256)" + } + }, + "id": 1971, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "24551:30:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1972, + "nodeType": "ExpressionStatement", + "src": "24551:30:4" + }, + { + "expression": { + "argumentTypes": null, + "id": 1978, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1973, + "name": "auctions", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 369, + "src": "24609:8:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_DetailAuction_$339_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.DetailAuction storage ref)" + } + }, + "id": 1975, + "indexExpression": { + "argumentTypes": null, + "id": 1974, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1690, + "src": "24618:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "24609:18:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAuction_$339_storage", + "typeString": "struct SmartPiggies.DetailAuction storage ref" + } + }, + "id": 1976, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "satisfyInProgress", + "nodeType": "MemberAccess", + "referencedDeclaration": 338, + "src": "24609:36:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "66616c7365", + "id": 1977, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "24648:5:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "src": "24609:44:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1979, + "nodeType": "ExpressionStatement", + "src": "24609:44:4" + }, + { + "expression": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 1980, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "24666:4:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 1694, + "id": 1981, + "nodeType": "Return", + "src": "24659:11:4" + } + ] + }, + "documentation": null, + "id": 1983, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "satisfyAuction", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1691, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1690, + "name": "_tokenId", + "nodeType": "VariableDeclaration", + "scope": 1983, + "src": "21056:16:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1689, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "21056:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "21055:18:4" + }, + "returnParameters": { + "id": 1694, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1693, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 1983, + "src": "21098:4:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 1692, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "21098:4:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "21097:6:4" + }, + "scope": 2805, + "src": "21032:3643:4", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 2115, + "nodeType": "Block", + "src": "26380:1259:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + "id": 1998, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1993, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2820, + "src": "26394:3:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1994, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "26394:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 1996, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "26416: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": 1995, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "26408:7:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 1997, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "26408:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "26394:24:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "73656e6465722063616e6e6f7420626520746865207a65726f2061646472657373", + "id": 1999, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "26420:35:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_ad4115bea56432736ed27c403a062ee25e09cc9064ddb968ec7ebe18284352ba", + "typeString": "literal_string \"sender cannot be the zero address\"" + }, + "value": "sender cannot be the zero address" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_ad4115bea56432736ed27c403a062ee25e09cc9064ddb968ec7ebe18284352ba", + "typeString": "literal_string \"sender cannot be the zero address\"" + } + ], + "id": 1992, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2823, + 2824 + ], + "referencedDeclaration": 2824, + "src": "26386:7:4", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 2000, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "26386:70:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2001, + "nodeType": "ExpressionStatement", + "src": "26386:70:4" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2007, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "26533:33:4", + "subExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2003, + "name": "auctions", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 369, + "src": "26534:8:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_DetailAuction_$339_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.DetailAuction storage ref)" + } + }, + "id": 2005, + "indexExpression": { + "argumentTypes": null, + "id": 2004, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1985, + "src": "26543:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "26534:18:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAuction_$339_storage", + "typeString": "struct SmartPiggies.DetailAuction storage ref" + } + }, + "id": 2006, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "auctionActive", + "nodeType": "MemberAccess", + "referencedDeclaration": 336, + "src": "26534:32:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "63616e6e6f7420636c656172206120746f6b656e207768696c652061756374696f6e20697320616374697665", + "id": 2008, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "26568:46:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_e4ca701426be01735c162fff9ee04dad7379e543cf6beb835093efb705fd1026", + "typeString": "literal_string \"cannot clear a token while auction is active\"" + }, + "value": "cannot clear a token while auction is active" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_e4ca701426be01735c162fff9ee04dad7379e543cf6beb835093efb705fd1026", + "typeString": "literal_string \"cannot clear a token while auction is active\"" + } + ], + "id": 2002, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2823, + 2824 + ], + "referencedDeclaration": 2824, + "src": "26525:7:4", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 2009, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "26525:90:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2010, + "nodeType": "ExpressionStatement", + "src": "26525:90:4" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2017, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "26629:39:4", + "subExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2012, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "26630:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 2014, + "indexExpression": { + "argumentTypes": null, + "id": 2013, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1985, + "src": "26638:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "26630:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 2015, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "flags", + "nodeType": "MemberAccess", + "referencedDeclaration": 345, + "src": "26630:23:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BoolFlags_$322_storage", + "typeString": "struct SmartPiggies.BoolFlags storage ref" + } + }, + "id": 2016, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "hasBeenCleared", + "nodeType": "MemberAccess", + "referencedDeclaration": 321, + "src": "26630:38:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "746f6b656e2068617320616c7265616479206265656e20636c6561726564", + "id": 2018, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "26670:32:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_ab94240cb90c148b324880de3f30539922fa48badec3a654065a4231cfad07a4", + "typeString": "literal_string \"token has already been cleared\"" + }, + "value": "token has already been cleared" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_ab94240cb90c148b324880de3f30539922fa48badec3a654065a4231cfad07a4", + "typeString": "literal_string \"token has already been cleared\"" + } + ], + "id": 2011, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2823, + 2824 + ], + "referencedDeclaration": 2824, + "src": "26621:7:4", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 2019, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "26621:82:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2020, + "nodeType": "ExpressionStatement", + "src": "26621:82:4" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2024, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2022, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1985, + "src": "26783:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 2023, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "26795:1:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "26783:13:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "5f746f6b656e49642063616e6e6f74206265207a65726f", + "id": 2025, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "26798:25:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_2f700274588ee4557177665c8ed74d76c18015ed2878f7ebb5d0d398460b950d", + "typeString": "literal_string \"_tokenId cannot be zero\"" + }, + "value": "_tokenId cannot be zero" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_2f700274588ee4557177665c8ed74d76c18015ed2878f7ebb5d0d398460b950d", + "typeString": "literal_string \"_tokenId cannot be zero\"" + } + ], + "id": 2021, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2823, + 2824 + ], + "referencedDeclaration": 2824, + "src": "26775:7:4", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 2026, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "26775:49:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2027, + "nodeType": "ExpressionStatement", + "src": "26775:49:4" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2031, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2029, + "name": "_oracleFee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1987, + "src": "26838:10:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 2030, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "26852:1:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "26838:15:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "6f7261636c65206665652063616e6e6f74206265207a65726f", + "id": 2032, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "26855:27:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_0db8fe92326f442d19f70ee9735d4588e3a3e39253e476edcfda4f7f1af78339", + "typeString": "literal_string \"oracle fee cannot be zero\"" + }, + "value": "oracle fee cannot be zero" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_0db8fe92326f442d19f70ee9735d4588e3a3e39253e476edcfda4f7f1af78339", + "typeString": "literal_string \"oracle fee cannot be zero\"" + } + ], + "id": 2028, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2823, + 2824 + ], + "referencedDeclaration": 2824, + "src": "26830:7:4", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 2033, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "26830:53:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2034, + "nodeType": "ExpressionStatement", + "src": "26830:53:4" + }, + { + "condition": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2035, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "26927:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 2037, + "indexExpression": { + "argumentTypes": null, + "id": 2036, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1985, + "src": "26935:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "26927:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 2038, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "flags", + "nodeType": "MemberAccess", + "referencedDeclaration": 345, + "src": "26927:23:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BoolFlags_$322_storage", + "typeString": "struct SmartPiggies.BoolFlags storage ref" + } + }, + "id": 2039, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "isEuro", + "nodeType": "MemberAccess", + "referencedDeclaration": 317, + "src": "26927:30:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 2052, + "nodeType": "IfStatement", + "src": "26923:112:4", + "trueBody": { + "id": 2051, + "nodeType": "Block", + "src": "26959:76:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2048, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2041, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "26975:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 2043, + "indexExpression": { + "argumentTypes": null, + "id": 2042, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1985, + "src": "26983:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "26975:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 2044, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "uintDetails", + "nodeType": "MemberAccess", + "referencedDeclaration": 343, + "src": "26975:29:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailUints_$313_storage", + "typeString": "struct SmartPiggies.DetailUints storage ref" + } + }, + "id": 2045, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "expiry", + "nodeType": "MemberAccess", + "referencedDeclaration": 306, + "src": "26975:36:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<=", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 2046, + "name": "block", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2810, + "src": "27015:5:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_block", + "typeString": "block" + } + }, + "id": 2047, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "number", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "27015:12:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "26975:52:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 2040, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2823, + 2824 + ], + "referencedDeclaration": 2823, + "src": "26967:7:4", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 2049, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "26967:61:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2050, + "nodeType": "ExpressionStatement", + "src": "26967:61:4" + } + ] + } + }, + { + "assignments": [ + 2054 + ], + "declarations": [ + { + "constant": false, + "id": 2054, + "name": "_dataResolver", + "nodeType": "VariableDeclaration", + "scope": 2115, + "src": "27084:21:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2053, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "27084:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 2055, + "initialValue": null, + "nodeType": "VariableDeclarationStatement", + "src": "27084:21:4" + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 2070, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2056, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "27115:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 2058, + "indexExpression": { + "argumentTypes": null, + "id": 2057, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1985, + "src": "27123:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "27115:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 2059, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "flags", + "nodeType": "MemberAccess", + "referencedDeclaration": 345, + "src": "27115:23:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BoolFlags_$322_storage", + "typeString": "struct SmartPiggies.BoolFlags storage ref" + } + }, + "id": 2060, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "isEuro", + "nodeType": "MemberAccess", + "referencedDeclaration": 317, + "src": "27115:30:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2068, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2061, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "27150:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 2063, + "indexExpression": { + "argumentTypes": null, + "id": 2062, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1985, + "src": "27158:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "27150:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 2064, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "uintDetails", + "nodeType": "MemberAccess", + "referencedDeclaration": 343, + "src": "27150:29:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailUints_$313_storage", + "typeString": "struct SmartPiggies.DetailUints storage ref" + } + }, + "id": 2065, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "expiry", + "nodeType": "MemberAccess", + "referencedDeclaration": 306, + "src": "27150:36:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 2066, + "name": "block", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2810, + "src": "27189:5:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_block", + "typeString": "block" + } + }, + "id": 2067, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "number", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "27189:12:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "27150:51:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "id": 2069, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "27149:53:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "27115:87:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 2100, + "nodeType": "Block", + "src": "27293:208:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 2088, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 2081, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2820, + "src": "27309:3:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 2082, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "27309:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2083, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "27323:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 2085, + "indexExpression": { + "argumentTypes": null, + "id": 2084, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1985, + "src": "27331:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "27323:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 2086, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "addresses", + "nodeType": "MemberAccess", + "referencedDeclaration": 341, + "src": "27323:27:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAddresses_$298_storage", + "typeString": "struct SmartPiggies.DetailAddresses storage ref" + } + }, + "id": 2087, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "holder", + "nodeType": "MemberAccess", + "referencedDeclaration": 289, + "src": "27323:34:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "27309:48:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "6f6e6c792074686520686f6c6465722063616e20736574746c6520616e20416d65726963616e207374796c65206f7074696f6e206265666f726520657870697279", + "id": 2089, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "27359:67:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_e638b15f125c8aef048b8486194c7d2b0eb1011ee42fac359a0c27aed937b109", + "typeString": "literal_string \"only the holder can settle an American style option before expiry\"" + }, + "value": "only the holder can settle an American style option before expiry" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_e638b15f125c8aef048b8486194c7d2b0eb1011ee42fac359a0c27aed937b109", + "typeString": "literal_string \"only the holder can settle an American style option before expiry\"" + } + ], + "id": 2080, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2823, + 2824 + ], + "referencedDeclaration": 2824, + "src": "27301:7:4", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 2090, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "27301:126:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2091, + "nodeType": "ExpressionStatement", + "src": "27301:126:4" + }, + { + "expression": { + "argumentTypes": null, + "id": 2098, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 2092, + "name": "_dataResolver", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2054, + "src": "27435:13:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2093, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "27451:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 2095, + "indexExpression": { + "argumentTypes": null, + "id": 2094, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1985, + "src": "27459:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "27451:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 2096, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "addresses", + "nodeType": "MemberAccess", + "referencedDeclaration": 341, + "src": "27451:27:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAddresses_$298_storage", + "typeString": "struct SmartPiggies.DetailAddresses storage ref" + } + }, + "id": 2097, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "dataResolverNow", + "nodeType": "MemberAccess", + "referencedDeclaration": 295, + "src": "27451:43:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "27435:59:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 2099, + "nodeType": "ExpressionStatement", + "src": "27435:59:4" + } + ] + }, + "id": 2101, + "nodeType": "IfStatement", + "src": "27111:390:4", + "trueBody": { + "id": 2079, + "nodeType": "Block", + "src": "27208:79:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 2077, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 2071, + "name": "_dataResolver", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2054, + "src": "27216:13:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2072, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "27232:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 2074, + "indexExpression": { + "argumentTypes": null, + "id": 2073, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1985, + "src": "27240:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "27232:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 2075, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "addresses", + "nodeType": "MemberAccess", + "referencedDeclaration": 341, + "src": "27232:27:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAddresses_$298_storage", + "typeString": "struct SmartPiggies.DetailAddresses storage ref" + } + }, + "id": 2076, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "dataResolverAtExpiry", + "nodeType": "MemberAccess", + "referencedDeclaration": 297, + "src": "27232:48:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "27216:64:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 2078, + "nodeType": "ExpressionStatement", + "src": "27216:64:4" + } + ] + } + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2104, + "name": "_dataResolver", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2054, + "src": "27528:13:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 2105, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2820, + "src": "27543:3:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 2106, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "27543:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 2107, + "name": "_oracleFee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1987, + "src": "27555:10:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 2108, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1985, + "src": "27567:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 2103, + "name": "_callResolver", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2159, + "src": "27514:13:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,address,uint256,uint256) returns (bool)" + } + }, + "id": 2109, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "27514:62:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "63616c6c20746f207265736f6c76657220646964206e6f742072657475726e2074727565", + "id": 2110, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "27578:38:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_c7d5d1fb1a904d51b7573bd7503cbbffa6841f2e9d1a1819b91902b71dc327b4", + "typeString": "literal_string \"call to resolver did not return true\"" + }, + "value": "call to resolver did not return true" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_c7d5d1fb1a904d51b7573bd7503cbbffa6841f2e9d1a1819b91902b71dc327b4", + "typeString": "literal_string \"call to resolver did not return true\"" + } + ], + "id": 2102, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2823, + 2824 + ], + "referencedDeclaration": 2824, + "src": "27506:7:4", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 2111, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "27506:111:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2112, + "nodeType": "ExpressionStatement", + "src": "27506:111:4" + }, + { + "expression": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 2113, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "27630:4:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 1991, + "id": 2114, + "nodeType": "Return", + "src": "27623:11:4" + } + ] + }, + "documentation": "@notice Call the oracle to fetch the settlement price\n@dev Throws if `_tokenId` is not a valid ERC-59 token.\nThrows if `_oracle` is not a valid contract address.\nThrows if `onMarket(_tokenId)` is true.\nIf `isEuro` is true for the specified token, throws if `_expiry` > block.number.\nIf `isEuro` is true for the specified token, throws if `_priceNow` is true. [OR specify that it flips that to false always (?)]\nIf `priceNow` is true, throws if block.number > `_expiry` for the specified token.\nIf `priceNow` is false, throws if block.number < `_expiry` for the specified token.\nIf `priceNow` is true, calls the oracle to request the `_underlyingNow` value for the token.\nIf `priceNow` is false, calls the oracle to request the `_underlyingExpiry` value for the token.\nDepending on the oracle service implemented, additional state will need to be referenced in\norder to call the oracle, e.g. an endpoint to fetch. This state handling will need to be\nmanaged on an implementation basis for specific oracle services.\n@param _tokenId The identifier of the specific ERC-59 token for which to fetch a settlement price\n_oracle The address of the oracle contract used to fetch the external settlement price\n_priceNow A boolean for specifying whether to fetch a \"live\" price or a fixed price at\nexpiry of the option\n@return The settlement price from the oracle to be used in `settleOption()`", + "id": 2116, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "requestSettlementPrice", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1988, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1985, + "name": "_tokenId", + "nodeType": "VariableDeclaration", + "scope": 2116, + "src": "26222:16:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1984, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "26222:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1987, + "name": "_oracleFee", + "nodeType": "VariableDeclaration", + "scope": 2116, + "src": "26240:18:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1986, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "26240:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "26221:38:4" + }, + "returnParameters": { + "id": 1991, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1990, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 2116, + "src": "26372:4:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 1989, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "26372:4:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "26371:6:4" + }, + "scope": 2805, + "src": "26190:1449:4", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 2158, + "nodeType": "Block", + "src": "27780:354:4", + "statements": [ + { + "assignments": [ + 2130, + null + ], + "declarations": [ + { + "constant": false, + "id": 2130, + "name": "success", + "nodeType": "VariableDeclaration", + "scope": 2158, + "src": "27787:12:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 2129, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "27787:4:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + }, + null + ], + "id": 2143, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "66657463684461746128616464726573732c75696e743235362c75696e7432353629", + "id": 2137, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "27864:36:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_1aa8ccc93b3cc911b48ca8541328b478b706a0fda711a61bfb3228bb961bc27f", + "typeString": "literal_string \"fetchData(address,uint256,uint256)\"" + }, + "value": "fetchData(address,uint256,uint256)" + }, + { + "argumentTypes": null, + "id": 2138, + "name": "_feePayer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2120, + "src": "27902:9:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 2139, + "name": "_oracleFee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2122, + "src": "27913:10:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 2140, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2124, + "src": "27925:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_1aa8ccc93b3cc911b48ca8541328b478b706a0fda711a61bfb3228bb961bc27f", + "typeString": "literal_string \"fetchData(address,uint256,uint256)\"" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 2135, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2807, + "src": "27840:3:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 2136, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "encodeWithSignature", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "27840:23:4", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$", + "typeString": "function (string memory) pure returns (bytes memory)" + } + }, + "id": 2141, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "27840:94:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2132, + "name": "_dataResolver", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2118, + "src": "27813:13:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 2131, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "27805:7:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 2133, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "27805:22:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 2134, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "call", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "27805:27:4", + "typeDescriptions": { + "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$", + "typeString": "function (bytes memory) payable returns (bool,bytes memory)" + } + }, + "id": 2142, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "27805:135:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$", + "typeString": "tuple(bool,bytes memory)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "27786:154:4" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2145, + "name": "success", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2130, + "src": "27954:7:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "6665746368207375636365737320646964206e6f742072657475726e2074727565", + "id": 2146, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "27963:35:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_994cb985e31ba3aa28e93aea8c8314dc6e57927397544c60b1b2f03735f47644", + "typeString": "literal_string \"fetch success did not return true\"" + }, + "value": "fetch success did not return true" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_994cb985e31ba3aa28e93aea8c8314dc6e57927397544c60b1b2f03735f47644", + "typeString": "literal_string \"fetch success did not return true\"" + } + ], + "id": 2144, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2823, + 2824 + ], + "referencedDeclaration": 2824, + "src": "27946:7:4", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 2147, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "27946:53:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2148, + "nodeType": "ExpressionStatement", + "src": "27946:53:4" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2150, + "name": "_feePayer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2120, + "src": "28041:9:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 2151, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2124, + "src": "28058:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 2152, + "name": "_oracleFee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2122, + "src": "28074:10:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 2153, + "name": "_dataResolver", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2118, + "src": "28092:13:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 2149, + "name": "RequestSettlementPrice", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 469, + "src": "28011:22:4", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_address_$returns$__$", + "typeString": "function (address,uint256,uint256,address)" + } + }, + "id": 2154, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "28011:100:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2155, + "nodeType": "EmitStatement", + "src": "28006:105:4" + }, + { + "expression": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 2156, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "28125:4:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 2128, + "id": 2157, + "nodeType": "Return", + "src": "28118:11:4" + } + ] + }, + "documentation": null, + "id": 2159, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_callResolver", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2125, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2118, + "name": "_dataResolver", + "nodeType": "VariableDeclaration", + "scope": 2159, + "src": "27666:21:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2117, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "27666:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2120, + "name": "_feePayer", + "nodeType": "VariableDeclaration", + "scope": 2159, + "src": "27689:17:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2119, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "27689:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2122, + "name": "_oracleFee", + "nodeType": "VariableDeclaration", + "scope": 2159, + "src": "27708:18:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2121, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "27708:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2124, + "name": "_tokenId", + "nodeType": "VariableDeclaration", + "scope": 2159, + "src": "27728:16:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2123, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "27728:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "27665:80:4" + }, + "returnParameters": { + "id": 2128, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2127, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 2159, + "src": "27772:4:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 2126, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "27772:4:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "27771:6:4" + }, + "scope": 2805, + "src": "27643:491:4", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 2234, + "nodeType": "Block", + "src": "28216:615:4", + "statements": [ + { + "assignments": [ + 2167 + ], + "declarations": [ + { + "constant": false, + "id": 2167, + "name": "_dataResolver", + "nodeType": "VariableDeclaration", + "scope": 2234, + "src": "28222:21:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2166, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "28222:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 2168, + "initialValue": null, + "nodeType": "VariableDeclarationStatement", + "src": "28222:21:4" + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 2183, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2169, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "28253:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 2171, + "indexExpression": { + "argumentTypes": null, + "id": 2170, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2161, + "src": "28261:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "28253:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 2172, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "flags", + "nodeType": "MemberAccess", + "referencedDeclaration": 345, + "src": "28253:23:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BoolFlags_$322_storage", + "typeString": "struct SmartPiggies.BoolFlags storage ref" + } + }, + "id": 2173, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "isEuro", + "nodeType": "MemberAccess", + "referencedDeclaration": 317, + "src": "28253:30:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2181, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2174, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "28288:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 2176, + "indexExpression": { + "argumentTypes": null, + "id": 2175, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2161, + "src": "28296:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "28288:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 2177, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "uintDetails", + "nodeType": "MemberAccess", + "referencedDeclaration": 343, + "src": "28288:29:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailUints_$313_storage", + "typeString": "struct SmartPiggies.DetailUints storage ref" + } + }, + "id": 2178, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "expiry", + "nodeType": "MemberAccess", + "referencedDeclaration": 306, + "src": "28288:36:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 2179, + "name": "block", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2810, + "src": "28327:5:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_block", + "typeString": "block" + } + }, + "id": 2180, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "number", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "28327:12:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "28288:51:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "id": 2182, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "28287:53:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "28253:87:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 2201, + "nodeType": "Block", + "src": "28431:74:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 2199, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 2193, + "name": "_dataResolver", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2167, + "src": "28439:13:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2194, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "28455:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 2196, + "indexExpression": { + "argumentTypes": null, + "id": 2195, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2161, + "src": "28463:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "28455:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 2197, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "addresses", + "nodeType": "MemberAccess", + "referencedDeclaration": 341, + "src": "28455:27:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAddresses_$298_storage", + "typeString": "struct SmartPiggies.DetailAddresses storage ref" + } + }, + "id": 2198, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "dataResolverNow", + "nodeType": "MemberAccess", + "referencedDeclaration": 295, + "src": "28455:43:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "28439:59:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 2200, + "nodeType": "ExpressionStatement", + "src": "28439:59:4" + } + ] + }, + "id": 2202, + "nodeType": "IfStatement", + "src": "28249:256:4", + "trueBody": { + "id": 2192, + "nodeType": "Block", + "src": "28346:79:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 2190, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 2184, + "name": "_dataResolver", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2167, + "src": "28354:13:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2185, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "28370:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 2187, + "indexExpression": { + "argumentTypes": null, + "id": 2186, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2161, + "src": "28378:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "28370:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 2188, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "addresses", + "nodeType": "MemberAccess", + "referencedDeclaration": 341, + "src": "28370:27:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAddresses_$298_storage", + "typeString": "struct SmartPiggies.DetailAddresses storage ref" + } + }, + "id": 2189, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "dataResolverAtExpiry", + "nodeType": "MemberAccess", + "referencedDeclaration": 297, + "src": "28370:48:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "28354:64:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 2191, + "nodeType": "ExpressionStatement", + "src": "28354:64:4" + } + ] + } + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 2207, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 2204, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2820, + "src": "28518:3:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 2205, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "28518:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 2206, + "name": "_dataResolver", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2167, + "src": "28532:13:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "28518:27:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "7265736f6c7665206164647265737320776173206e6f7420636f7272656374", + "id": 2208, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "28547:33:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_2e33e22d72fdb46becf75c42e09581fa0441b6719e3574fb9d745f9b7a787af7", + "typeString": "literal_string \"resolve address was not correct\"" + }, + "value": "resolve address was not correct" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_2e33e22d72fdb46becf75c42e09581fa0441b6719e3574fb9d745f9b7a787af7", + "typeString": "literal_string \"resolve address was not correct\"" + } + ], + "id": 2203, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2823, + 2824 + ], + "referencedDeclaration": 2824, + "src": "28510:7:4", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 2209, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "28510:71:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2210, + "nodeType": "ExpressionStatement", + "src": "28510:71:4" + }, + { + "expression": { + "argumentTypes": null, + "id": 2217, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2211, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "28640:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 2213, + "indexExpression": { + "argumentTypes": null, + "id": 2212, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2161, + "src": "28648:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "28640:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 2214, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "uintDetails", + "nodeType": "MemberAccess", + "referencedDeclaration": 343, + "src": "28640:29:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailUints_$313_storage", + "typeString": "struct SmartPiggies.DetailUints storage ref" + } + }, + "id": 2215, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "settlementPrice", + "nodeType": "MemberAccess", + "referencedDeclaration": 308, + "src": "28640:45:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 2216, + "name": "_price", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2163, + "src": "28688:6:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "28640:54:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2218, + "nodeType": "ExpressionStatement", + "src": "28640:54:4" + }, + { + "expression": { + "argumentTypes": null, + "id": 2225, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2219, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "28700:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 2221, + "indexExpression": { + "argumentTypes": null, + "id": 2220, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2161, + "src": "28708:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "28700:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 2222, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "flags", + "nodeType": "MemberAccess", + "referencedDeclaration": 345, + "src": "28700:23:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BoolFlags_$322_storage", + "typeString": "struct SmartPiggies.BoolFlags storage ref" + } + }, + "id": 2223, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "hasBeenCleared", + "nodeType": "MemberAccess", + "referencedDeclaration": 321, + "src": "28700:38:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 2224, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "28741:4:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "src": "28700:45:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2226, + "nodeType": "ExpressionStatement", + "src": "28700:45:4" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 2228, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2820, + "src": "28779:3:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 2229, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "28779:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 2230, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2161, + "src": "28797:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 2231, + "name": "_price", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2163, + "src": "28813:6:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 2227, + "name": "OracleReturned", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 477, + "src": "28757:14:4", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256,uint256)" + } + }, + "id": 2232, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "28757:68:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2233, + "nodeType": "EmitStatement", + "src": "28752:73:4" + } + ] + }, + "documentation": null, + "id": 2235, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_callback", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2164, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2161, + "name": "_tokenId", + "nodeType": "VariableDeclaration", + "scope": 2235, + "src": "28162:16:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2160, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "28162:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2163, + "name": "_price", + "nodeType": "VariableDeclaration", + "scope": 2235, + "src": "28184:14:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2162, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "28184:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "28156:46:4" + }, + "returnParameters": { + "id": 2165, + "nodeType": "ParameterList", + "parameters": [], + "src": "28216:0:4" + }, + "scope": 2805, + "src": "28138:693:4", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 2300, + "nodeType": "Block", + "src": "29522:318:4", + "statements": [ + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 2255, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2250, + "name": "_isPut", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2237, + "src": "29532:6:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2253, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2251, + "name": "_strikePrice", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2241, + "src": "29543:12:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "id": 2252, + "name": "_exercisePrice", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2239, + "src": "29558:14:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "29543:29:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "id": 2254, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "29542:31:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "29532:41:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 2264, + "nodeType": "IfStatement", + "src": "29528:104:4", + "trueBody": { + "id": 2263, + "nodeType": "Block", + "src": "29575:57:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 2261, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 2256, + "name": "_payout", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2248, + "src": "29583:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2259, + "name": "_exercisePrice", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2239, + "src": "29610:14:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 2257, + "name": "_strikePrice", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2241, + "src": "29593:12:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2258, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sub", + "nodeType": "MemberAccess", + "referencedDeclaration": 200, + "src": "29593:16:4", + "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": 2260, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "29593:32:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "29583:42:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2262, + "nodeType": "ExpressionStatement", + "src": "29583:42:4" + } + ] + } + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 2271, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2266, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "29641:7:4", + "subExpression": { + "argumentTypes": null, + "id": 2265, + "name": "_isPut", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2237, + "src": "29642:6:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2269, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2267, + "name": "_exercisePrice", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2239, + "src": "29653:14:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "id": 2268, + "name": "_strikePrice", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2241, + "src": "29670:12:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "29653:29:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "id": 2270, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "29652:31:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "29641:42:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 2280, + "nodeType": "IfStatement", + "src": "29637:105:4", + "trueBody": { + "id": 2279, + "nodeType": "Block", + "src": "29685:57:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 2277, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 2272, + "name": "_payout", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2248, + "src": "29693:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2275, + "name": "_strikePrice", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2241, + "src": "29722:12:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 2273, + "name": "_exercisePrice", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2239, + "src": "29703:14:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2274, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sub", + "nodeType": "MemberAccess", + "referencedDeclaration": 200, + "src": "29703:18:4", + "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": 2276, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "29703:32:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "29693:42:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2278, + "nodeType": "ExpressionStatement", + "src": "29693:42:4" + } + ] + } + }, + { + "expression": { + "argumentTypes": null, + "id": 2296, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 2281, + "name": "_payout", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2248, + "src": "29747:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "313030", + "id": 2294, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "29811:3:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_100_by_1", + "typeString": "int_const 100" + }, + "value": "100" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_100_by_1", + "typeString": "int_const 100" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2291, + "name": "_lotSize", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2243, + "src": "29797:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2288, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "hexValue": "3130", + "id": 2284, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "29769:2:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_10_by_1", + "typeString": "int_const 10" + }, + "value": "10" + }, + "nodeType": "BinaryOperation", + "operator": "**", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2286, + "name": "_decimals", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2245, + "src": "29781:9:4", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + ], + "id": 2285, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "29773:7:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": "uint256" + }, + "id": 2287, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "29773:18:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "29769:22:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 2282, + "name": "_payout", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2248, + "src": "29757:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2283, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "mul", + "nodeType": "MemberAccess", + "referencedDeclaration": 152, + "src": "29757:11:4", + "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": 2289, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "29757:35:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2290, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "mul", + "nodeType": "MemberAccess", + "referencedDeclaration": 152, + "src": "29757:39:4", + "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": 2292, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "29757:49:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2293, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "div", + "nodeType": "MemberAccess", + "referencedDeclaration": 176, + "src": "29757:53:4", + "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": 2295, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "29757:58:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "29747:68:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2297, + "nodeType": "ExpressionStatement", + "src": "29747:68:4" + }, + { + "expression": { + "argumentTypes": null, + "id": 2298, + "name": "_payout", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2248, + "src": "29828:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 2249, + "id": 2299, + "nodeType": "Return", + "src": "29821:14:4" + } + ] + }, + "documentation": null, + "id": 2301, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_calculateLongPayout", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2246, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2237, + "name": "_isPut", + "nodeType": "VariableDeclaration", + "scope": 2301, + "src": "29355:11:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 2236, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "29355:4:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2239, + "name": "_exercisePrice", + "nodeType": "VariableDeclaration", + "scope": 2301, + "src": "29372:22:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2238, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "29372:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2241, + "name": "_strikePrice", + "nodeType": "VariableDeclaration", + "scope": 2301, + "src": "29400:20:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2240, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "29400:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2243, + "name": "_lotSize", + "nodeType": "VariableDeclaration", + "scope": 2301, + "src": "29426:16:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2242, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "29426:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2245, + "name": "_decimals", + "nodeType": "VariableDeclaration", + "scope": 2301, + "src": "29448:15:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 2244, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "29448:5:4", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "29349:118:4" + }, + "returnParameters": { + "id": 2249, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2248, + "name": "_payout", + "nodeType": "VariableDeclaration", + "scope": 2301, + "src": "29503:15:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2247, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "29503:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "29502:17:4" + }, + "scope": 2805, + "src": "29320:520:4", + "stateMutability": "pure", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 2483, + "nodeType": "Block", + "src": "30424:1562:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + "id": 2314, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 2309, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2820, + "src": "30439:3:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 2310, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "30439:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 2312, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "30461: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": 2311, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "30453:7:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 2313, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "30453:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "30439:24:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "6d73672e73656e6465722063616e6e6f74206265207a65726f", + "id": 2315, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "30465:27:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_aeea01aec3d95cf400af77b2a4e70b183892b8ffc254fd451f8406644a4f5d73", + "typeString": "literal_string \"msg.sender cannot be zero\"" + }, + "value": "msg.sender cannot be zero" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_aeea01aec3d95cf400af77b2a4e70b183892b8ffc254fd451f8406644a4f5d73", + "typeString": "literal_string \"msg.sender cannot be zero\"" + } + ], + "id": 2308, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2823, + 2824 + ], + "referencedDeclaration": 2824, + "src": "30431:7:4", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 2316, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "30431:62:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2317, + "nodeType": "ExpressionStatement", + "src": "30431:62:4" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2321, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2319, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2303, + "src": "30508:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 2320, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "30520:1:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "30508:13:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "746f6b656e49642063616e6e6f74206265207a65726f", + "id": 2322, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "30523:24:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_a89f543142a9de2b46f7eadcab6442212c082feaf16ab44efe1b01aae149b6cd", + "typeString": "literal_string \"tokenId cannot be zero\"" + }, + "value": "tokenId cannot be zero" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_a89f543142a9de2b46f7eadcab6442212c082feaf16ab44efe1b01aae149b6cd", + "typeString": "literal_string \"tokenId cannot be zero\"" + } + ], + "id": 2318, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2823, + 2824 + ], + "referencedDeclaration": 2824, + "src": "30500:7:4", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 2323, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "30500:48:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2324, + "nodeType": "ExpressionStatement", + "src": "30500:48:4" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2326, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "30563:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 2328, + "indexExpression": { + "argumentTypes": null, + "id": 2327, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2303, + "src": "30571:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "30563:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 2329, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "flags", + "nodeType": "MemberAccess", + "referencedDeclaration": 345, + "src": "30563:23:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BoolFlags_$322_storage", + "typeString": "struct SmartPiggies.BoolFlags storage ref" + } + }, + "id": 2330, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "hasBeenCleared", + "nodeType": "MemberAccess", + "referencedDeclaration": 321, + "src": "30563:38:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "706967677920686173206e6f7420726563656976656420616e206f7261636c65207072696365", + "id": 2331, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "30603:40:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_77f757b31a7d00a4ce5c81894c0f959249e455b423814404b4cbee93af3b92f8", + "typeString": "literal_string \"piggy has not received an oracle price\"" + }, + "value": "piggy has not received an oracle price" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_77f757b31a7d00a4ce5c81894c0f959249e455b423814404b4cbee93af3b92f8", + "typeString": "literal_string \"piggy has not received an oracle price\"" + } + ], + "id": 2325, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2823, + 2824 + ], + "referencedDeclaration": 2824, + "src": "30555:7:4", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 2332, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "30555:89:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2333, + "nodeType": "ExpressionStatement", + "src": "30555:89:4" + }, + { + "assignments": [ + 2335 + ], + "declarations": [ + { + "constant": false, + "id": 2335, + "name": "payout", + "nodeType": "VariableDeclaration", + "scope": 2483, + "src": "30652:14:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2334, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "30652:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 2336, + "initialValue": null, + "nodeType": "VariableDeclarationStatement", + "src": "30652:14:4" + }, + { + "condition": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2337, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "30677:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 2339, + "indexExpression": { + "argumentTypes": null, + "id": 2338, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2303, + "src": "30685:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "30677:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 2340, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "flags", + "nodeType": "MemberAccess", + "referencedDeclaration": 345, + "src": "30677:23:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BoolFlags_$322_storage", + "typeString": "struct SmartPiggies.BoolFlags storage ref" + } + }, + "id": 2341, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "isEuro", + "nodeType": "MemberAccess", + "referencedDeclaration": 317, + "src": "30677:30:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 2355, + "nodeType": "IfStatement", + "src": "30674:152:4", + "trueBody": { + "id": 2354, + "nodeType": "Block", + "src": "30709:117:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2350, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2343, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "30726:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 2345, + "indexExpression": { + "argumentTypes": null, + "id": 2344, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2303, + "src": "30734:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "30726:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 2346, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "uintDetails", + "nodeType": "MemberAccess", + "referencedDeclaration": 343, + "src": "30726:29:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailUints_$313_storage", + "typeString": "struct SmartPiggies.DetailUints storage ref" + } + }, + "id": 2347, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "expiry", + "nodeType": "MemberAccess", + "referencedDeclaration": 306, + "src": "30726:36:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<=", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 2348, + "name": "block", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2810, + "src": "30766:5:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_block", + "typeString": "block" + } + }, + "id": 2349, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "number", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "30766:12:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "30726:52:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "4575726f7065616e206f7074696f6e206e6565647320746f2062652065787069726564", + "id": 2351, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "30780:37:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_f22195ac208b1677643fe01bd7203cde67ce97a0dc3e538e1b1786a2cd90c614", + "typeString": "literal_string \"European option needs to be expired\"" + }, + "value": "European option needs to be expired" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_f22195ac208b1677643fe01bd7203cde67ce97a0dc3e538e1b1786a2cd90c614", + "typeString": "literal_string \"European option needs to be expired\"" + } + ], + "id": 2342, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2823, + 2824 + ], + "referencedDeclaration": 2824, + "src": "30718:7:4", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 2352, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "30718:100:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2353, + "nodeType": "ExpressionStatement", + "src": "30718:100:4" + } + ] + } + }, + { + "expression": { + "argumentTypes": null, + "id": 2384, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 2356, + "name": "payout", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2335, + "src": "30832:6:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2358, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "30872:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 2360, + "indexExpression": { + "argumentTypes": null, + "id": 2359, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2303, + "src": "30880:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "30872:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 2361, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "flags", + "nodeType": "MemberAccess", + "referencedDeclaration": 345, + "src": "30872:23:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BoolFlags_$322_storage", + "typeString": "struct SmartPiggies.BoolFlags storage ref" + } + }, + "id": 2362, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "isPut", + "nodeType": "MemberAccess", + "referencedDeclaration": 319, + "src": "30872:29:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2363, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "30912:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 2365, + "indexExpression": { + "argumentTypes": null, + "id": 2364, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2303, + "src": "30920:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "30912:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 2366, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "uintDetails", + "nodeType": "MemberAccess", + "referencedDeclaration": 343, + "src": "30912:29:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailUints_$313_storage", + "typeString": "struct SmartPiggies.DetailUints storage ref" + } + }, + "id": 2367, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "settlementPrice", + "nodeType": "MemberAccess", + "referencedDeclaration": 308, + "src": "30912:45:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2368, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "30968:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 2370, + "indexExpression": { + "argumentTypes": null, + "id": 2369, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2303, + "src": "30976:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "30968:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 2371, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "uintDetails", + "nodeType": "MemberAccess", + "referencedDeclaration": 343, + "src": "30968:29:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailUints_$313_storage", + "typeString": "struct SmartPiggies.DetailUints storage ref" + } + }, + "id": 2372, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "strikePrice", + "nodeType": "MemberAccess", + "referencedDeclaration": 304, + "src": "30968:41:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2373, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "31020:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 2375, + "indexExpression": { + "argumentTypes": null, + "id": 2374, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2303, + "src": "31028:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "31020:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 2376, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "uintDetails", + "nodeType": "MemberAccess", + "referencedDeclaration": 343, + "src": "31020:29:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailUints_$313_storage", + "typeString": "struct SmartPiggies.DetailUints storage ref" + } + }, + "id": 2377, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "lotSize", + "nodeType": "MemberAccess", + "referencedDeclaration": 302, + "src": "31020:37:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2378, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "31068:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 2380, + "indexExpression": { + "argumentTypes": null, + "id": 2379, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2303, + "src": "31076:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "31068:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 2381, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "uintDetails", + "nodeType": "MemberAccess", + "referencedDeclaration": 343, + "src": "31068:29:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailUints_$313_storage", + "typeString": "struct SmartPiggies.DetailUints storage ref" + } + }, + "id": 2382, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "collateralDecimals", + "nodeType": "MemberAccess", + "referencedDeclaration": 312, + "src": "31068:48:4", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + ], + "id": 2357, + "name": "_calculateLongPayout", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2301, + "src": "30841:20:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bool_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint8_$returns$_t_uint256_$", + "typeString": "function (bool,uint256,uint256,uint256,uint8) pure returns (uint256)" + } + }, + "id": 2383, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "30841:282:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "30832:291:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2385, + "nodeType": "ExpressionStatement", + "src": "30832:291:4" + }, + { + "assignments": [ + 2387 + ], + "declarations": [ + { + "constant": false, + "id": 2387, + "name": "_writer", + "nodeType": "VariableDeclaration", + "scope": 2483, + "src": "31202:15:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2386, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "31202:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 2393, + "initialValue": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2388, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "31220:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 2390, + "indexExpression": { + "argumentTypes": null, + "id": 2389, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2303, + "src": "31228:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "31220:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 2391, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "addresses", + "nodeType": "MemberAccess", + "referencedDeclaration": 341, + "src": "31220:27:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAddresses_$298_storage", + "typeString": "struct SmartPiggies.DetailAddresses storage ref" + } + }, + "id": 2392, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "writer", + "nodeType": "MemberAccess", + "referencedDeclaration": 287, + "src": "31220:34:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "31202:52:4" + }, + { + "assignments": [ + 2395 + ], + "declarations": [ + { + "constant": false, + "id": 2395, + "name": "_holder", + "nodeType": "VariableDeclaration", + "scope": 2483, + "src": "31261:15:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2394, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "31261:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 2401, + "initialValue": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2396, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "31279:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 2398, + "indexExpression": { + "argumentTypes": null, + "id": 2397, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2303, + "src": "31287:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "31279:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 2399, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "addresses", + "nodeType": "MemberAccess", + "referencedDeclaration": 341, + "src": "31279:27:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAddresses_$298_storage", + "typeString": "struct SmartPiggies.DetailAddresses storage ref" + } + }, + "id": 2400, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "holder", + "nodeType": "MemberAccess", + "referencedDeclaration": 289, + "src": "31279:34:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "31261:52:4" + }, + { + "assignments": [ + 2403 + ], + "declarations": [ + { + "constant": false, + "id": 2403, + "name": "_collateralERC", + "nodeType": "VariableDeclaration", + "scope": 2483, + "src": "31320:22:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2402, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "31320:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 2409, + "initialValue": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2404, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "31345:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 2406, + "indexExpression": { + "argumentTypes": null, + "id": 2405, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2303, + "src": "31353:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "31345:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 2407, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "addresses", + "nodeType": "MemberAccess", + "referencedDeclaration": 341, + "src": "31345:27:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAddresses_$298_storage", + "typeString": "struct SmartPiggies.DetailAddresses storage ref" + } + }, + "id": 2408, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "collateralERC", + "nodeType": "MemberAccess", + "referencedDeclaration": 291, + "src": "31345:41:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "31320:66:4" + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2416, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2410, + "name": "payout", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2335, + "src": "31398:6:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2411, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "31407:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 2413, + "indexExpression": { + "argumentTypes": null, + "id": 2412, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2303, + "src": "31415:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "31407:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 2414, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "uintDetails", + "nodeType": "MemberAccess", + "referencedDeclaration": 343, + "src": "31407:29:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailUints_$313_storage", + "typeString": "struct SmartPiggies.DetailUints storage ref" + } + }, + "id": 2415, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "collateral", + "nodeType": "MemberAccess", + "referencedDeclaration": 300, + "src": "31407:40:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "31398:49:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 2426, + "nodeType": "IfStatement", + "src": "31394:121:4", + "trueBody": { + "id": 2425, + "nodeType": "Block", + "src": "31449:66:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 2423, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 2417, + "name": "payout", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2335, + "src": "31458:6:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2418, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "31467:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 2420, + "indexExpression": { + "argumentTypes": null, + "id": 2419, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2303, + "src": "31475:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "31467:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 2421, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "uintDetails", + "nodeType": "MemberAccess", + "referencedDeclaration": 343, + "src": "31467:29:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailUints_$313_storage", + "typeString": "struct SmartPiggies.DetailUints storage ref" + } + }, + "id": 2422, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "collateral", + "nodeType": "MemberAccess", + "referencedDeclaration": 300, + "src": "31467:40:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "31458:49:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2424, + "nodeType": "ExpressionStatement", + "src": "31458:49:4" + } + ] + } + }, + { + "expression": { + "argumentTypes": null, + "id": 2440, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2427, + "name": "ERC20balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 352, + "src": "31521:13:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + } + }, + "id": 2430, + "indexExpression": { + "argumentTypes": null, + "id": 2428, + "name": "_holder", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2395, + "src": "31535:7:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "31521:22:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 2431, + "indexExpression": { + "argumentTypes": null, + "id": 2429, + "name": "_collateralERC", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2403, + "src": "31544:14:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "31521:38:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2438, + "name": "payout", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2335, + "src": "31605:6:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2432, + "name": "ERC20balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 352, + "src": "31562:13:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + } + }, + "id": 2434, + "indexExpression": { + "argumentTypes": null, + "id": 2433, + "name": "_holder", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2395, + "src": "31576:7:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "31562:22:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 2436, + "indexExpression": { + "argumentTypes": null, + "id": 2435, + "name": "_collateralERC", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2403, + "src": "31585:14:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "31562:38:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2437, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 224, + "src": "31562:42:4", + "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": 2439, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "31562:50:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "31521:91:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2441, + "nodeType": "ExpressionStatement", + "src": "31521:91:4" + }, + { + "expression": { + "argumentTypes": null, + "id": 2455, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2442, + "name": "ERC20balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 352, + "src": "31619:13:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + } + }, + "id": 2445, + "indexExpression": { + "argumentTypes": null, + "id": 2443, + "name": "_writer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2387, + "src": "31633:7:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "31619:22:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 2446, + "indexExpression": { + "argumentTypes": null, + "id": 2444, + "name": "_collateralERC", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2403, + "src": "31642:14:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "31619:38:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2453, + "name": "payout", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2335, + "src": "31705:6:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2447, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "31660:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 2449, + "indexExpression": { + "argumentTypes": null, + "id": 2448, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2303, + "src": "31668:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "31660:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 2450, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "uintDetails", + "nodeType": "MemberAccess", + "referencedDeclaration": 343, + "src": "31660:29:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailUints_$313_storage", + "typeString": "struct SmartPiggies.DetailUints storage ref" + } + }, + "id": 2451, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "collateral", + "nodeType": "MemberAccess", + "referencedDeclaration": 300, + "src": "31660:40:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2452, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sub", + "nodeType": "MemberAccess", + "referencedDeclaration": 200, + "src": "31660:44:4", + "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": 2454, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "31660:52:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "31619:93:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2456, + "nodeType": "ExpressionStatement", + "src": "31619:93:4" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 2458, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2820, + "src": "31745:3:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 2459, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "31745:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 2460, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2303, + "src": "31764:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 2461, + "name": "payout", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2335, + "src": "31781:6:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2468, + "name": "payout", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2335, + "src": "31841:6:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2462, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "31796:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 2464, + "indexExpression": { + "argumentTypes": null, + "id": 2463, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2303, + "src": "31804:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "31796:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 2465, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "uintDetails", + "nodeType": "MemberAccess", + "referencedDeclaration": 343, + "src": "31796:29:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailUints_$313_storage", + "typeString": "struct SmartPiggies.DetailUints storage ref" + } + }, + "id": 2466, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "collateral", + "nodeType": "MemberAccess", + "referencedDeclaration": 300, + "src": "31796:40:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2467, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sub", + "nodeType": "MemberAccess", + "referencedDeclaration": 200, + "src": "31796:44:4", + "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": 2469, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "31796:52:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 2457, + "name": "SettlePiggy", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 487, + "src": "31725:11:4", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256,uint256,uint256)" + } + }, + "id": 2470, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "31725:130:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2471, + "nodeType": "EmitStatement", + "src": "31720:135:4" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2473, + "name": "_holder", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2395, + "src": "31892:7:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 2474, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2303, + "src": "31901:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 2472, + "name": "_removeTokenFromOwnedPiggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2635, + "src": "31863:28:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 2475, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "31863:47:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2476, + "nodeType": "ExpressionStatement", + "src": "31863:47:4" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2478, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2303, + "src": "31953:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 2477, + "name": "_resetPiggy", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2789, + "src": "31941:11:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$__$", + "typeString": "function (uint256)" + } + }, + "id": 2479, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "31941:21:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2480, + "nodeType": "ExpressionStatement", + "src": "31941:21:4" + }, + { + "expression": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 2481, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "31976:4:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 2307, + "id": 2482, + "nodeType": "Return", + "src": "31969:11:4" + } + ] + }, + "documentation": "@notice Calculate the settlement of ownership of option collateral\n@dev Throws if `_tokenId` is not a valid ERC-59 token.\nThrows if msg.sender is not one of: seller, owner of `_tokenId`.\nThrows if `hasSettlementPrice(_tokenId)` is false.\n[Option settlement math goes here for call / put situations]", + "id": 2484, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "settlePiggy", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2304, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2303, + "name": "_tokenId", + "nodeType": "VariableDeclaration", + "scope": 2484, + "src": "30371:16:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2302, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "30371:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "30370:18:4" + }, + "returnParameters": { + "id": 2307, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2306, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 2484, + "src": "30415:4:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 2305, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "30415:4:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "30414:6:4" + }, + "scope": 2805, + "src": "30350:1636:4", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 2553, + "nodeType": "Block", + "src": "32218:662:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2501, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2494, + "name": "_amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2488, + "src": "32232:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<=", + "rightExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2495, + "name": "ERC20balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 352, + "src": "32243:13:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + } + }, + "id": 2498, + "indexExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 2496, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2820, + "src": "32257:3:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 2497, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "32257:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "32243:25:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 2500, + "indexExpression": { + "argumentTypes": null, + "id": 2499, + "name": "_paymentToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2486, + "src": "32269:13:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "32243:40:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "32232:51:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "45524332302062616c616e6365206973206c657373207468616e2072657175657374656420616d6f756e74", + "id": 2502, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "32285:45:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_51156ee7569ad1608b3d15e92f97c8d5b717540394961195b6b25a691c5fccef", + "typeString": "literal_string \"ERC20 balance is less than requested amount\"" + }, + "value": "ERC20 balance is less than requested amount" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_51156ee7569ad1608b3d15e92f97c8d5b717540394961195b6b25a691c5fccef", + "typeString": "literal_string \"ERC20 balance is less than requested amount\"" + } + ], + "id": 2493, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2823, + 2824 + ], + "referencedDeclaration": 2824, + "src": "32224:7:4", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 2503, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "32224:107:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2504, + "nodeType": "ExpressionStatement", + "src": "32224:107:4" + }, + { + "expression": { + "argumentTypes": null, + "id": 2520, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2505, + "name": "ERC20balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 352, + "src": "32337:13:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + } + }, + "id": 2509, + "indexExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 2506, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2820, + "src": "32351:3:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 2507, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "32351:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "32337:25:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 2510, + "indexExpression": { + "argumentTypes": null, + "id": 2508, + "name": "_paymentToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2486, + "src": "32363:13:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "32337:40:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2518, + "name": "_amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2488, + "src": "32425:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2511, + "name": "ERC20balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 352, + "src": "32380:13:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + } + }, + "id": 2514, + "indexExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 2512, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2820, + "src": "32394:3:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 2513, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "32394:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "32380:25:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 2516, + "indexExpression": { + "argumentTypes": null, + "id": 2515, + "name": "_paymentToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2486, + "src": "32406:13:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "32380:40:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2517, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sub", + "nodeType": "MemberAccess", + "referencedDeclaration": 200, + "src": "32380:44:4", + "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": 2519, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "32380:53:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "32337:96:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2521, + "nodeType": "ExpressionStatement", + "src": "32337:96:4" + }, + { + "assignments": [ + 2523, + null + ], + "declarations": [ + { + "constant": false, + "id": 2523, + "name": "success", + "nodeType": "VariableDeclaration", + "scope": 2553, + "src": "32543:12:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 2522, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "32543:4:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + }, + null + ], + "id": 2538, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "7472616e7366657228616464726573732c75696e7432353629", + "id": 2532, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "32643:27:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_a9059cbb2ab09eb219583f4a59a5d0623ade346d962bcd4e46b11da047c9049b", + "typeString": "literal_string \"transfer(address,uint256)\"" + }, + "value": "transfer(address,uint256)" + }, + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 2533, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2820, + "src": "32680:3:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 2534, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "32680:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 2535, + "name": "_amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2488, + "src": "32700:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_a9059cbb2ab09eb219583f4a59a5d0623ade346d962bcd4e46b11da047c9049b", + "typeString": "literal_string \"transfer(address,uint256)\"" + }, + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 2530, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2807, + "src": "32610:3:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 2531, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "encodeWithSignature", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "32610:23:4", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$", + "typeString": "function (string memory) pure returns (bytes memory)" + } + }, + "id": 2536, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "32610:105:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2526, + "name": "_paymentToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2486, + "src": "32582:13:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 2525, + "name": "PaymentToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 274, + "src": "32569:12:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_PaymentToken_$274_$", + "typeString": "type(contract PaymentToken)" + } + }, + "id": 2527, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "32569:27:4", + "typeDescriptions": { + "typeIdentifier": "t_contract$_PaymentToken_$274", + "typeString": "contract PaymentToken" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_PaymentToken_$274", + "typeString": "contract PaymentToken" + } + ], + "id": 2524, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "32561:7:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 2528, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "32561:36:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 2529, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "call", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "32561:41:4", + "typeDescriptions": { + "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$", + "typeString": "function (bytes memory) payable returns (bool,bytes memory)" + } + }, + "id": 2537, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "32561:160:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$", + "typeString": "tuple(bool,bytes memory)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "32542:179:4" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2540, + "name": "success", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2523, + "src": "32735:7:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "455243323020746f6b656e207472616e73666572206661696c6564", + "id": 2541, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "32744:29:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_09d7cbc760a5fb9ceb7ce3a996d579f34d61d7bf70c73104e2b38c60f3738442", + "typeString": "literal_string \"ERC20 token transfer failed\"" + }, + "value": "ERC20 token transfer failed" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_09d7cbc760a5fb9ceb7ce3a996d579f34d61d7bf70c73104e2b38c60f3738442", + "typeString": "literal_string \"ERC20 token transfer failed\"" + } + ], + "id": 2539, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2823, + 2824 + ], + "referencedDeclaration": 2824, + "src": "32727:7:4", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 2542, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "32727:47:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2543, + "nodeType": "ExpressionStatement", + "src": "32727:47:4" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 2545, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2820, + "src": "32805:3:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 2546, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "32805:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 2547, + "name": "_amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2488, + "src": "32823:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 2548, + "name": "_paymentToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2486, + "src": "32838:13:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 2544, + "name": "ClaimPayout", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 495, + "src": "32786:11:4", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_address_$returns$__$", + "typeString": "function (address,uint256,address)" + } + }, + "id": 2549, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "32786:71:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2550, + "nodeType": "EmitStatement", + "src": "32781:76:4" + }, + { + "expression": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 2551, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "32871:4:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 2492, + "id": 2552, + "nodeType": "Return", + "src": "32864:11:4" + } + ] + }, + "documentation": null, + "id": 2554, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "claimPayout", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2489, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2486, + "name": "_paymentToken", + "nodeType": "VariableDeclaration", + "scope": 2554, + "src": "32146:21:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2485, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "32146:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2488, + "name": "_amount", + "nodeType": "VariableDeclaration", + "scope": 2554, + "src": "32169:15:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2487, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "32169:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "32145:40:4" + }, + "returnParameters": { + "id": 2492, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2491, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 2554, + "src": "32210:4:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 2490, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "32210:4:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "32209:6:4" + }, + "scope": 2805, + "src": "32125:755:4", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 2577, + "nodeType": "Block", + "src": "32962:103:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 2568, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2561, + "name": "ownedPiggiesIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 361, + "src": "32968:17:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$", + "typeString": "mapping(uint256 => uint256)" + } + }, + "id": 2563, + "indexExpression": { + "argumentTypes": null, + "id": 2562, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2558, + "src": "32986:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "32968:27:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2564, + "name": "ownedPiggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 357, + "src": "32998:12:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_uint256_$dyn_storage_$", + "typeString": "mapping(address => uint256[] storage ref)" + } + }, + "id": 2566, + "indexExpression": { + "argumentTypes": null, + "id": 2565, + "name": "_to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2556, + "src": "33011:3:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "32998:17:4", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage", + "typeString": "uint256[] storage ref" + } + }, + "id": 2567, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "32998:24:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "32968:54:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2569, + "nodeType": "ExpressionStatement", + "src": "32968:54:4" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2574, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2558, + "src": "33051:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2570, + "name": "ownedPiggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 357, + "src": "33028:12:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_uint256_$dyn_storage_$", + "typeString": "mapping(address => uint256[] storage ref)" + } + }, + "id": 2572, + "indexExpression": { + "argumentTypes": null, + "id": 2571, + "name": "_to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2556, + "src": "33041:3:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "33028:17:4", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage", + "typeString": "uint256[] storage ref" + } + }, + "id": 2573, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "push", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "33028:22:4", + "typeDescriptions": { + "typeIdentifier": "t_function_arraypush_nonpayable$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256) returns (uint256)" + } + }, + "id": 2575, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "33028:32:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2576, + "nodeType": "ExpressionStatement", + "src": "33028:32:4" + } + ] + }, + "documentation": null, + "id": 2578, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_addTokenToOwnedPiggies", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2559, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2556, + "name": "_to", + "nodeType": "VariableDeclaration", + "scope": 2578, + "src": "32917:11:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2555, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "32917:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2558, + "name": "_tokenId", + "nodeType": "VariableDeclaration", + "scope": 2578, + "src": "32930:16:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2557, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "32930:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "32916:31:4" + }, + "returnParameters": { + "id": 2560, + "nodeType": "ParameterList", + "parameters": [], + "src": "32962:0:4" + }, + "scope": 2805, + "src": "32884:181:4", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "private" + }, + { + "body": { + "id": 2634, + "nodeType": "Block", + "src": "33154:373:4", + "statements": [ + { + "assignments": [ + 2586 + ], + "declarations": [ + { + "constant": false, + "id": 2586, + "name": "lastTokenIndex", + "nodeType": "VariableDeclaration", + "scope": 2634, + "src": "33160:22:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2585, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "33160:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 2594, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "31", + "id": 2592, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "33216:1:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + } + ], + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2587, + "name": "ownedPiggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 357, + "src": "33185:12:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_uint256_$dyn_storage_$", + "typeString": "mapping(address => uint256[] storage ref)" + } + }, + "id": 2589, + "indexExpression": { + "argumentTypes": null, + "id": 2588, + "name": "_from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2580, + "src": "33198:5:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "33185:19:4", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage", + "typeString": "uint256[] storage ref" + } + }, + "id": 2590, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "33185:26:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2591, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sub", + "nodeType": "MemberAccess", + "referencedDeclaration": 200, + "src": "33185:30:4", + "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": 2593, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "33185:33:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "33160:58:4" + }, + { + "assignments": [ + 2596 + ], + "declarations": [ + { + "constant": false, + "id": 2596, + "name": "tokenIndex", + "nodeType": "VariableDeclaration", + "scope": 2634, + "src": "33224:18:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2595, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "33224:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 2600, + "initialValue": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2597, + "name": "ownedPiggiesIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 361, + "src": "33245:17:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$", + "typeString": "mapping(uint256 => uint256)" + } + }, + "id": 2599, + "indexExpression": { + "argumentTypes": null, + "id": 2598, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2582, + "src": "33263:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "33245:27:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "33224:48:4" + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2603, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2601, + "name": "tokenIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2596, + "src": "33283:10:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "id": 2602, + "name": "lastTokenIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2586, + "src": "33297:14:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "33283:28:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 2627, + "nodeType": "IfStatement", + "src": "33279:210:4", + "trueBody": { + "id": 2626, + "nodeType": "Block", + "src": "33313:176:4", + "statements": [ + { + "assignments": [ + 2605 + ], + "declarations": [ + { + "constant": false, + "id": 2605, + "name": "lastTokenId", + "nodeType": "VariableDeclaration", + "scope": 2626, + "src": "33321:19:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2604, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "33321:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 2611, + "initialValue": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2606, + "name": "ownedPiggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 357, + "src": "33343:12:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_uint256_$dyn_storage_$", + "typeString": "mapping(address => uint256[] storage ref)" + } + }, + "id": 2608, + "indexExpression": { + "argumentTypes": null, + "id": 2607, + "name": "_from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2580, + "src": "33356:5:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "33343:19:4", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage", + "typeString": "uint256[] storage ref" + } + }, + "id": 2610, + "indexExpression": { + "argumentTypes": null, + "id": 2609, + "name": "lastTokenIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2586, + "src": "33363:14:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "33343:35:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "33321:57:4" + }, + { + "expression": { + "argumentTypes": null, + "id": 2618, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2612, + "name": "ownedPiggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 357, + "src": "33386:12:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_uint256_$dyn_storage_$", + "typeString": "mapping(address => uint256[] storage ref)" + } + }, + "id": 2615, + "indexExpression": { + "argumentTypes": null, + "id": 2613, + "name": "_from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2580, + "src": "33399:5:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "33386:19:4", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage", + "typeString": "uint256[] storage ref" + } + }, + "id": 2616, + "indexExpression": { + "argumentTypes": null, + "id": 2614, + "name": "tokenIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2596, + "src": "33406:10:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "33386:31:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 2617, + "name": "lastTokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2605, + "src": "33420:11:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "33386:45:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2619, + "nodeType": "ExpressionStatement", + "src": "33386:45:4" + }, + { + "expression": { + "argumentTypes": null, + "id": 2624, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2620, + "name": "ownedPiggiesIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 361, + "src": "33439:17:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$", + "typeString": "mapping(uint256 => uint256)" + } + }, + "id": 2622, + "indexExpression": { + "argumentTypes": null, + "id": 2621, + "name": "lastTokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2605, + "src": "33457:11:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "33439:30:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 2623, + "name": "tokenIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2596, + "src": "33472:10:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "33439:43:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2625, + "nodeType": "ExpressionStatement", + "src": "33439:43:4" + } + ] + } + }, + { + "expression": { + "argumentTypes": null, + "id": 2632, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "--", + "prefix": false, + "src": "33494:28:4", + "subExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2628, + "name": "ownedPiggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 357, + "src": "33494:12:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_uint256_$dyn_storage_$", + "typeString": "mapping(address => uint256[] storage ref)" + } + }, + "id": 2630, + "indexExpression": { + "argumentTypes": null, + "id": 2629, + "name": "_from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2580, + "src": "33507:5:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "33494:19:4", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage", + "typeString": "uint256[] storage ref" + } + }, + "id": 2631, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "33494:26:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2633, + "nodeType": "ExpressionStatement", + "src": "33494:28:4" + } + ] + }, + "documentation": null, + "id": 2635, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_removeTokenFromOwnedPiggies", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2583, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2580, + "name": "_from", + "nodeType": "VariableDeclaration", + "scope": 2635, + "src": "33107:13:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2579, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "33107:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2582, + "name": "_tokenId", + "nodeType": "VariableDeclaration", + "scope": 2635, + "src": "33122:16:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2581, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "33122:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "33106:33:4" + }, + "returnParameters": { + "id": 2584, + "nodeType": "ParameterList", + "parameters": [], + "src": "33154:0:4" + }, + "scope": 2805, + "src": "33069:458:4", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "private" + }, + { + "body": { + "id": 2788, + "nodeType": "Block", + "src": "33584:903:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 2648, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2640, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "33590:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 2642, + "indexExpression": { + "argumentTypes": null, + "id": 2641, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2637, + "src": "33598:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "33590:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 2643, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "addresses", + "nodeType": "MemberAccess", + "referencedDeclaration": 341, + "src": "33590:27:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAddresses_$298_storage", + "typeString": "struct SmartPiggies.DetailAddresses storage ref" + } + }, + "id": 2644, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "writer", + "nodeType": "MemberAccess", + "referencedDeclaration": 287, + "src": "33590:34:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 2646, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "33635: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": 2645, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "33627:7:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 2647, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "33627:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "33590:47:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 2649, + "nodeType": "ExpressionStatement", + "src": "33590:47:4" + }, + { + "expression": { + "argumentTypes": null, + "id": 2658, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2650, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "33643:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 2652, + "indexExpression": { + "argumentTypes": null, + "id": 2651, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2637, + "src": "33651:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "33643:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 2653, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "addresses", + "nodeType": "MemberAccess", + "referencedDeclaration": 341, + "src": "33643:27:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAddresses_$298_storage", + "typeString": "struct SmartPiggies.DetailAddresses storage ref" + } + }, + "id": 2654, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "holder", + "nodeType": "MemberAccess", + "referencedDeclaration": 289, + "src": "33643:34:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 2656, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "33688: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": 2655, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "33680:7:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 2657, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "33680:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "33643:47:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 2659, + "nodeType": "ExpressionStatement", + "src": "33643:47:4" + }, + { + "expression": { + "argumentTypes": null, + "id": 2668, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2660, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "33696:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 2662, + "indexExpression": { + "argumentTypes": null, + "id": 2661, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2637, + "src": "33704:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "33696:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 2663, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "addresses", + "nodeType": "MemberAccess", + "referencedDeclaration": 341, + "src": "33696:27:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAddresses_$298_storage", + "typeString": "struct SmartPiggies.DetailAddresses storage ref" + } + }, + "id": 2664, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "collateralERC", + "nodeType": "MemberAccess", + "referencedDeclaration": 291, + "src": "33696:41:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 2666, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "33748: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": 2665, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "33740:7:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 2667, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "33740:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "33696:54:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 2669, + "nodeType": "ExpressionStatement", + "src": "33696:54:4" + }, + { + "expression": { + "argumentTypes": null, + "id": 2678, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2670, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "33756:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 2672, + "indexExpression": { + "argumentTypes": null, + "id": 2671, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2637, + "src": "33764:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "33756:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 2673, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "addresses", + "nodeType": "MemberAccess", + "referencedDeclaration": 341, + "src": "33756:27:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAddresses_$298_storage", + "typeString": "struct SmartPiggies.DetailAddresses storage ref" + } + }, + "id": 2674, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "premiumERC", + "nodeType": "MemberAccess", + "referencedDeclaration": 293, + "src": "33756:38:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 2676, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "33805: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": 2675, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "33797:7:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 2677, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "33797:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "33756:51:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 2679, + "nodeType": "ExpressionStatement", + "src": "33756:51:4" + }, + { + "expression": { + "argumentTypes": null, + "id": 2688, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2680, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "33813:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 2682, + "indexExpression": { + "argumentTypes": null, + "id": 2681, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2637, + "src": "33821:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "33813:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 2683, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "addresses", + "nodeType": "MemberAccess", + "referencedDeclaration": 341, + "src": "33813:27:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAddresses_$298_storage", + "typeString": "struct SmartPiggies.DetailAddresses storage ref" + } + }, + "id": 2684, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "dataResolverNow", + "nodeType": "MemberAccess", + "referencedDeclaration": 295, + "src": "33813:43:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 2686, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "33867: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": 2685, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "33859:7:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 2687, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "33859:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "33813:56:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 2689, + "nodeType": "ExpressionStatement", + "src": "33813:56:4" + }, + { + "expression": { + "argumentTypes": null, + "id": 2698, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2690, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "33875:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 2692, + "indexExpression": { + "argumentTypes": null, + "id": 2691, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2637, + "src": "33883:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "33875:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 2693, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "addresses", + "nodeType": "MemberAccess", + "referencedDeclaration": 341, + "src": "33875:27:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAddresses_$298_storage", + "typeString": "struct SmartPiggies.DetailAddresses storage ref" + } + }, + "id": 2694, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "dataResolverAtExpiry", + "nodeType": "MemberAccess", + "referencedDeclaration": 297, + "src": "33875:48:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 2696, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "33934: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": 2695, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "33926:7:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 2697, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "33926:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "33875:61:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 2699, + "nodeType": "ExpressionStatement", + "src": "33875:61:4" + }, + { + "expression": { + "argumentTypes": null, + "id": 2706, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2700, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "33942:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 2702, + "indexExpression": { + "argumentTypes": null, + "id": 2701, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2637, + "src": "33950:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "33942:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 2703, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "uintDetails", + "nodeType": "MemberAccess", + "referencedDeclaration": 343, + "src": "33942:29:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailUints_$313_storage", + "typeString": "struct SmartPiggies.DetailUints storage ref" + } + }, + "id": 2704, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "collateral", + "nodeType": "MemberAccess", + "referencedDeclaration": 300, + "src": "33942:40:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "30", + "id": 2705, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "33985:1:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "33942:44:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2707, + "nodeType": "ExpressionStatement", + "src": "33942:44:4" + }, + { + "expression": { + "argumentTypes": null, + "id": 2714, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2708, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "33992:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 2710, + "indexExpression": { + "argumentTypes": null, + "id": 2709, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2637, + "src": "34000:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "33992:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 2711, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "uintDetails", + "nodeType": "MemberAccess", + "referencedDeclaration": 343, + "src": "33992:29:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailUints_$313_storage", + "typeString": "struct SmartPiggies.DetailUints storage ref" + } + }, + "id": 2712, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "lotSize", + "nodeType": "MemberAccess", + "referencedDeclaration": 302, + "src": "33992:37:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "30", + "id": 2713, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "34032:1:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "33992:41:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2715, + "nodeType": "ExpressionStatement", + "src": "33992:41:4" + }, + { + "expression": { + "argumentTypes": null, + "id": 2722, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2716, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "34039:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 2718, + "indexExpression": { + "argumentTypes": null, + "id": 2717, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2637, + "src": "34047:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "34039:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 2719, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "uintDetails", + "nodeType": "MemberAccess", + "referencedDeclaration": 343, + "src": "34039:29:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailUints_$313_storage", + "typeString": "struct SmartPiggies.DetailUints storage ref" + } + }, + "id": 2720, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "strikePrice", + "nodeType": "MemberAccess", + "referencedDeclaration": 304, + "src": "34039:41:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "30", + "id": 2721, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "34083:1:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "34039:45:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2723, + "nodeType": "ExpressionStatement", + "src": "34039:45:4" + }, + { + "expression": { + "argumentTypes": null, + "id": 2730, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2724, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "34090:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 2726, + "indexExpression": { + "argumentTypes": null, + "id": 2725, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2637, + "src": "34098:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "34090:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 2727, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "uintDetails", + "nodeType": "MemberAccess", + "referencedDeclaration": 343, + "src": "34090:29:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailUints_$313_storage", + "typeString": "struct SmartPiggies.DetailUints storage ref" + } + }, + "id": 2728, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "expiry", + "nodeType": "MemberAccess", + "referencedDeclaration": 306, + "src": "34090:36:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "30", + "id": 2729, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "34129:1:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "34090:40:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2731, + "nodeType": "ExpressionStatement", + "src": "34090:40:4" + }, + { + "expression": { + "argumentTypes": null, + "id": 2738, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2732, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "34136:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 2734, + "indexExpression": { + "argumentTypes": null, + "id": 2733, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2637, + "src": "34144:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "34136:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 2735, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "uintDetails", + "nodeType": "MemberAccess", + "referencedDeclaration": 343, + "src": "34136:29:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailUints_$313_storage", + "typeString": "struct SmartPiggies.DetailUints storage ref" + } + }, + "id": 2736, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "settlementPrice", + "nodeType": "MemberAccess", + "referencedDeclaration": 308, + "src": "34136:45:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "30", + "id": 2737, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "34184:1:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "34136:49:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2739, + "nodeType": "ExpressionStatement", + "src": "34136:49:4" + }, + { + "expression": { + "argumentTypes": null, + "id": 2746, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2740, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "34191:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 2742, + "indexExpression": { + "argumentTypes": null, + "id": 2741, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2637, + "src": "34199:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "34191:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 2743, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "uintDetails", + "nodeType": "MemberAccess", + "referencedDeclaration": 343, + "src": "34191:29:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailUints_$313_storage", + "typeString": "struct SmartPiggies.DetailUints storage ref" + } + }, + "id": 2744, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "reqCollateral", + "nodeType": "MemberAccess", + "referencedDeclaration": 310, + "src": "34191:43:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "30", + "id": 2745, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "34237:1:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "34191:47:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2747, + "nodeType": "ExpressionStatement", + "src": "34191:47:4" + }, + { + "expression": { + "argumentTypes": null, + "id": 2754, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2748, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "34244:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 2750, + "indexExpression": { + "argumentTypes": null, + "id": 2749, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2637, + "src": "34252:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "34244:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 2751, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "uintDetails", + "nodeType": "MemberAccess", + "referencedDeclaration": 343, + "src": "34244:29:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailUints_$313_storage", + "typeString": "struct SmartPiggies.DetailUints storage ref" + } + }, + "id": 2752, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "collateralDecimals", + "nodeType": "MemberAccess", + "referencedDeclaration": 312, + "src": "34244:48:4", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "30", + "id": 2753, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "34295:1:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "34244:52:4", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "id": 2755, + "nodeType": "ExpressionStatement", + "src": "34244:52:4" + }, + { + "expression": { + "argumentTypes": null, + "id": 2762, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2756, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "34302:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 2758, + "indexExpression": { + "argumentTypes": null, + "id": 2757, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2637, + "src": "34310:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "34302:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 2759, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "flags", + "nodeType": "MemberAccess", + "referencedDeclaration": 345, + "src": "34302:23:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BoolFlags_$322_storage", + "typeString": "struct SmartPiggies.BoolFlags storage ref" + } + }, + "id": 2760, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "isRequest", + "nodeType": "MemberAccess", + "referencedDeclaration": 315, + "src": "34302:33:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "66616c7365", + "id": 2761, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "34338:5:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "src": "34302:41:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2763, + "nodeType": "ExpressionStatement", + "src": "34302:41:4" + }, + { + "expression": { + "argumentTypes": null, + "id": 2770, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2764, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "34349:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 2766, + "indexExpression": { + "argumentTypes": null, + "id": 2765, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2637, + "src": "34357:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "34349:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 2767, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "flags", + "nodeType": "MemberAccess", + "referencedDeclaration": 345, + "src": "34349:23:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BoolFlags_$322_storage", + "typeString": "struct SmartPiggies.BoolFlags storage ref" + } + }, + "id": 2768, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "isEuro", + "nodeType": "MemberAccess", + "referencedDeclaration": 317, + "src": "34349:30:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "66616c7365", + "id": 2769, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "34382:5:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "src": "34349:38:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2771, + "nodeType": "ExpressionStatement", + "src": "34349:38:4" + }, + { + "expression": { + "argumentTypes": null, + "id": 2778, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2772, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "34393:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 2774, + "indexExpression": { + "argumentTypes": null, + "id": 2773, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2637, + "src": "34401:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "34393:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 2775, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "flags", + "nodeType": "MemberAccess", + "referencedDeclaration": 345, + "src": "34393:23:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BoolFlags_$322_storage", + "typeString": "struct SmartPiggies.BoolFlags storage ref" + } + }, + "id": 2776, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "isPut", + "nodeType": "MemberAccess", + "referencedDeclaration": 319, + "src": "34393:29:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "66616c7365", + "id": 2777, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "34425:5:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "src": "34393:37:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2779, + "nodeType": "ExpressionStatement", + "src": "34393:37:4" + }, + { + "expression": { + "argumentTypes": null, + "id": 2786, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2780, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "34436:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 2782, + "indexExpression": { + "argumentTypes": null, + "id": 2781, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2637, + "src": "34444:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "34436:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 2783, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "flags", + "nodeType": "MemberAccess", + "referencedDeclaration": 345, + "src": "34436:23:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BoolFlags_$322_storage", + "typeString": "struct SmartPiggies.BoolFlags storage ref" + } + }, + "id": 2784, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "hasBeenCleared", + "nodeType": "MemberAccess", + "referencedDeclaration": 321, + "src": "34436:38:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "66616c7365", + "id": 2785, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "34477:5:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "src": "34436:46:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2787, + "nodeType": "ExpressionStatement", + "src": "34436:46:4" + } + ] + }, + "documentation": null, + "id": 2789, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_resetPiggy", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2638, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2637, + "name": "_tokenId", + "nodeType": "VariableDeclaration", + "scope": 2789, + "src": "33552:16:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2636, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "33552:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "33551:18:4" + }, + "returnParameters": { + "id": 2639, + "nodeType": "ParameterList", + "parameters": [], + "src": "33584:0:4" + }, + "scope": 2805, + "src": "33531:956:4", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "private" + }, + { + "body": { + "id": 2803, + "nodeType": "Block", + "src": "34520:64:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + "id": 2796, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 2793, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2820, + "src": "34534:3:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 2794, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "34534:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 2795, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 283, + "src": "34548:5:4", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "34534:19:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 2792, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2823, + 2824 + ], + "referencedDeclaration": 2823, + "src": "34526:7:4", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 2797, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "34526:28:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2798, + "nodeType": "ExpressionStatement", + "src": "34526:28:4" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2800, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 283, + "src": "34573:5:4", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "id": 2799, + "name": "selfdestruct", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2828, + "src": "34560:12:4", + "typeDescriptions": { + "typeIdentifier": "t_function_selfdestruct_nonpayable$_t_address_payable_$returns$__$", + "typeString": "function (address payable)" + } + }, + "id": 2801, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "34560:19:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2802, + "nodeType": "ExpressionStatement", + "src": "34560:19:4" + } + ] + }, + "documentation": null, + "id": 2804, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "kill", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2790, + "nodeType": "ParameterList", + "parameters": [], + "src": "34504:2:4" + }, + "returnParameters": { + "id": 2791, + "nodeType": "ParameterList", + "parameters": [], + "src": "34520:0:4" + }, + "scope": 2805, + "src": "34491:93:4", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + } + ], + "scope": 2806, + "src": "1368:33218:4" + } + ], + "src": "750:33837:4" + }, + "legacyAST": { + "absolutePath": "/home/vagrant/DAPPS/smartpiggiesGithub/amerigo/explorer/contracts/SmartPiggies.sol", + "exportedSymbols": { + "PaymentToken": [ + 274 + ], + "SmartPiggies": [ + 2805 + ] + }, + "id": 2806, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 247, + "literals": [ + "solidity", + ">=", + "0.4", + ".24", + "<", + "0.6", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "750:32:4" + }, + { + "id": 248, + "literals": [ + "experimental", + "ABIEncoderV2" + ], + "nodeType": "PragmaDirective", + "src": "783:33:4" + }, + { + "baseContracts": [], + "contractDependencies": [], + "contractKind": "interface", + "documentation": null, + "fullyImplemented": false, + "id": 274, + "linearizedBaseContracts": [ + 274 + ], + "name": "PaymentToken", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": null, + "documentation": null, + "id": 259, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "transferFrom", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 255, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 250, + "name": "from", + "nodeType": "VariableDeclaration", + "scope": 259, + "src": "1067:12:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 249, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1067:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 252, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 259, + "src": "1081:10:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 251, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1081:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 254, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 259, + "src": "1093:13:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 253, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1093:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1066:41:4" + }, + "returnParameters": { + "id": 258, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 257, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 259, + "src": "1126:4:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 256, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1126:4:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1125:6:4" + }, + "scope": 274, + "src": "1045:87:4", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "external" + }, + { + "body": null, + "documentation": null, + "id": 268, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "transfer", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 264, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 261, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 268, + "src": "1153:10:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 260, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1153:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 263, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 268, + "src": "1165:13:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 262, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1165:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1152:27:4" + }, + "returnParameters": { + "id": 267, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 266, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 268, + "src": "1198:4:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 265, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1198:4:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1197:6:4" + }, + "scope": 274, + "src": "1135:69:4", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "external" + }, + { + "body": null, + "documentation": null, + "id": 273, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "decimals", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 269, + "nodeType": "ParameterList", + "parameters": [], + "src": "1224:2:4" + }, + "returnParameters": { + "id": 272, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 271, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 273, + "src": "1245:5:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 270, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "1245:5:4", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1244:7:4" + }, + "scope": 274, + "src": "1207:45:4", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "external" + } + ], + "scope": 2806, + "src": "1018:236:4" + }, + { + "absolutePath": "/home/vagrant/DAPPS/smartpiggiesGithub/amerigo/explorer/contracts/ERC165.sol", + "file": "./ERC165.sol", + "id": 275, + "nodeType": "ImportDirective", + "scope": 2806, + "sourceUnit": 51, + "src": "1256:22:4", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "/home/vagrant/DAPPS/smartpiggiesGithub/amerigo/explorer/contracts/SafeMath.sol", + "file": "./SafeMath.sol", + "id": 276, + "nodeType": "ImportDirective", + "scope": 2806, + "sourceUnit": 246, + "src": "1279:24:4", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 277, + "name": "ERC165", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 50, + "src": "1393:6:4", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC165_$50", + "typeString": "contract ERC165" + } + }, + "id": 278, + "nodeType": "InheritanceSpecifier", + "src": "1393:6:4" + } + ], + "contractDependencies": [ + 50, + 60 + ], + "contractKind": "contract", + "documentation": "@title ERC-59 (subject to change) Smart Option Standard", + "fullyImplemented": true, + "id": 2805, + "linearizedBaseContracts": [ + 2805, + 50, + 60 + ], + "name": "SmartPiggies", + "nodeType": "ContractDefinition", + "nodes": [ + { + "id": 281, + "libraryName": { + "contractScope": null, + "id": 279, + "name": "SafeMath", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 245, + "src": "1410:8:4", + "typeDescriptions": { + "typeIdentifier": "t_contract$_SafeMath_$245", + "typeString": "library SafeMath" + } + }, + "nodeType": "UsingForDirective", + "src": "1404:27:4", + "typeName": { + "id": 280, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1423:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + { + "constant": false, + "id": 283, + "name": "owner", + "nodeType": "VariableDeclaration", + "scope": 2805, + "src": "1435:21:4", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + "typeName": { + "id": 282, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1435:15:4", + "stateMutability": "payable", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 285, + "name": "tokenId", + "nodeType": "VariableDeclaration", + "scope": 2805, + "src": "1460:22:4", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 284, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1460:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "public" + }, + { + "canonicalName": "SmartPiggies.DetailAddresses", + "id": 298, + "members": [ + { + "constant": false, + "id": 287, + "name": "writer", + "nodeType": "VariableDeclaration", + "scope": 298, + "src": "1516:14:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 286, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1516:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 289, + "name": "holder", + "nodeType": "VariableDeclaration", + "scope": 298, + "src": "1536:14:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 288, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1536:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 291, + "name": "collateralERC", + "nodeType": "VariableDeclaration", + "scope": 298, + "src": "1556:21:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 290, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1556:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 293, + "name": "premiumERC", + "nodeType": "VariableDeclaration", + "scope": 298, + "src": "1583:18:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 292, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1583:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 295, + "name": "dataResolverNow", + "nodeType": "VariableDeclaration", + "scope": 298, + "src": "1607:23:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 294, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1607:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 297, + "name": "dataResolverAtExpiry", + "nodeType": "VariableDeclaration", + "scope": 298, + "src": "1636:28:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 296, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1636:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "name": "DetailAddresses", + "nodeType": "StructDefinition", + "scope": 2805, + "src": "1487:182:4", + "visibility": "public" + }, + { + "canonicalName": "SmartPiggies.DetailUints", + "id": 313, + "members": [ + { + "constant": false, + "id": 300, + "name": "collateral", + "nodeType": "VariableDeclaration", + "scope": 313, + "src": "1698:18:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 299, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1698:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 302, + "name": "lotSize", + "nodeType": "VariableDeclaration", + "scope": 313, + "src": "1722:15:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 301, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1722:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 304, + "name": "strikePrice", + "nodeType": "VariableDeclaration", + "scope": 313, + "src": "1743:19:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 303, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1743:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 306, + "name": "expiry", + "nodeType": "VariableDeclaration", + "scope": 313, + "src": "1768:14:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 305, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1768:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 308, + "name": "settlementPrice", + "nodeType": "VariableDeclaration", + "scope": 313, + "src": "1788:23:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 307, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1788:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 310, + "name": "reqCollateral", + "nodeType": "VariableDeclaration", + "scope": 313, + "src": "1817:21:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 309, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1817:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 312, + "name": "collateralDecimals", + "nodeType": "VariableDeclaration", + "scope": 313, + "src": "1844:24:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 311, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "1844:5:4", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": null, + "visibility": "internal" + } + ], + "name": "DetailUints", + "nodeType": "StructDefinition", + "scope": 2805, + "src": "1673:243:4", + "visibility": "public" + }, + { + "canonicalName": "SmartPiggies.BoolFlags", + "id": 322, + "members": [ + { + "constant": false, + "id": 315, + "name": "isRequest", + "nodeType": "VariableDeclaration", + "scope": 322, + "src": "1943:14:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 314, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1943:4:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 317, + "name": "isEuro", + "nodeType": "VariableDeclaration", + "scope": 322, + "src": "1963:11:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 316, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1963:4:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 319, + "name": "isPut", + "nodeType": "VariableDeclaration", + "scope": 322, + "src": "1980:10:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 318, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1980:4:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 321, + "name": "hasBeenCleared", + "nodeType": "VariableDeclaration", + "scope": 322, + "src": "1996:19:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 320, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1996:4:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "name": "BoolFlags", + "nodeType": "StructDefinition", + "scope": 2805, + "src": "1920:160:4", + "visibility": "public" + }, + { + "canonicalName": "SmartPiggies.DetailAuction", + "id": 339, + "members": [ + { + "constant": false, + "id": 324, + "name": "startBlock", + "nodeType": "VariableDeclaration", + "scope": 339, + "src": "2111:18:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 323, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2111:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 326, + "name": "expiryBlock", + "nodeType": "VariableDeclaration", + "scope": 339, + "src": "2135:19:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 325, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2135:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 328, + "name": "startPrice", + "nodeType": "VariableDeclaration", + "scope": 339, + "src": "2160:18:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 327, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2160:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 330, + "name": "reservePrice", + "nodeType": "VariableDeclaration", + "scope": 339, + "src": "2184:20:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 329, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2184:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 332, + "name": "timeStep", + "nodeType": "VariableDeclaration", + "scope": 339, + "src": "2210:16:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 331, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2210:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 334, + "name": "priceStep", + "nodeType": "VariableDeclaration", + "scope": 339, + "src": "2232:17:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 333, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2232:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 336, + "name": "auctionActive", + "nodeType": "VariableDeclaration", + "scope": 339, + "src": "2255:18:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 335, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "2255:4:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 338, + "name": "satisfyInProgress", + "nodeType": "VariableDeclaration", + "scope": 339, + "src": "2279:22:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 337, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "2279:4:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "name": "DetailAuction", + "nodeType": "StructDefinition", + "scope": 2805, + "src": "2084:311:4", + "visibility": "public" + }, + { + "canonicalName": "SmartPiggies.Piggy", + "id": 346, + "members": [ + { + "constant": false, + "id": 341, + "name": "addresses", + "nodeType": "VariableDeclaration", + "scope": 346, + "src": "2418:25:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAddresses_$298_storage_ptr", + "typeString": "struct SmartPiggies.DetailAddresses" + }, + "typeName": { + "contractScope": null, + "id": 340, + "name": "DetailAddresses", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 298, + "src": "2418:15:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAddresses_$298_storage_ptr", + "typeString": "struct SmartPiggies.DetailAddresses" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 343, + "name": "uintDetails", + "nodeType": "VariableDeclaration", + "scope": 346, + "src": "2467:23:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailUints_$313_storage_ptr", + "typeString": "struct SmartPiggies.DetailUints" + }, + "typeName": { + "contractScope": null, + "id": 342, + "name": "DetailUints", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 313, + "src": "2467:11:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailUints_$313_storage_ptr", + "typeString": "struct SmartPiggies.DetailUints" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 345, + "name": "flags", + "nodeType": "VariableDeclaration", + "scope": 346, + "src": "2513:15:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BoolFlags_$322_storage_ptr", + "typeString": "struct SmartPiggies.BoolFlags" + }, + "typeName": { + "contractScope": null, + "id": 344, + "name": "BoolFlags", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 322, + "src": "2513:9:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BoolFlags_$322_storage_ptr", + "typeString": "struct SmartPiggies.BoolFlags" + } + }, + "value": null, + "visibility": "internal" + } + ], + "name": "Piggy", + "nodeType": "StructDefinition", + "scope": 2805, + "src": "2399:155:4", + "visibility": "public" + }, + { + "constant": false, + "id": 352, + "name": "ERC20balances", + "nodeType": "VariableDeclaration", + "scope": 2805, + "src": "2558:70:4", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + }, + "typeName": { + "id": 351, + "keyType": { + "id": 347, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2567:7:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "2558:48:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + }, + "valueType": { + "id": 350, + "keyType": { + "id": 348, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2586:7:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "2578:27:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + }, + "valueType": { + "id": 349, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2597:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + } + }, + "value": null, + "visibility": "private" + }, + { + "constant": false, + "id": 357, + "name": "ownedPiggies", + "nodeType": "VariableDeclaration", + "scope": 2805, + "src": "2632:51:4", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_uint256_$dyn_storage_$", + "typeString": "mapping(address => uint256[])" + }, + "typeName": { + "id": 356, + "keyType": { + "id": 353, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2641:7:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "2632:30:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_uint256_$dyn_storage_$", + "typeString": "mapping(address => uint256[])" + }, + "valueType": { + "baseType": { + "id": 354, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2652:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 355, + "length": null, + "nodeType": "ArrayTypeName", + "src": "2652:9:4", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + } + }, + "value": null, + "visibility": "private" + }, + { + "constant": false, + "id": 361, + "name": "ownedPiggiesIndex", + "nodeType": "VariableDeclaration", + "scope": 2805, + "src": "2704:54:4", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$", + "typeString": "mapping(uint256 => uint256)" + }, + "typeName": { + "id": 360, + "keyType": { + "id": 358, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2713:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Mapping", + "src": "2704:28:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$", + "typeString": "mapping(uint256 => uint256)" + }, + "valueType": { + "id": 359, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2724:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "value": null, + "visibility": "private" + }, + { + "constant": false, + "id": 365, + "name": "piggies", + "nodeType": "VariableDeclaration", + "scope": 2805, + "src": "2762:42:4", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy)" + }, + "typeName": { + "id": 364, + "keyType": { + "id": 362, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2771:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Mapping", + "src": "2762:26:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy)" + }, + "valueType": { + "contractScope": null, + "id": 363, + "name": "Piggy", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 346, + "src": "2782:5:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage_ptr", + "typeString": "struct SmartPiggies.Piggy" + } + } + }, + "value": null, + "visibility": "private" + }, + { + "constant": false, + "id": 369, + "name": "auctions", + "nodeType": "VariableDeclaration", + "scope": 2805, + "src": "2808:51:4", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_DetailAuction_$339_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.DetailAuction)" + }, + "typeName": { + "id": 368, + "keyType": { + "id": 366, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2817:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Mapping", + "src": "2808:34:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_DetailAuction_$339_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.DetailAuction)" + }, + "valueType": { + "contractScope": null, + "id": 367, + "name": "DetailAuction", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 339, + "src": "2828:13:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAuction_$339_storage_ptr", + "typeString": "struct SmartPiggies.DetailAuction" + } + } + }, + "value": null, + "visibility": "private" + }, + { + "anonymous": false, + "documentation": null, + "id": 381, + "name": "CreatePiggy", + "nodeType": "EventDefinition", + "parameters": { + "id": 380, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 371, + "indexed": true, + "name": "from", + "nodeType": "VariableDeclaration", + "scope": 381, + "src": "2913:20:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 370, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2913:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 373, + "indexed": true, + "name": "tokenId", + "nodeType": "VariableDeclaration", + "scope": 381, + "src": "2941:23:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 372, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2941:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 375, + "indexed": true, + "name": "strike", + "nodeType": "VariableDeclaration", + "scope": 381, + "src": "2972:22:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 374, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2972:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 377, + "indexed": false, + "name": "expiryBlock", + "nodeType": "VariableDeclaration", + "scope": 381, + "src": "3002:19:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 376, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3002:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 379, + "indexed": false, + "name": "RFP", + "nodeType": "VariableDeclaration", + "scope": 381, + "src": "3029:8:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 378, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "3029:4:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2905:136:4" + }, + "src": "2888:154:4" + }, + { + "anonymous": false, + "documentation": null, + "id": 389, + "name": "TransferPiggy", + "nodeType": "EventDefinition", + "parameters": { + "id": 388, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 383, + "indexed": true, + "name": "from", + "nodeType": "VariableDeclaration", + "scope": 389, + "src": "3073:20:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 382, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3073:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 385, + "indexed": true, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 389, + "src": "3101:18:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 384, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3101:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 387, + "indexed": true, + "name": "tokenId", + "nodeType": "VariableDeclaration", + "scope": 389, + "src": "3127:23:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 386, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3127:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3065:89:4" + }, + "src": "3046:109:4" + }, + { + "anonymous": false, + "documentation": null, + "id": 415, + "name": "UpdateRFP", + "nodeType": "EventDefinition", + "parameters": { + "id": 414, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 391, + "indexed": true, + "name": "from", + "nodeType": "VariableDeclaration", + "scope": 415, + "src": "3182:20:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 390, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3182:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 393, + "indexed": true, + "name": "tokenId", + "nodeType": "VariableDeclaration", + "scope": 415, + "src": "3210:23:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 392, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3210:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 395, + "indexed": false, + "name": "collateralERC", + "nodeType": "VariableDeclaration", + "scope": 415, + "src": "3241:21:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 394, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3241:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 397, + "indexed": false, + "name": "premiumERC", + "nodeType": "VariableDeclaration", + "scope": 415, + "src": "3270:18:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 396, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3270:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 399, + "indexed": false, + "name": "dataResolverNow", + "nodeType": "VariableDeclaration", + "scope": 415, + "src": "3296:23:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 398, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3296:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 401, + "indexed": false, + "name": "dataResolverAtExpiry", + "nodeType": "VariableDeclaration", + "scope": 415, + "src": "3327:28:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 400, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3327:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 403, + "indexed": false, + "name": "reqCollateral", + "nodeType": "VariableDeclaration", + "scope": 415, + "src": "3363:21:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 402, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3363:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 405, + "indexed": false, + "name": "lotSize", + "nodeType": "VariableDeclaration", + "scope": 415, + "src": "3392:15:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 404, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3392:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 407, + "indexed": false, + "name": "strikePrice", + "nodeType": "VariableDeclaration", + "scope": 415, + "src": "3415:19:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 406, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3415:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 409, + "indexed": false, + "name": "expiry", + "nodeType": "VariableDeclaration", + "scope": 415, + "src": "3442:14:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 408, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3442:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 411, + "indexed": false, + "name": "isEuro", + "nodeType": "VariableDeclaration", + "scope": 415, + "src": "3464:11:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 410, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "3464:4:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 413, + "indexed": false, + "name": "isPut", + "nodeType": "VariableDeclaration", + "scope": 415, + "src": "3483:10:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 412, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "3483:4:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3174:323:4" + }, + "src": "3159:339:4" + }, + { + "anonymous": false, + "documentation": null, + "id": 423, + "name": "ReclaimAndBurn", + "nodeType": "EventDefinition", + "parameters": { + "id": 422, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 417, + "indexed": true, + "name": "from", + "nodeType": "VariableDeclaration", + "scope": 423, + "src": "3530:20:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 416, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3530:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 419, + "indexed": true, + "name": "tokenId", + "nodeType": "VariableDeclaration", + "scope": 423, + "src": "3558:23:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 418, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3558:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 421, + "indexed": true, + "name": "RFP", + "nodeType": "VariableDeclaration", + "scope": 423, + "src": "3589:16:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 420, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "3589:4:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3522:87:4" + }, + "src": "3502:108:4" + }, + { + "anonymous": false, + "documentation": null, + "id": 439, + "name": "StartAuction", + "nodeType": "EventDefinition", + "parameters": { + "id": 438, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 425, + "indexed": true, + "name": "from", + "nodeType": "VariableDeclaration", + "scope": 439, + "src": "3640:20:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 424, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3640:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 427, + "indexed": true, + "name": "tokenId", + "nodeType": "VariableDeclaration", + "scope": 439, + "src": "3668:23:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 426, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3668:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 429, + "indexed": false, + "name": "startPrice", + "nodeType": "VariableDeclaration", + "scope": 439, + "src": "3699:18:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 428, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3699:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 431, + "indexed": false, + "name": "reservePrice", + "nodeType": "VariableDeclaration", + "scope": 439, + "src": "3725:20:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 430, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3725:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 433, + "indexed": false, + "name": "auctionLength", + "nodeType": "VariableDeclaration", + "scope": 439, + "src": "3753:21:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 432, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3753:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 435, + "indexed": false, + "name": "timeStep", + "nodeType": "VariableDeclaration", + "scope": 439, + "src": "3782:16:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 434, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3782:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 437, + "indexed": false, + "name": "priceStep", + "nodeType": "VariableDeclaration", + "scope": 439, + "src": "3806:17:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 436, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3806:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3632:195:4" + }, + "src": "3614:214:4" + }, + { + "anonymous": false, + "documentation": null, + "id": 447, + "name": "EndAuction", + "nodeType": "EventDefinition", + "parameters": { + "id": 446, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 441, + "indexed": true, + "name": "from", + "nodeType": "VariableDeclaration", + "scope": 447, + "src": "3856:20:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 440, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3856:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 443, + "indexed": true, + "name": "tokenId", + "nodeType": "VariableDeclaration", + "scope": 447, + "src": "3884:23:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 442, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3884:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 445, + "indexed": true, + "name": "RFP", + "nodeType": "VariableDeclaration", + "scope": 447, + "src": "3915:16:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 444, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "3915:4:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3848:87:4" + }, + "src": "3832:104:4" + }, + { + "anonymous": false, + "documentation": null, + "id": 459, + "name": "SatisfyAuction", + "nodeType": "EventDefinition", + "parameters": { + "id": 458, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 449, + "indexed": true, + "name": "from", + "nodeType": "VariableDeclaration", + "scope": 459, + "src": "3968:20:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 448, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3968:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 451, + "indexed": true, + "name": "tokenId", + "nodeType": "VariableDeclaration", + "scope": 459, + "src": "3996:23:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 450, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3996:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 453, + "indexed": false, + "name": "paidPremium", + "nodeType": "VariableDeclaration", + "scope": 459, + "src": "4027:19:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 452, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4027:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 455, + "indexed": false, + "name": "change", + "nodeType": "VariableDeclaration", + "scope": 459, + "src": "4054:14:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 454, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4054:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 457, + "indexed": false, + "name": "auctionPremium", + "nodeType": "VariableDeclaration", + "scope": 459, + "src": "4076:22:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 456, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4076:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3960:142:4" + }, + "src": "3940:163:4" + }, + { + "anonymous": false, + "documentation": null, + "id": 469, + "name": "RequestSettlementPrice", + "nodeType": "EventDefinition", + "parameters": { + "id": 468, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 461, + "indexed": true, + "name": "feePayer", + "nodeType": "VariableDeclaration", + "scope": 469, + "src": "4143:24:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 460, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4143:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 463, + "indexed": true, + "name": "tokenId", + "nodeType": "VariableDeclaration", + "scope": 469, + "src": "4175:23:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 462, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4175:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 465, + "indexed": false, + "name": "oracleFee", + "nodeType": "VariableDeclaration", + "scope": 469, + "src": "4206:17:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 464, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4206:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 467, + "indexed": false, + "name": "dataResolver", + "nodeType": "VariableDeclaration", + "scope": 469, + "src": "4231:20:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 466, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4231:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4135:120:4" + }, + "src": "4107:149:4" + }, + { + "anonymous": false, + "documentation": null, + "id": 477, + "name": "OracleReturned", + "nodeType": "EventDefinition", + "parameters": { + "id": 476, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 471, + "indexed": true, + "name": "resolver", + "nodeType": "VariableDeclaration", + "scope": 477, + "src": "4288:24:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 470, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4288:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 473, + "indexed": true, + "name": "tokenId", + "nodeType": "VariableDeclaration", + "scope": 477, + "src": "4320:23:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 472, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4320:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 475, + "indexed": true, + "name": "price", + "nodeType": "VariableDeclaration", + "scope": 477, + "src": "4351:21:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 474, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4351:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4280:96:4" + }, + "src": "4260:117:4" + }, + { + "anonymous": false, + "documentation": null, + "id": 487, + "name": "SettlePiggy", + "nodeType": "EventDefinition", + "parameters": { + "id": 486, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 479, + "indexed": true, + "name": "from", + "nodeType": "VariableDeclaration", + "scope": 487, + "src": "4405:20:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 478, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4405:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 481, + "indexed": true, + "name": "tokenId", + "nodeType": "VariableDeclaration", + "scope": 487, + "src": "4432:23:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 480, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4432:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 483, + "indexed": true, + "name": "holderPayout", + "nodeType": "VariableDeclaration", + "scope": 487, + "src": "4462:28:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 482, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4462:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 485, + "indexed": false, + "name": "writerPayout", + "nodeType": "VariableDeclaration", + "scope": 487, + "src": "4497:20:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 484, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4497:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4398:123:4" + }, + "src": "4381:141:4" + }, + { + "anonymous": false, + "documentation": null, + "id": 495, + "name": "ClaimPayout", + "nodeType": "EventDefinition", + "parameters": { + "id": 494, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 489, + "indexed": true, + "name": "from", + "nodeType": "VariableDeclaration", + "scope": 495, + "src": "4551:20:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 488, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4551:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 491, + "indexed": true, + "name": "amount", + "nodeType": "VariableDeclaration", + "scope": 495, + "src": "4579:22:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 490, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4579:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 493, + "indexed": true, + "name": "paymentToken", + "nodeType": "VariableDeclaration", + "scope": 495, + "src": "4609:28:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 492, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4609:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4543:98:4" + }, + "src": "4526:116:4" + }, + { + "body": { + "id": 503, + "nodeType": "Block", + "src": "4915:92:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 501, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 498, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 283, + "src": "4945:5:4", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 499, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2820, + "src": "4953:3:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 500, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "4953:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "4945:18:4", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "id": 502, + "nodeType": "ExpressionStatement", + "src": "4945:18:4" + } + ] + }, + "documentation": "constructor should throw if various things aren't properly set\nalso should throw if the contract is not delegated an amount of collateral designated\nin the reference ERC-20 which is >= the collateral value of the piggy", + "id": 504, + "implemented": true, + "kind": "constructor", + "modifiers": [], + "name": "", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 496, + "nodeType": "ParameterList", + "parameters": [], + "src": "4899:2:4" + }, + "returnParameters": { + "id": 497, + "nodeType": "ParameterList", + "parameters": [], + "src": "4915:0:4" + }, + "scope": 2805, + "src": "4888:119:4", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 536, + "nodeType": "Block", + "src": "5180:223:4", + "statements": [ + { + "assignments": [ + 518, + null + ], + "declarations": [ + { + "constant": false, + "id": 518, + "name": "success", + "nodeType": "VariableDeclaration", + "scope": 536, + "src": "5187:12:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 517, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "5187:4:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + }, + null + ], + "id": 533, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "7472616e7366657246726f6d28616464726573732c616464726573732c75696e7432353629", + "id": 527, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5280:39:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_23b872dd7302113369cda2901243429419bec145408fa8b352b3dd92b66c680b", + "typeString": "literal_string \"transferFrom(address,address,uint256)\"" + }, + "value": "transferFrom(address,address,uint256)" + }, + { + "argumentTypes": null, + "id": 528, + "name": "_from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 508, + "src": "5329:5:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 529, + "name": "_to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 510, + "src": "5344:3:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 530, + "name": "_amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 512, + "src": "5357:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_23b872dd7302113369cda2901243429419bec145408fa8b352b3dd92b66c680b", + "typeString": "literal_string \"transferFrom(address,address,uint256)\"" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 525, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2807, + "src": "5247:3:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 526, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "encodeWithSignature", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "5247:23:4", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$", + "typeString": "function (string memory) pure returns (bytes memory)" + } + }, + "id": 531, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5247:125:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 521, + "name": "_ERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 506, + "src": "5226:6:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 520, + "name": "PaymentToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 274, + "src": "5213:12:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_PaymentToken_$274_$", + "typeString": "type(contract PaymentToken)" + } + }, + "id": 522, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5213:20:4", + "typeDescriptions": { + "typeIdentifier": "t_contract$_PaymentToken_$274", + "typeString": "contract PaymentToken" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_PaymentToken_$274", + "typeString": "contract PaymentToken" + } + ], + "id": 519, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "5205:7:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 523, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5205:29:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 524, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "call", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "5205:34:4", + "typeDescriptions": { + "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$", + "typeString": "function (bytes memory) payable returns (bool,bytes memory)" + } + }, + "id": 532, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5205:173:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$", + "typeString": "tuple(bool,bytes memory)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "5186:192:4" + }, + { + "expression": { + "argumentTypes": null, + "id": 534, + "name": "success", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 518, + "src": "5391:7:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 516, + "id": 535, + "nodeType": "Return", + "src": "5384:14:4" + } + ] + }, + "documentation": null, + "id": 537, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "attemptPaymentTransfer", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 513, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 506, + "name": "_ERC20", + "nodeType": "VariableDeclaration", + "scope": 537, + "src": "5086:14:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 505, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5086:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 508, + "name": "_from", + "nodeType": "VariableDeclaration", + "scope": 537, + "src": "5102:13:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 507, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5102:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 510, + "name": "_to", + "nodeType": "VariableDeclaration", + "scope": 537, + "src": "5117:11:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 509, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5117:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 512, + "name": "_amount", + "nodeType": "VariableDeclaration", + "scope": 537, + "src": "5130:15:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 511, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5130:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "5085:61:4" + }, + "returnParameters": { + "id": 516, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 515, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 537, + "src": "5172:4:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 514, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "5172:4:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "5171:6:4" + }, + "scope": 2805, + "src": "5054:349:4", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "private" + }, + { + "body": { + "id": 797, + "nodeType": "Block", + "src": "8764:1864:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 587, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 581, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 575, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 569, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 565, + "name": "_collateralERC", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 539, + "src": "8783:14:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 567, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8809: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": 566, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "8801:7:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 568, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8801:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "8783:28:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 574, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 570, + "name": "_premiumERC", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 541, + "src": "8820:11:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 572, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8843: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": 571, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "8835:7:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 573, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8835:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "8820:25:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "8783:62:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 580, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 576, + "name": "_dataResolverNow", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 543, + "src": "8854:16:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 578, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8882: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": 577, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "8874:7:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 579, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8874:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "8854:30:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "8783:101:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 586, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 582, + "name": "_dataResolverAtExpiry", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 545, + "src": "8893:21:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 584, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8926: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": 583, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "8918:7:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 585, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8918:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "8893:35:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "8783:145:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "6164647265737365732063616e6e6f74206265207a65726f", + "id": 588, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8935:26:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_04b4803be6c06d5f35b7b540ae4bce56518da084f117a7525381eb79fdf75203", + "typeString": "literal_string \"addresses cannot be zero\"" + }, + "value": "addresses cannot be zero" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_04b4803be6c06d5f35b7b540ae4bce56518da084f117a7525381eb79fdf75203", + "typeString": "literal_string \"addresses cannot be zero\"" + } + ], + "id": 564, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2823, + 2824 + ], + "referencedDeclaration": 2824, + "src": "8769:7:4", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 589, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8769:197:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 590, + "nodeType": "ExpressionStatement", + "src": "8769:197:4" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 606, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 602, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 598, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 594, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 592, + "name": "_collateral", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 547, + "src": "8985:11:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 593, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9000:1:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "8985:16:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 597, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 595, + "name": "_lotSize", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 549, + "src": "9010:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 596, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9022:1:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "9010:13:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "8985:38:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 601, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 599, + "name": "_strikePrice", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 551, + "src": "9032:12:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 600, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9048:1:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "9032:17:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "8985:64:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 605, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 603, + "name": "_expiry", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 553, + "src": "9058:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 604, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9069:1:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "9058:12:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "8985:85:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "6f7074696f6e20706172616d65746572732063616e6e6f74206265207a65726f", + "id": 607, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9077:34:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_ac99e164bea37b648bac329df7c0cdace8a6038fe5232a0b7866c4984b85edf8", + "typeString": "literal_string \"option parameters cannot be zero\"" + }, + "value": "option parameters cannot be zero" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_ac99e164bea37b648bac329df7c0cdace8a6038fe5232a0b7866c4984b85edf8", + "typeString": "literal_string \"option parameters cannot be zero\"" + } + ], + "id": 591, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2823, + 2824 + ], + "referencedDeclaration": 2824, + "src": "8971:7:4", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 608, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8971:145:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 609, + "nodeType": "ExpressionStatement", + "src": "8971:145:4" + }, + { + "condition": { + "argumentTypes": null, + "id": 611, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "9190:11:4", + "subExpression": { + "argumentTypes": null, + "id": 610, + "name": "_isRequest", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 559, + "src": "9191:10:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 630, + "nodeType": "IfStatement", + "src": "9186:233:4", + "trueBody": { + "id": 629, + "nodeType": "Block", + "src": "9203:216:4", + "statements": [ + { + "assignments": [ + 613 + ], + "declarations": [ + { + "constant": false, + "id": 613, + "name": "success", + "nodeType": "VariableDeclaration", + "scope": 629, + "src": "9210:12:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 612, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "9210:4:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 623, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 615, + "name": "_collateralERC", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 539, + "src": "9256:14:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 616, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2820, + "src": "9296:3:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 617, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "9296:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 619, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2843, + "src": "9323:4:4", + "typeDescriptions": { + "typeIdentifier": "t_contract$_SmartPiggies_$2805", + "typeString": "contract SmartPiggies" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_SmartPiggies_$2805", + "typeString": "contract SmartPiggies" + } + ], + "id": 618, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "9315:7:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 620, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9315:13:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 621, + "name": "_collateral", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 547, + "src": "9337:11:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 614, + "name": "attemptPaymentTransfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 537, + "src": "9225:22:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,address,address,uint256) returns (bool)" + } + }, + "id": 622, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9225:130:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "9210:145:4" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 625, + "name": "success", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 613, + "src": "9370:7:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "546f6b656e207472616e7366657220646964206e6f7420636f6d706c657465", + "id": 626, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9379:33:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_7dfd8cf2b3edad113675466e31dce9cad239a317a5d8a68bee6c9cb579f1bea2", + "typeString": "literal_string \"Token transfer did not complete\"" + }, + "value": "Token transfer did not complete" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_7dfd8cf2b3edad113675466e31dce9cad239a317a5d8a68bee6c9cb579f1bea2", + "typeString": "literal_string \"Token transfer did not complete\"" + } + ], + "id": 624, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2823, + 2824 + ], + "referencedDeclaration": 2824, + "src": "9362:7:4", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 627, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9362:51:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 628, + "nodeType": "ExpressionStatement", + "src": "9362:51:4" + } + ] + } + }, + { + "expression": { + "argumentTypes": null, + "id": 636, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 631, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 285, + "src": "9536:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "31", + "id": 634, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9558:1:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + } + ], + "expression": { + "argumentTypes": null, + "id": 632, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 285, + "src": "9546:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 633, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 224, + "src": "9546:11:4", + "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": 635, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9546:14:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "9536:24:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 637, + "nodeType": "ExpressionStatement", + "src": "9536:24:4" + }, + { + "assignments": [ + 639 + ], + "declarations": [ + { + "constant": false, + "id": 639, + "name": "p", + "nodeType": "VariableDeclaration", + "scope": 797, + "src": "9627:15:4", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage_ptr", + "typeString": "struct SmartPiggies.Piggy" + }, + "typeName": { + "contractScope": null, + "id": 638, + "name": "Piggy", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 346, + "src": "9627:5:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage_ptr", + "typeString": "struct SmartPiggies.Piggy" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 643, + "initialValue": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 640, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "9645:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 642, + "indexExpression": { + "argumentTypes": null, + "id": 641, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 285, + "src": "9653:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "9645:16:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "9627:34:4" + }, + { + "expression": { + "argumentTypes": null, + "id": 651, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 644, + "name": "p", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 639, + "src": "9666:1:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage_ptr", + "typeString": "struct SmartPiggies.Piggy storage pointer" + } + }, + "id": 647, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "addresses", + "nodeType": "MemberAccess", + "referencedDeclaration": 341, + "src": "9666:11:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAddresses_$298_storage", + "typeString": "struct SmartPiggies.DetailAddresses storage ref" + } + }, + "id": 648, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "holder", + "nodeType": "MemberAccess", + "referencedDeclaration": 289, + "src": "9666:18:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 649, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2820, + "src": "9687:3:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 650, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "9687:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "9666:31:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 652, + "nodeType": "ExpressionStatement", + "src": "9666:31:4" + }, + { + "expression": { + "argumentTypes": null, + "id": 659, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 653, + "name": "p", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 639, + "src": "9702:1:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage_ptr", + "typeString": "struct SmartPiggies.Piggy storage pointer" + } + }, + "id": 656, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "addresses", + "nodeType": "MemberAccess", + "referencedDeclaration": 341, + "src": "9702:11:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAddresses_$298_storage", + "typeString": "struct SmartPiggies.DetailAddresses storage ref" + } + }, + "id": 657, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "collateralERC", + "nodeType": "MemberAccess", + "referencedDeclaration": 291, + "src": "9702:25:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 658, + "name": "_collateralERC", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 539, + "src": "9730:14:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "9702:42:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 660, + "nodeType": "ExpressionStatement", + "src": "9702:42:4" + }, + { + "expression": { + "argumentTypes": null, + "id": 667, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 661, + "name": "p", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 639, + "src": "9749:1:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage_ptr", + "typeString": "struct SmartPiggies.Piggy storage pointer" + } + }, + "id": 664, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "addresses", + "nodeType": "MemberAccess", + "referencedDeclaration": 341, + "src": "9749:11:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAddresses_$298_storage", + "typeString": "struct SmartPiggies.DetailAddresses storage ref" + } + }, + "id": 665, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "premiumERC", + "nodeType": "MemberAccess", + "referencedDeclaration": 293, + "src": "9749:22:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 666, + "name": "_premiumERC", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 541, + "src": "9774:11:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "9749:36:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 668, + "nodeType": "ExpressionStatement", + "src": "9749:36:4" + }, + { + "expression": { + "argumentTypes": null, + "id": 675, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 669, + "name": "p", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 639, + "src": "9790:1:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage_ptr", + "typeString": "struct SmartPiggies.Piggy storage pointer" + } + }, + "id": 672, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "addresses", + "nodeType": "MemberAccess", + "referencedDeclaration": 341, + "src": "9790:11:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAddresses_$298_storage", + "typeString": "struct SmartPiggies.DetailAddresses storage ref" + } + }, + "id": 673, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "dataResolverNow", + "nodeType": "MemberAccess", + "referencedDeclaration": 295, + "src": "9790:27:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 674, + "name": "_dataResolverNow", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 543, + "src": "9820:16:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "9790:46:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 676, + "nodeType": "ExpressionStatement", + "src": "9790:46:4" + }, + { + "expression": { + "argumentTypes": null, + "id": 683, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 677, + "name": "p", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 639, + "src": "9841:1:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage_ptr", + "typeString": "struct SmartPiggies.Piggy storage pointer" + } + }, + "id": 680, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "addresses", + "nodeType": "MemberAccess", + "referencedDeclaration": 341, + "src": "9841:11:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAddresses_$298_storage", + "typeString": "struct SmartPiggies.DetailAddresses storage ref" + } + }, + "id": 681, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "dataResolverAtExpiry", + "nodeType": "MemberAccess", + "referencedDeclaration": 297, + "src": "9841:32:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 682, + "name": "_dataResolverAtExpiry", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 545, + "src": "9876:21:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "9841:56:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 684, + "nodeType": "ExpressionStatement", + "src": "9841:56:4" + }, + { + "expression": { + "argumentTypes": null, + "id": 693, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 685, + "name": "p", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 639, + "src": "9902:1:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage_ptr", + "typeString": "struct SmartPiggies.Piggy storage pointer" + } + }, + "id": 688, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "uintDetails", + "nodeType": "MemberAccess", + "referencedDeclaration": 343, + "src": "9902:13:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailUints_$313_storage", + "typeString": "struct SmartPiggies.DetailUints storage ref" + } + }, + "id": 689, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "collateralDecimals", + "nodeType": "MemberAccess", + "referencedDeclaration": 312, + "src": "9902:32:4", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 691, + "name": "_collateralERC", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 539, + "src": "9955:14:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 690, + "name": "_getERC20Decimals", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 872, + "src": "9937:17:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$_t_uint8_$", + "typeString": "function (address) returns (uint8)" + } + }, + "id": 692, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9937:33:4", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "src": "9902:68:4", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "id": 694, + "nodeType": "ExpressionStatement", + "src": "9902:68:4" + }, + { + "expression": { + "argumentTypes": null, + "id": 701, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 695, + "name": "p", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 639, + "src": "9975:1:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage_ptr", + "typeString": "struct SmartPiggies.Piggy storage pointer" + } + }, + "id": 698, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "uintDetails", + "nodeType": "MemberAccess", + "referencedDeclaration": 343, + "src": "9975:13:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailUints_$313_storage", + "typeString": "struct SmartPiggies.DetailUints storage ref" + } + }, + "id": 699, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "lotSize", + "nodeType": "MemberAccess", + "referencedDeclaration": 302, + "src": "9975:21:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 700, + "name": "_lotSize", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 549, + "src": "9999:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "9975:32:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 702, + "nodeType": "ExpressionStatement", + "src": "9975:32:4" + }, + { + "expression": { + "argumentTypes": null, + "id": 709, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 703, + "name": "p", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 639, + "src": "10012:1:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage_ptr", + "typeString": "struct SmartPiggies.Piggy storage pointer" + } + }, + "id": 706, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "uintDetails", + "nodeType": "MemberAccess", + "referencedDeclaration": 343, + "src": "10012:13:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailUints_$313_storage", + "typeString": "struct SmartPiggies.DetailUints storage ref" + } + }, + "id": 707, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "strikePrice", + "nodeType": "MemberAccess", + "referencedDeclaration": 304, + "src": "10012:25:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 708, + "name": "_strikePrice", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 551, + "src": "10040:12:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "10012:40:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 710, + "nodeType": "ExpressionStatement", + "src": "10012:40:4" + }, + { + "expression": { + "argumentTypes": null, + "id": 721, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 711, + "name": "p", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 639, + "src": "10057:1:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage_ptr", + "typeString": "struct SmartPiggies.Piggy storage pointer" + } + }, + "id": 714, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "uintDetails", + "nodeType": "MemberAccess", + "referencedDeclaration": 343, + "src": "10057:13:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailUints_$313_storage", + "typeString": "struct SmartPiggies.DetailUints storage ref" + } + }, + "id": 715, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "expiry", + "nodeType": "MemberAccess", + "referencedDeclaration": 306, + "src": "10057:20:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 718, + "name": "block", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2810, + "src": "10092:5:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_block", + "typeString": "block" + } + }, + "id": 719, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "number", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "10092:12:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 716, + "name": "_expiry", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 553, + "src": "10080:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 717, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 224, + "src": "10080:11:4", + "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": 720, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10080:25:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "10057:48:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 722, + "nodeType": "ExpressionStatement", + "src": "10057:48:4" + }, + { + "expression": { + "argumentTypes": null, + "id": 729, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 723, + "name": "p", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 639, + "src": "10110:1:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage_ptr", + "typeString": "struct SmartPiggies.Piggy storage pointer" + } + }, + "id": 726, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "flags", + "nodeType": "MemberAccess", + "referencedDeclaration": 345, + "src": "10110:7:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BoolFlags_$322_storage", + "typeString": "struct SmartPiggies.BoolFlags storage ref" + } + }, + "id": 727, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "isEuro", + "nodeType": "MemberAccess", + "referencedDeclaration": 317, + "src": "10110:14:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 728, + "name": "_isEuro", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 555, + "src": "10127:7:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "10110:24:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 730, + "nodeType": "ExpressionStatement", + "src": "10110:24:4" + }, + { + "expression": { + "argumentTypes": null, + "id": 737, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 731, + "name": "p", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 639, + "src": "10139:1:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage_ptr", + "typeString": "struct SmartPiggies.Piggy storage pointer" + } + }, + "id": 734, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "flags", + "nodeType": "MemberAccess", + "referencedDeclaration": 345, + "src": "10139:7:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BoolFlags_$322_storage", + "typeString": "struct SmartPiggies.BoolFlags storage ref" + } + }, + "id": 735, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "isPut", + "nodeType": "MemberAccess", + "referencedDeclaration": 319, + "src": "10139:13:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 736, + "name": "_isPut", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 557, + "src": "10155:6:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "10139:22:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 738, + "nodeType": "ExpressionStatement", + "src": "10139:22:4" + }, + { + "expression": { + "argumentTypes": null, + "id": 745, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 739, + "name": "p", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 639, + "src": "10166:1:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage_ptr", + "typeString": "struct SmartPiggies.Piggy storage pointer" + } + }, + "id": 742, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "flags", + "nodeType": "MemberAccess", + "referencedDeclaration": 345, + "src": "10166:7:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BoolFlags_$322_storage", + "typeString": "struct SmartPiggies.BoolFlags storage ref" + } + }, + "id": 743, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "isRequest", + "nodeType": "MemberAccess", + "referencedDeclaration": 315, + "src": "10166:17:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 744, + "name": "_isRequest", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 559, + "src": "10186:10:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "10166:30:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 746, + "nodeType": "ExpressionStatement", + "src": "10166:30:4" + }, + { + "condition": { + "argumentTypes": null, + "id": 747, + "name": "_isRequest", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 559, + "src": "10272:10:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 774, + "nodeType": "Block", + "src": "10344:89:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 764, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 757, + "name": "p", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 639, + "src": "10351:1:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage_ptr", + "typeString": "struct SmartPiggies.Piggy storage pointer" + } + }, + "id": 760, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "addresses", + "nodeType": "MemberAccess", + "referencedDeclaration": 341, + "src": "10351:11:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAddresses_$298_storage", + "typeString": "struct SmartPiggies.DetailAddresses storage ref" + } + }, + "id": 761, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "writer", + "nodeType": "MemberAccess", + "referencedDeclaration": 287, + "src": "10351:18:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 762, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2820, + "src": "10372:3:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 763, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "10372:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "10351:31:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 765, + "nodeType": "ExpressionStatement", + "src": "10351:31:4" + }, + { + "expression": { + "argumentTypes": null, + "id": 772, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 766, + "name": "p", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 639, + "src": "10389:1:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage_ptr", + "typeString": "struct SmartPiggies.Piggy storage pointer" + } + }, + "id": 769, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "uintDetails", + "nodeType": "MemberAccess", + "referencedDeclaration": 343, + "src": "10389:13:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailUints_$313_storage", + "typeString": "struct SmartPiggies.DetailUints storage ref" + } + }, + "id": 770, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "collateral", + "nodeType": "MemberAccess", + "referencedDeclaration": 300, + "src": "10389:24:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 771, + "name": "_collateral", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 547, + "src": "10416:11:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "10389:38:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 773, + "nodeType": "ExpressionStatement", + "src": "10389:38:4" + } + ] + }, + "id": 775, + "nodeType": "IfStatement", + "src": "10268:165:4", + "trueBody": { + "id": 756, + "nodeType": "Block", + "src": "10284:54:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 754, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 748, + "name": "p", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 639, + "src": "10291:1:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage_ptr", + "typeString": "struct SmartPiggies.Piggy storage pointer" + } + }, + "id": 751, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "uintDetails", + "nodeType": "MemberAccess", + "referencedDeclaration": 343, + "src": "10291:13:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailUints_$313_storage", + "typeString": "struct SmartPiggies.DetailUints storage ref" + } + }, + "id": 752, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "reqCollateral", + "nodeType": "MemberAccess", + "referencedDeclaration": 310, + "src": "10291:27:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 753, + "name": "_collateral", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 547, + "src": "10321:11:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "10291:41:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 755, + "nodeType": "ExpressionStatement", + "src": "10291:41:4" + } + ] + } + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 777, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2820, + "src": "10461:3:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 778, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "10461:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 779, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 285, + "src": "10473:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 776, + "name": "_addTokenToOwnedPiggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2578, + "src": "10437:23:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 780, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10437:44:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 781, + "nodeType": "ExpressionStatement", + "src": "10437:44:4" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 783, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2820, + "src": "10510:3:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 784, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "10510:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 785, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 285, + "src": "10527:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 786, + "name": "_strikePrice", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 551, + "src": "10541:12:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 789, + "name": "block", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2810, + "src": "10572:5:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_block", + "typeString": "block" + } + }, + "id": 790, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "number", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "10572:12:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 787, + "name": "_expiry", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 553, + "src": "10560:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 788, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 224, + "src": "10560:11:4", + "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": 791, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10560:25:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 792, + "name": "_isRequest", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 559, + "src": "10592:10:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 782, + "name": "CreatePiggy", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 381, + "src": "10492:11:4", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_bool_$returns$__$", + "typeString": "function (address,uint256,uint256,uint256,bool)" + } + }, + "id": 793, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10492:115:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 794, + "nodeType": "EmitStatement", + "src": "10487:120:4" + }, + { + "expression": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 795, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10620:4:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 563, + "id": 796, + "nodeType": "Return", + "src": "10613:11:4" + } + ] + }, + "documentation": "@notice Create a new ERC-59 token\n@dev Throws if `_collateralERC` is not a valid Ethereum (ERC-20) address.\nThrows if `_premiumERC` is not a valid Ethereum (ERC-20) address (may be same\nas `_collateralERC`).\nThrows if `_oracle` is not a valid Ethereum address.\nThrows if `_expiry` < block.number.\nIf `_asRequest` is true, throws if `_reqCollateral` == 0.\nIf `_asRequest` is false, throws if msg.sender has not delegated at least `_collateral`\nin the ERC-20 token whose contract is `_collateralERC` to the ERC-59 contract.\nWhen a new token is created, msg.sender should be recorded as the creator and owner.\nIf `_asRequest` is true, the zero address should be recorded as the seller.\nIf `_asRequest` is false, msg.sender should be recorded as the seller.\nIf `_asRequest` is false, `_reqCollateral` will be irrelevant and should be captured as 0.\nIf `_asRequest` is false, the ERC-59 contract must take ownership of `_collateral` amount\nof ERC-20 tokens governed by the `_collateralERC` contract.\n@param _collateralERC The address of the reference ERC-20 token to be used as collateral\n@param _premiumERC The address of the reference ERC-20 token to be used to pay the premium\nparam _oracle The address of a service contract which will return the settlement price\nparam _asRequest If true, will create the token as an \"RFP\" / request for a particular option\nparam _underlyingNow An identifier for the reference underlying which the contract at `_oracle`\nis able to parse to return the current price of the underlying\nparam _underlyingExpiry An identifier for the reference underlying which the contract at\n`_oracle` is able to parse to return the price of the underlying at `_expiry`\n@param _collateral The amount of collateral for the option, denominated in units of the token\nat the `_collateralERC` address\n@param _lotSize A multiplier on the settlement price used to determine settlement claims\n@param _strikePrice The strike value of the option, in the same units as the settlement price\n@param _expiry The block height at which the option will expire\nparam _reqCollateral The amount of collateral desired in the option, if creating with\n`_asRequest` == true, denominated in units of the token at the `_collateralERC` address\n@param _isEuro If true, the option can only be settled at or after `_expiry` is reached, else\nit can be settled at any time\n@param _isPut If true, the settlement claims will be calculated for a put option; else they\nwill be calculated for a call option", + "id": 798, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "createPiggy", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 560, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 539, + "name": "_collateralERC", + "nodeType": "VariableDeclaration", + "scope": 798, + "src": "8477:22:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 538, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8477:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 541, + "name": "_premiumERC", + "nodeType": "VariableDeclaration", + "scope": 798, + "src": "8504:19:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 540, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8504:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 543, + "name": "_dataResolverNow", + "nodeType": "VariableDeclaration", + "scope": 798, + "src": "8528:24:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 542, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8528:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 545, + "name": "_dataResolverAtExpiry", + "nodeType": "VariableDeclaration", + "scope": 798, + "src": "8557:29:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 544, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8557:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 547, + "name": "_collateral", + "nodeType": "VariableDeclaration", + "scope": 798, + "src": "8591:19:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 546, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8591:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 549, + "name": "_lotSize", + "nodeType": "VariableDeclaration", + "scope": 798, + "src": "8615:16:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 548, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8615:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 551, + "name": "_strikePrice", + "nodeType": "VariableDeclaration", + "scope": 798, + "src": "8636:20:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 550, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8636:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 553, + "name": "_expiry", + "nodeType": "VariableDeclaration", + "scope": 798, + "src": "8661:15:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 552, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8661:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 555, + "name": "_isEuro", + "nodeType": "VariableDeclaration", + "scope": 798, + "src": "8681:12:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 554, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "8681:4:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 557, + "name": "_isPut", + "nodeType": "VariableDeclaration", + "scope": 798, + "src": "8698:11:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 556, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "8698:4:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 559, + "name": "_isRequest", + "nodeType": "VariableDeclaration", + "scope": 798, + "src": "8714:15:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 558, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "8714:4:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "8472:262:4" + }, + "returnParameters": { + "id": 563, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 562, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 798, + "src": "8757:4:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 561, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "8757:4:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "8756:6:4" + }, + "scope": 2805, + "src": "8452:2176:4", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 871, + "nodeType": "Block", + "src": "10777:449:4", + "statements": [ + { + "assignments": [ + 806, + 808 + ], + "declarations": [ + { + "constant": false, + "id": 806, + "name": "success", + "nodeType": "VariableDeclaration", + "scope": 871, + "src": "10782:12:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 805, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "10782:4:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 808, + "name": "_decBytes", + "nodeType": "VariableDeclaration", + "scope": 871, + "src": "10796:22:4", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 807, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "10796:5:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 820, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "646563696d616c732829", + "id": 817, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10888:12:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_313ce567add4d438edf58b94ff345d7d38c45b17dfc0f947988d7819dca364f9", + "typeString": "literal_string \"decimals()\"" + }, + "value": "decimals()" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_313ce567add4d438edf58b94ff345d7d38c45b17dfc0f947988d7819dca364f9", + "typeString": "literal_string \"decimals()\"" + } + ], + "expression": { + "argumentTypes": null, + "id": 815, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2807, + "src": "10864:3:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 816, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "encodeWithSignature", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "10864:23:4", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$", + "typeString": "function (string memory) pure returns (bytes memory)" + } + }, + "id": 818, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10864:37:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 811, + "name": "_ERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 800, + "src": "10843:6:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 810, + "name": "PaymentToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 274, + "src": "10830:12:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_PaymentToken_$274_$", + "typeString": "type(contract PaymentToken)" + } + }, + "id": 812, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10830:20:4", + "typeDescriptions": { + "typeIdentifier": "t_contract$_PaymentToken_$274", + "typeString": "contract PaymentToken" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_PaymentToken_$274", + "typeString": "contract PaymentToken" + } + ], + "id": 809, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "10822:7:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 813, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10822:29:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 814, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "call", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "10822:34:4", + "typeDescriptions": { + "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$", + "typeString": "function (bytes memory) payable returns (bool,bytes memory)" + } + }, + "id": 819, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10822:85:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$", + "typeString": "tuple(bool,bytes memory)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "10781:126:4" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 822, + "name": "success", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 806, + "src": "10920:7:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "636f6c6c61746572616c204552432d323020636f6e747261637420646f6573206e6f742070726f7065726c79207370656369667920646563696d616c73", + "id": 823, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10929:63:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_e3d386bf715f6ade1ba03d3571c7bd8099823592469a72ba820b6c3855a0c7b7", + "typeString": "literal_string \"collateral ERC-20 contract does not properly specify decimals\"" + }, + "value": "collateral ERC-20 contract does not properly specify decimals" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_e3d386bf715f6ade1ba03d3571c7bd8099823592469a72ba820b6c3855a0c7b7", + "typeString": "literal_string \"collateral ERC-20 contract does not properly specify decimals\"" + } + ], + "id": 821, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2823, + 2824 + ], + "referencedDeclaration": 2824, + "src": "10912:7:4", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 824, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10912:81:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 825, + "nodeType": "ExpressionStatement", + "src": "10912:81:4" + }, + { + "assignments": [ + 827 + ], + "declarations": [ + { + "constant": false, + "id": 827, + "name": "_ERCdecimals", + "nodeType": "VariableDeclaration", + "scope": 871, + "src": "11028:20:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 826, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "11028:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 828, + "initialValue": null, + "nodeType": "VariableDeclarationStatement", + "src": "11028:20:4" + }, + { + "body": { + "id": 865, + "nodeType": "Block", + "src": "11097:96:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 863, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 840, + "name": "_ERCdecimals", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 827, + "src": "11104:12:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 862, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 841, + "name": "_ERCdecimals", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 827, + "src": "11119:12:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 861, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 843, + "name": "_decBytes", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 808, + "src": "11140:9:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 845, + "indexExpression": { + "argumentTypes": null, + "id": 844, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 830, + "src": "11150:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "11140:12:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + } + ], + "id": 842, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "11134:5:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint8_$", + "typeString": "type(uint8)" + }, + "typeName": "uint8" + }, + "id": 846, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "11134:19:4", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 859, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "hexValue": "32", + "id": 847, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "11155:1:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + }, + "nodeType": "BinaryOperation", + "operator": "**", + "rightExpression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 857, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "hexValue": "38", + "id": 848, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "11159:1:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_8_by_1", + "typeString": "int_const 8" + }, + "value": "8" + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 855, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 849, + "name": "_decBytes", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 808, + "src": "11162:9:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 850, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "11162:16:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 853, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 851, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 830, + "src": "11180:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "argumentTypes": null, + "hexValue": "31", + "id": 852, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "11182:1:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "11180:3:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 854, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "11179:5:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "11162:22:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 856, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "11161:24:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "11159:26:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 858, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "11158:28:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "11155:31:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 860, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "11154:33:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "11134:53:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "11119:68:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "11104:83:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 864, + "nodeType": "ExpressionStatement", + "src": "11104:83:4" + } + ] + }, + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 836, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 833, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 830, + "src": "11070:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 834, + "name": "_decBytes", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 808, + "src": "11074:9:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 835, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "11074:16:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "11070:20:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 866, + "initializationExpression": { + "assignments": [ + 830 + ], + "declarations": [ + { + "constant": false, + "id": 830, + "name": "i", + "nodeType": "VariableDeclaration", + "scope": 866, + "src": "11057:9:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 829, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "11057:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 832, + "initialValue": { + "argumentTypes": null, + "hexValue": "30", + "id": 831, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "11067:1:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "11057:11:4" + }, + "loopExpression": { + "expression": { + "argumentTypes": null, + "id": 838, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "11092:3:4", + "subExpression": { + "argumentTypes": null, + "id": 837, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 830, + "src": "11092:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 839, + "nodeType": "ExpressionStatement", + "src": "11092:3:4" + }, + "nodeType": "ForStatement", + "src": "11053:140:4" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 868, + "name": "_ERCdecimals", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 827, + "src": "11210:12:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 867, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "11204:5:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint8_$", + "typeString": "type(uint8)" + }, + "typeName": "uint8" + }, + "id": 869, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "11204:19:4", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "functionReturnParameters": 804, + "id": 870, + "nodeType": "Return", + "src": "11197:26:4" + } + ] + }, + "documentation": null, + "id": 872, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_getERC20Decimals", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 801, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 800, + "name": "_ERC20", + "nodeType": "VariableDeclaration", + "scope": 872, + "src": "10732:14:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 799, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "10732:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "10731:16:4" + }, + "returnParameters": { + "id": 804, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 803, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 872, + "src": "10770:5:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 802, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "10770:5:4", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "10769:7:4" + }, + "scope": 2805, + "src": "10705:521:4", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 883, + "nodeType": "Block", + "src": "11396:35:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 879, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "11409:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 881, + "indexExpression": { + "argumentTypes": null, + "id": 880, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 874, + "src": "11417:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "11409:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "functionReturnParameters": 878, + "id": 882, + "nodeType": "Return", + "src": "11402:24:4" + } + ] + }, + "documentation": null, + "id": 884, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getDetails", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 875, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 874, + "name": "_tokenId", + "nodeType": "VariableDeclaration", + "scope": 884, + "src": "11329:16:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 873, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "11329:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "11328:18:4" + }, + "returnParameters": { + "id": 878, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 877, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 884, + "src": "11380:12:4", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_memory_ptr", + "typeString": "struct SmartPiggies.Piggy" + }, + "typeName": { + "contractScope": null, + "id": 876, + "name": "Piggy", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 346, + "src": "11380:5:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage_ptr", + "typeString": "struct SmartPiggies.Piggy" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "11379:14:4" + }, + "scope": 2805, + "src": "11309:122:4", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 895, + "nodeType": "Block", + "src": "11601:36:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 891, + "name": "auctions", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 369, + "src": "11614:8:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_DetailAuction_$339_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.DetailAuction storage ref)" + } + }, + "id": 893, + "indexExpression": { + "argumentTypes": null, + "id": 892, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 886, + "src": "11623:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "11614:18:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAuction_$339_storage", + "typeString": "struct SmartPiggies.DetailAuction storage ref" + } + }, + "functionReturnParameters": 890, + "id": 894, + "nodeType": "Return", + "src": "11607:25:4" + } + ] + }, + "documentation": null, + "id": 896, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getAuctionDetails", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 887, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 886, + "name": "_tokenId", + "nodeType": "VariableDeclaration", + "scope": 896, + "src": "11526:16:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 885, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "11526:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "11525:18:4" + }, + "returnParameters": { + "id": 890, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 889, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 896, + "src": "11577:20:4", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAuction_$339_memory_ptr", + "typeString": "struct SmartPiggies.DetailAuction" + }, + "typeName": { + "contractScope": null, + "id": 888, + "name": "DetailAuction", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 339, + "src": "11577:13:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAuction_$339_storage_ptr", + "typeString": "struct SmartPiggies.DetailAuction" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "11576:22:4" + }, + "scope": 2805, + "src": "11499:138:4", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 917, + "nodeType": "Block", + "src": "12119:99:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 909, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 905, + "name": "_owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 898, + "src": "12133:6:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 907, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "12151: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": 906, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "12143:7:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 908, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "12143:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "12133:20:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "616464726573732063616e6e6f74206265207a65726f", + "id": 910, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "12155:24:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_a9941ee6da268eebad354f3ad5eda2e3e27f59ae11bbb28a54fc77e5ab33eca9", + "typeString": "literal_string \"address cannot be zero\"" + }, + "value": "address cannot be zero" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_a9941ee6da268eebad354f3ad5eda2e3e27f59ae11bbb28a54fc77e5ab33eca9", + "typeString": "literal_string \"address cannot be zero\"" + } + ], + "id": 904, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2823, + 2824 + ], + "referencedDeclaration": 2824, + "src": "12125:7:4", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 911, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "12125:55:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 912, + "nodeType": "ExpressionStatement", + "src": "12125:55:4" + }, + { + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 913, + "name": "ownedPiggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 357, + "src": "12193:12:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_uint256_$dyn_storage_$", + "typeString": "mapping(address => uint256[] storage ref)" + } + }, + "id": 915, + "indexExpression": { + "argumentTypes": null, + "id": 914, + "name": "_owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 898, + "src": "12206:6:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "12193:20:4", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage", + "typeString": "uint256[] storage ref" + } + }, + "functionReturnParameters": 903, + "id": 916, + "nodeType": "Return", + "src": "12186:27:4" + } + ] + }, + "documentation": "@notice Count the number of ERC-59 tokens owned by a particular address\n@dev ERC-59 tokens assigned to the zero address are considered invalid, and this\nfunction throws for queries about the zero address.\n@param _owner An address for which to query the balance of ERC-59 tokens\n@return The number of ERC-59 tokens owned by `_owner`, possibly zero", + "id": 918, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getOwnedPiggies", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 899, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 898, + "name": "_owner", + "nodeType": "VariableDeclaration", + "scope": 918, + "src": "12050:14:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 897, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "12050:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "12049:16:4" + }, + "returnParameters": { + "id": 903, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 902, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 918, + "src": "12099:16:4", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 900, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "12099:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 901, + "length": null, + "nodeType": "ArrayTypeName", + "src": "12099:9:4", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "12098:18:4" + }, + "scope": 2805, + "src": "12025:193:4", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 942, + "nodeType": "Block", + "src": "12323:108:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 932, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 928, + "name": "_owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 920, + "src": "12337:6:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 930, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "12355: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": 929, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "12347:7:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 931, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "12347:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "12337:20:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "616464726573732063616e6e6f74206265207a65726f", + "id": 933, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "12359:24:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_a9941ee6da268eebad354f3ad5eda2e3e27f59ae11bbb28a54fc77e5ab33eca9", + "typeString": "literal_string \"address cannot be zero\"" + }, + "value": "address cannot be zero" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_a9941ee6da268eebad354f3ad5eda2e3e27f59ae11bbb28a54fc77e5ab33eca9", + "typeString": "literal_string \"address cannot be zero\"" + } + ], + "id": 927, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2823, + 2824 + ], + "referencedDeclaration": 2824, + "src": "12329:7:4", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 934, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "12329:55:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 935, + "nodeType": "ExpressionStatement", + "src": "12329:55:4" + }, + { + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 936, + "name": "ERC20balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 352, + "src": "12397:13:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + } + }, + "id": 938, + "indexExpression": { + "argumentTypes": null, + "id": 937, + "name": "_owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 920, + "src": "12411:6:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "12397:21:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 940, + "indexExpression": { + "argumentTypes": null, + "id": 939, + "name": "_erc20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 922, + "src": "12419:6:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "12397:29:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 926, + "id": 941, + "nodeType": "Return", + "src": "12390:36:4" + } + ] + }, + "documentation": null, + "id": 943, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getERC20balance", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 923, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 920, + "name": "_owner", + "nodeType": "VariableDeclaration", + "scope": 943, + "src": "12247:14:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 919, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "12247:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 922, + "name": "_erc20", + "nodeType": "VariableDeclaration", + "scope": 943, + "src": "12263:14:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 921, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "12263:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "12246:32:4" + }, + "returnParameters": { + "id": 926, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 925, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 943, + "src": "12312:7:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 924, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "12312:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "12311:9:4" + }, + "scope": 2805, + "src": "12222:209:4", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 970, + "nodeType": "Block", + "src": "12516:170:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 960, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 953, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2820, + "src": "12530:3:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 954, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "12530:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 955, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "12544:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 957, + "indexExpression": { + "argumentTypes": null, + "id": 956, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 949, + "src": "12552:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "12544:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 958, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "addresses", + "nodeType": "MemberAccess", + "referencedDeclaration": 341, + "src": "12544:27:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAddresses_$298_storage", + "typeString": "struct SmartPiggies.DetailAddresses storage ref" + } + }, + "id": 959, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "holder", + "nodeType": "MemberAccess", + "referencedDeclaration": 289, + "src": "12544:34:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "12530:48:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "6d73672e73656e646572206973206e6f7420746865206f776e6572", + "id": 961, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "12580:29:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_fe1f2fd5008784e7e36b999381f1742f307634673a00747c7e17263f99f9413f", + "typeString": "literal_string \"msg.sender is not the owner\"" + }, + "value": "msg.sender is not the owner" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_fe1f2fd5008784e7e36b999381f1742f307634673a00747c7e17263f99f9413f", + "typeString": "literal_string \"msg.sender is not the owner\"" + } + ], + "id": 952, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2823, + 2824 + ], + "referencedDeclaration": 2824, + "src": "12522:7:4", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 962, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "12522:88:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 963, + "nodeType": "ExpressionStatement", + "src": "12522:88:4" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 965, + "name": "_from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 945, + "src": "12660:5:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 966, + "name": "_to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 947, + "src": "12667:3:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 967, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 949, + "src": "12672:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 964, + "name": "_internalTransfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1025, + "src": "12642:17:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 968, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "12642:39:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 969, + "nodeType": "ExpressionStatement", + "src": "12642:39:4" + } + ] + }, + "documentation": null, + "id": 971, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "transferFrom", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 950, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 945, + "name": "_from", + "nodeType": "VariableDeclaration", + "scope": 971, + "src": "12457:13:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 944, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "12457:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 947, + "name": "_to", + "nodeType": "VariableDeclaration", + "scope": 971, + "src": "12472:11:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 946, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "12472:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 949, + "name": "_tokenId", + "nodeType": "VariableDeclaration", + "scope": 971, + "src": "12485:16:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 948, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "12485:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "12456:46:4" + }, + "returnParameters": { + "id": 951, + "nodeType": "ParameterList", + "parameters": [], + "src": "12516:0:4" + }, + "scope": 2805, + "src": "12435:251:4", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 1024, + "nodeType": "Block", + "src": "12846:337:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 987, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 981, + "name": "_from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 973, + "src": "12860:5:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 982, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "12869:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 984, + "indexExpression": { + "argumentTypes": null, + "id": 983, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 977, + "src": "12877:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "12869:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 985, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "addresses", + "nodeType": "MemberAccess", + "referencedDeclaration": 341, + "src": "12869:27:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAddresses_$298_storage", + "typeString": "struct SmartPiggies.DetailAddresses storage ref" + } + }, + "id": 986, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "holder", + "nodeType": "MemberAccess", + "referencedDeclaration": 289, + "src": "12869:34:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "12860:43:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "66726f6d2061646472657373206973206e6f7420746865206f776e6572", + "id": 988, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "12905:31:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_99843832e911c3c269d6e837b97801c2d642529f985a3b8389d66cfd6f915338", + "typeString": "literal_string \"from address is not the owner\"" + }, + "value": "from address is not the owner" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_99843832e911c3c269d6e837b97801c2d642529f985a3b8389d66cfd6f915338", + "typeString": "literal_string \"from address is not the owner\"" + } + ], + "id": 980, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2823, + 2824 + ], + "referencedDeclaration": 2824, + "src": "12852:7:4", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 989, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "12852:85:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 990, + "nodeType": "ExpressionStatement", + "src": "12852:85:4" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 996, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 992, + "name": "_to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 975, + "src": "12951:3:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 994, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "12966: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": 993, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "12958:7:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 995, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "12958:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "12951:17:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "746f2061646472657373206973207a65726f", + "id": 997, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "12970:20:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_ba95b908b4488c4477717d86e0713cc9cd35576f43001de482194a4df6630027", + "typeString": "literal_string \"to address is zero\"" + }, + "value": "to address is zero" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_ba95b908b4488c4477717d86e0713cc9cd35576f43001de482194a4df6630027", + "typeString": "literal_string \"to address is zero\"" + } + ], + "id": 991, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2823, + 2824 + ], + "referencedDeclaration": 2824, + "src": "12943:7:4", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 998, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "12943:48:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 999, + "nodeType": "ExpressionStatement", + "src": "12943:48:4" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1001, + "name": "_from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 973, + "src": "13026:5:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1002, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 977, + "src": "13033:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1000, + "name": "_removeTokenFromOwnedPiggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2635, + "src": "12997:28:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 1003, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "12997:45:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1004, + "nodeType": "ExpressionStatement", + "src": "12997:45:4" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1006, + "name": "_to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 975, + "src": "13072:3:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1007, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 977, + "src": "13077:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1005, + "name": "_addTokenToOwnedPiggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2578, + "src": "13048:23:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 1008, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "13048:38:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1009, + "nodeType": "ExpressionStatement", + "src": "13048:38:4" + }, + { + "expression": { + "argumentTypes": null, + "id": 1016, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1010, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "13092:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 1012, + "indexExpression": { + "argumentTypes": null, + "id": 1011, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 977, + "src": "13100:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "13092:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 1013, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "addresses", + "nodeType": "MemberAccess", + "referencedDeclaration": 341, + "src": "13092:27:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAddresses_$298_storage", + "typeString": "struct SmartPiggies.DetailAddresses storage ref" + } + }, + "id": 1014, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "holder", + "nodeType": "MemberAccess", + "referencedDeclaration": 289, + "src": "13092:34:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 1015, + "name": "_to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 975, + "src": "13129:3:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "13092:40:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 1017, + "nodeType": "ExpressionStatement", + "src": "13092:40:4" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1019, + "name": "_from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 973, + "src": "13157:5:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1020, + "name": "_to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 975, + "src": "13164:3:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1021, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 977, + "src": "13169:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1018, + "name": "TransferPiggy", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 389, + "src": "13143:13:4", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 1022, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "13143:35:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1023, + "nodeType": "EmitStatement", + "src": "13138:40:4" + } + ] + }, + "documentation": null, + "id": 1025, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_internalTransfer", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 978, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 973, + "name": "_from", + "nodeType": "VariableDeclaration", + "scope": 1025, + "src": "12785:13:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 972, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "12785:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 975, + "name": "_to", + "nodeType": "VariableDeclaration", + "scope": 1025, + "src": "12800:11:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 974, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "12800:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 977, + "name": "_tokenId", + "nodeType": "VariableDeclaration", + "scope": 1025, + "src": "12813:16:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 976, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "12813:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "12784:46:4" + }, + "returnParameters": { + "id": 979, + "nodeType": "ParameterList", + "parameters": [], + "src": "12846:0:4" + }, + "scope": 2805, + "src": "12758:425:4", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 1230, + "nodeType": "Block", + "src": "13902:1574:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 1060, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1053, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "13916:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 1055, + "indexExpression": { + "argumentTypes": null, + "id": 1054, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1027, + "src": "13924:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "13916:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 1056, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "addresses", + "nodeType": "MemberAccess", + "referencedDeclaration": 341, + "src": "13916:27:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAddresses_$298_storage", + "typeString": "struct SmartPiggies.DetailAddresses storage ref" + } + }, + "id": 1057, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "holder", + "nodeType": "MemberAccess", + "referencedDeclaration": 289, + "src": "13916:34:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1058, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2820, + "src": "13954:3:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1059, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "13954:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "13916:48:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "796f75206d757374206f776e207468652052465020746f20757064617465206974", + "id": 1061, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "13966:35:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_1e7bdd33272a5c5d01810a40a6212bfe78a37d0eecf21f79c5c83d78fb8884a2", + "typeString": "literal_string \"you must own the RFP to update it\"" + }, + "value": "you must own the RFP to update it" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_1e7bdd33272a5c5d01810a40a6212bfe78a37d0eecf21f79c5c83d78fb8884a2", + "typeString": "literal_string \"you must own the RFP to update it\"" + } + ], + "id": 1052, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2823, + 2824 + ], + "referencedDeclaration": 2824, + "src": "13908:7:4", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 1062, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "13908:94:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1063, + "nodeType": "ExpressionStatement", + "src": "13908:94:4" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1065, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "14016:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 1067, + "indexExpression": { + "argumentTypes": null, + "id": 1066, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1027, + "src": "14024:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "14016:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 1068, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "flags", + "nodeType": "MemberAccess", + "referencedDeclaration": 345, + "src": "14016:23:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BoolFlags_$322_storage", + "typeString": "struct SmartPiggies.BoolFlags storage ref" + } + }, + "id": 1069, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "isRequest", + "nodeType": "MemberAccess", + "referencedDeclaration": 315, + "src": "14016:33:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "796f752063616e206f6e6c792075706461746520616e20524650", + "id": 1070, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "14051:28:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_f6a873ed8c71059d518992e0b4cceea2bcfd7fa380403e709a78f342fbbb8a76", + "typeString": "literal_string \"you can only update an RFP\"" + }, + "value": "you can only update an RFP" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_f6a873ed8c71059d518992e0b4cceea2bcfd7fa380403e709a78f342fbbb8a76", + "typeString": "literal_string \"you can only update an RFP\"" + } + ], + "id": 1064, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2823, + 2824 + ], + "referencedDeclaration": 2824, + "src": "14008:7:4", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 1071, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "14008:72:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1072, + "nodeType": "ExpressionStatement", + "src": "14008:72:4" + }, + { + "assignments": [ + 1074 + ], + "declarations": [ + { + "constant": false, + "id": 1074, + "name": "expiryBlock", + "nodeType": "VariableDeclaration", + "scope": 1230, + "src": "14086:19:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1073, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "14086:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1075, + "initialValue": null, + "nodeType": "VariableDeclarationStatement", + "src": "14086:19:4" + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 1080, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1076, + "name": "_collateralERC", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1029, + "src": "14115:14:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 1078, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "14141: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": 1077, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "14133:7:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 1079, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "14133:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "14115:28:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 1090, + "nodeType": "IfStatement", + "src": "14111:107:4", + "trueBody": { + "id": 1089, + "nodeType": "Block", + "src": "14145:73:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 1087, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1081, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "14153:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 1083, + "indexExpression": { + "argumentTypes": null, + "id": 1082, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1027, + "src": "14161:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "14153:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 1084, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "addresses", + "nodeType": "MemberAccess", + "referencedDeclaration": 341, + "src": "14153:27:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAddresses_$298_storage", + "typeString": "struct SmartPiggies.DetailAddresses storage ref" + } + }, + "id": 1085, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "collateralERC", + "nodeType": "MemberAccess", + "referencedDeclaration": 291, + "src": "14153:41:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 1086, + "name": "_collateralERC", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1029, + "src": "14197:14:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "14153:58:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 1088, + "nodeType": "ExpressionStatement", + "src": "14153:58:4" + } + ] + } + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 1095, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1091, + "name": "_premiumERC", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1031, + "src": "14227:11:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 1093, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "14250: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": 1092, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "14242:7:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 1094, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "14242:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "14227:25:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 1105, + "nodeType": "IfStatement", + "src": "14223:98:4", + "trueBody": { + "id": 1104, + "nodeType": "Block", + "src": "14254:67:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 1102, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1096, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "14262:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 1098, + "indexExpression": { + "argumentTypes": null, + "id": 1097, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1027, + "src": "14270:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "14262:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 1099, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "addresses", + "nodeType": "MemberAccess", + "referencedDeclaration": 341, + "src": "14262:27:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAddresses_$298_storage", + "typeString": "struct SmartPiggies.DetailAddresses storage ref" + } + }, + "id": 1100, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "premiumERC", + "nodeType": "MemberAccess", + "referencedDeclaration": 293, + "src": "14262:38:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 1101, + "name": "_premiumERC", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1031, + "src": "14303:11:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "14262:52:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 1103, + "nodeType": "ExpressionStatement", + "src": "14262:52:4" + } + ] + } + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 1110, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1106, + "name": "_dataResolverNow", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1033, + "src": "14330:16:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 1108, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "14358: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": 1107, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "14350:7:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 1109, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "14350:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "14330:30:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 1120, + "nodeType": "IfStatement", + "src": "14326:113:4", + "trueBody": { + "id": 1119, + "nodeType": "Block", + "src": "14362:77:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 1117, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1111, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "14370:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 1113, + "indexExpression": { + "argumentTypes": null, + "id": 1112, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1027, + "src": "14378:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "14370:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 1114, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "addresses", + "nodeType": "MemberAccess", + "referencedDeclaration": 341, + "src": "14370:27:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAddresses_$298_storage", + "typeString": "struct SmartPiggies.DetailAddresses storage ref" + } + }, + "id": 1115, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "dataResolverNow", + "nodeType": "MemberAccess", + "referencedDeclaration": 295, + "src": "14370:43:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 1116, + "name": "_dataResolverNow", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1033, + "src": "14416:16:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "14370:62:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 1118, + "nodeType": "ExpressionStatement", + "src": "14370:62:4" + } + ] + } + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 1125, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1121, + "name": "_dataResolverAtExpiry", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1035, + "src": "14448:21:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 1123, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "14481: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": 1122, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "14473:7:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 1124, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "14473:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "14448:35:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 1135, + "nodeType": "IfStatement", + "src": "14444:128:4", + "trueBody": { + "id": 1134, + "nodeType": "Block", + "src": "14485:87:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 1132, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1126, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "14493:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 1128, + "indexExpression": { + "argumentTypes": null, + "id": 1127, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1027, + "src": "14501:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "14493:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 1129, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "addresses", + "nodeType": "MemberAccess", + "referencedDeclaration": 341, + "src": "14493:27:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAddresses_$298_storage", + "typeString": "struct SmartPiggies.DetailAddresses storage ref" + } + }, + "id": 1130, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "dataResolverAtExpiry", + "nodeType": "MemberAccess", + "referencedDeclaration": 297, + "src": "14493:48:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 1131, + "name": "_dataResolverAtExpiry", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1035, + "src": "14544:21:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "14493:72:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 1133, + "nodeType": "ExpressionStatement", + "src": "14493:72:4" + } + ] + } + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1138, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1136, + "name": "_reqCollateral", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1037, + "src": "14581:14:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 1137, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "14599:1:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "14581:19:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 1148, + "nodeType": "IfStatement", + "src": "14577:100:4", + "trueBody": { + "id": 1147, + "nodeType": "Block", + "src": "14602:75:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 1145, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1139, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "14610:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 1141, + "indexExpression": { + "argumentTypes": null, + "id": 1140, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1027, + "src": "14618:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "14610:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 1142, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "uintDetails", + "nodeType": "MemberAccess", + "referencedDeclaration": 343, + "src": "14610:29:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailUints_$313_storage", + "typeString": "struct SmartPiggies.DetailUints storage ref" + } + }, + "id": 1143, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "reqCollateral", + "nodeType": "MemberAccess", + "referencedDeclaration": 310, + "src": "14610:43:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 1144, + "name": "_reqCollateral", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1037, + "src": "14656:14:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "14610:60:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1146, + "nodeType": "ExpressionStatement", + "src": "14610:60:4" + } + ] + } + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1151, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1149, + "name": "_lotSize", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1039, + "src": "14686:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 1150, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "14698:1:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "14686:13:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 1161, + "nodeType": "IfStatement", + "src": "14682:82:4", + "trueBody": { + "id": 1160, + "nodeType": "Block", + "src": "14701:63:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 1158, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1152, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "14709:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 1154, + "indexExpression": { + "argumentTypes": null, + "id": 1153, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1027, + "src": "14717:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "14709:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 1155, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "uintDetails", + "nodeType": "MemberAccess", + "referencedDeclaration": 343, + "src": "14709:29:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailUints_$313_storage", + "typeString": "struct SmartPiggies.DetailUints storage ref" + } + }, + "id": 1156, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "lotSize", + "nodeType": "MemberAccess", + "referencedDeclaration": 302, + "src": "14709:37:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 1157, + "name": "_lotSize", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1039, + "src": "14749:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "14709:48:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1159, + "nodeType": "ExpressionStatement", + "src": "14709:48:4" + } + ] + } + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1164, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1162, + "name": "_strikePrice", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1041, + "src": "14773:12:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 1163, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "14789:1:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "14773:17:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 1174, + "nodeType": "IfStatement", + "src": "14769:95:4", + "trueBody": { + "id": 1173, + "nodeType": "Block", + "src": "14793:71:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 1171, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1165, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "14801:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 1167, + "indexExpression": { + "argumentTypes": null, + "id": 1166, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1027, + "src": "14809:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "14801:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 1168, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "uintDetails", + "nodeType": "MemberAccess", + "referencedDeclaration": 343, + "src": "14801:29:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailUints_$313_storage", + "typeString": "struct SmartPiggies.DetailUints storage ref" + } + }, + "id": 1169, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "strikePrice", + "nodeType": "MemberAccess", + "referencedDeclaration": 304, + "src": "14801:41:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 1170, + "name": "_strikePrice", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1041, + "src": "14845:12:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "14801:56:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1172, + "nodeType": "ExpressionStatement", + "src": "14801:56:4" + } + ] + } + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1177, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1175, + "name": "_expiry", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1043, + "src": "14873:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 1176, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "14884:1:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "14873:12:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 1195, + "nodeType": "IfStatement", + "src": "14869:234:4", + "trueBody": { + "id": 1194, + "nodeType": "Block", + "src": "14887:216:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 1184, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 1178, + "name": "expiryBlock", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1074, + "src": "14999:11:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1181, + "name": "block", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2810, + "src": "15025:5:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_block", + "typeString": "block" + } + }, + "id": 1182, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "number", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "15025:12:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 1179, + "name": "_expiry", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1043, + "src": "15013:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1180, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 224, + "src": "15013:11:4", + "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": 1183, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "15013:25:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "14999:39:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1185, + "nodeType": "ExpressionStatement", + "src": "14999:39:4" + }, + { + "expression": { + "argumentTypes": null, + "id": 1192, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1186, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "15046:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 1188, + "indexExpression": { + "argumentTypes": null, + "id": 1187, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1027, + "src": "15054:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "15046:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 1189, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "uintDetails", + "nodeType": "MemberAccess", + "referencedDeclaration": 343, + "src": "15046:29:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailUints_$313_storage", + "typeString": "struct SmartPiggies.DetailUints storage ref" + } + }, + "id": 1190, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "expiry", + "nodeType": "MemberAccess", + "referencedDeclaration": 306, + "src": "15046:36:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 1191, + "name": "expiryBlock", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1074, + "src": "15085:11:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "15046:50:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1193, + "nodeType": "ExpressionStatement", + "src": "15046:50:4" + } + ] + } + }, + { + "expression": { + "argumentTypes": null, + "id": 1202, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1196, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "15108:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 1198, + "indexExpression": { + "argumentTypes": null, + "id": 1197, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1027, + "src": "15116:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "15108:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 1199, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "flags", + "nodeType": "MemberAccess", + "referencedDeclaration": 345, + "src": "15108:23:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BoolFlags_$322_storage", + "typeString": "struct SmartPiggies.BoolFlags storage ref" + } + }, + "id": 1200, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "isEuro", + "nodeType": "MemberAccess", + "referencedDeclaration": 317, + "src": "15108:30:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 1201, + "name": "_isEuro", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1045, + "src": "15141:7:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "15108:40:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1203, + "nodeType": "ExpressionStatement", + "src": "15108:40:4" + }, + { + "expression": { + "argumentTypes": null, + "id": 1210, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1204, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "15154:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 1206, + "indexExpression": { + "argumentTypes": null, + "id": 1205, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1027, + "src": "15162:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "15154:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 1207, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "flags", + "nodeType": "MemberAccess", + "referencedDeclaration": 345, + "src": "15154:23:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BoolFlags_$322_storage", + "typeString": "struct SmartPiggies.BoolFlags storage ref" + } + }, + "id": 1208, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "isPut", + "nodeType": "MemberAccess", + "referencedDeclaration": 319, + "src": "15154:29:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 1209, + "name": "_isPut", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1047, + "src": "15186:6:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "15154:38:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1211, + "nodeType": "ExpressionStatement", + "src": "15154:38:4" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1213, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2820, + "src": "15221:3:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1214, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "15221:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 1215, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1027, + "src": "15239:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 1216, + "name": "_collateralERC", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1029, + "src": "15255:14:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1217, + "name": "_premiumERC", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1031, + "src": "15277:11:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1218, + "name": "_dataResolverNow", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1033, + "src": "15296:16:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1219, + "name": "_dataResolverAtExpiry", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1035, + "src": "15320:21:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1220, + "name": "_reqCollateral", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1037, + "src": "15349:14:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 1221, + "name": "_lotSize", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1039, + "src": "15371:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 1222, + "name": "_strikePrice", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1041, + "src": "15387:12:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 1223, + "name": "expiryBlock", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1074, + "src": "15407:11:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 1224, + "name": "_isEuro", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1045, + "src": "15426:7:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "id": 1225, + "name": "_isPut", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1047, + "src": "15441:6:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 1212, + "name": "UpdateRFP", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 415, + "src": "15204:9:4", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_address_$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_bool_$_t_bool_$returns$__$", + "typeString": "function (address,uint256,address,address,address,address,uint256,uint256,uint256,uint256,bool,bool)" + } + }, + "id": 1226, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "15204:249:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1227, + "nodeType": "EmitStatement", + "src": "15199:254:4" + }, + { + "expression": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 1228, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "15467:4:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 1051, + "id": 1229, + "nodeType": "Return", + "src": "15460:11:4" + } + ] + }, + "documentation": null, + "id": 1231, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "updateRFP", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1048, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1027, + "name": "_tokenId", + "nodeType": "VariableDeclaration", + "scope": 1231, + "src": "13553:16:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1026, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "13553:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1029, + "name": "_collateralERC", + "nodeType": "VariableDeclaration", + "scope": 1231, + "src": "13575:22:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1028, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "13575:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1031, + "name": "_premiumERC", + "nodeType": "VariableDeclaration", + "scope": 1231, + "src": "13603:19:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1030, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "13603:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1033, + "name": "_dataResolverNow", + "nodeType": "VariableDeclaration", + "scope": 1231, + "src": "13628:24:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1032, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "13628:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1035, + "name": "_dataResolverAtExpiry", + "nodeType": "VariableDeclaration", + "scope": 1231, + "src": "13658:29:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1034, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "13658:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1037, + "name": "_reqCollateral", + "nodeType": "VariableDeclaration", + "scope": 1231, + "src": "13693:22:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1036, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "13693:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1039, + "name": "_lotSize", + "nodeType": "VariableDeclaration", + "scope": 1231, + "src": "13721:16:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1038, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "13721:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1041, + "name": "_strikePrice", + "nodeType": "VariableDeclaration", + "scope": 1231, + "src": "13743:20:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1040, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "13743:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1043, + "name": "_expiry", + "nodeType": "VariableDeclaration", + "scope": 1231, + "src": "13769:15:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1042, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "13769:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1045, + "name": "_isEuro", + "nodeType": "VariableDeclaration", + "scope": 1231, + "src": "13790:12:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 1044, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "13790:4:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1047, + "name": "_isPut", + "nodeType": "VariableDeclaration", + "scope": 1231, + "src": "13830:11:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 1046, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "13830:4:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "13547:322:4" + }, + "returnParameters": { + "id": 1051, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1050, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 1231, + "src": "13894:4:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 1049, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "13894:4:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "13893:6:4" + }, + "scope": 2805, + "src": "13529:1947:4", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 1322, + "nodeType": "Block", + "src": "15662:818:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 1246, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1239, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2820, + "src": "15676:3:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1240, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "15676:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1241, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "15690:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 1243, + "indexExpression": { + "argumentTypes": null, + "id": 1242, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1233, + "src": "15698:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "15690:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 1244, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "addresses", + "nodeType": "MemberAccess", + "referencedDeclaration": 341, + "src": "15690:27:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAddresses_$298_storage", + "typeString": "struct SmartPiggies.DetailAddresses storage ref" + } + }, + "id": 1245, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "holder", + "nodeType": "MemberAccess", + "referencedDeclaration": 289, + "src": "15690:34:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "15676:48:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "796f75206d757374206f776e2074686520746f6b656e20746f206275726e206974", + "id": 1247, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "15726:35:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_ae5efd2f25cc052b288460f4af4064285c949a9fe14d0e09925196031bf6eb1c", + "typeString": "literal_string \"you must own the token to burn it\"" + }, + "value": "you must own the token to burn it" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_ae5efd2f25cc052b288460f4af4064285c949a9fe14d0e09925196031bf6eb1c", + "typeString": "literal_string \"you must own the token to burn it\"" + } + ], + "id": 1238, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2823, + 2824 + ], + "referencedDeclaration": 2824, + "src": "15668:7:4", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 1248, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "15668:94:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1249, + "nodeType": "ExpressionStatement", + "src": "15668:94:4" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1255, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "15776:33:4", + "subExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1251, + "name": "auctions", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 369, + "src": "15777:8:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_DetailAuction_$339_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.DetailAuction storage ref)" + } + }, + "id": 1253, + "indexExpression": { + "argumentTypes": null, + "id": 1252, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1233, + "src": "15786:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "15777:18:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAuction_$339_storage", + "typeString": "struct SmartPiggies.DetailAuction storage ref" + } + }, + "id": 1254, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "auctionActive", + "nodeType": "MemberAccess", + "referencedDeclaration": 336, + "src": "15777:32:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "796f752063616e6e6f74206275726e206120746f6b656e207768696368206973206f6e2061756374696f6e", + "id": 1256, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "15811:45:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_94906766d6c5f71acdbc2faad8a02da0c8731bc18b156d0371c37f687d0f8207", + "typeString": "literal_string \"you cannot burn a token which is on auction\"" + }, + "value": "you cannot burn a token which is on auction" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_94906766d6c5f71acdbc2faad8a02da0c8731bc18b156d0371c37f687d0f8207", + "typeString": "literal_string \"you cannot burn a token which is on auction\"" + } + ], + "id": 1250, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2823, + 2824 + ], + "referencedDeclaration": 2824, + "src": "15768:7:4", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 1257, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "15768:89:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1258, + "nodeType": "ExpressionStatement", + "src": "15768:89:4" + }, + { + "condition": { + "argumentTypes": null, + "id": 1264, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "15867:34:4", + "subExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1259, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "15868:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 1261, + "indexExpression": { + "argumentTypes": null, + "id": 1260, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1233, + "src": "15876:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "15868:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 1262, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "flags", + "nodeType": "MemberAccess", + "referencedDeclaration": 345, + "src": "15868:23:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BoolFlags_$322_storage", + "typeString": "struct SmartPiggies.BoolFlags storage ref" + } + }, + "id": 1263, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "isRequest", + "nodeType": "MemberAccess", + "referencedDeclaration": 315, + "src": "15868:33:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 1295, + "nodeType": "IfStatement", + "src": "15863:324:4", + "trueBody": { + "id": 1294, + "nodeType": "Block", + "src": "15903:284:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 1273, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1266, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2820, + "src": "15919:3:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1267, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "15919:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1268, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "15933:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 1270, + "indexExpression": { + "argumentTypes": null, + "id": 1269, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1233, + "src": "15941:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "15933:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 1271, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "addresses", + "nodeType": "MemberAccess", + "referencedDeclaration": 341, + "src": "15933:27:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAddresses_$298_storage", + "typeString": "struct SmartPiggies.DetailAddresses storage ref" + } + }, + "id": 1272, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "writer", + "nodeType": "MemberAccess", + "referencedDeclaration": 287, + "src": "15933:34:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "15919:48:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "796f75206d757374206f776e2074686520636f6c6c61746572616c20746f207265636c61696d206974", + "id": 1274, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "15969:43:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_e1a37be9c1372dff3a2267a67b092292ca46345df721c9020edbf06b5199d701", + "typeString": "literal_string \"you must own the collateral to reclaim it\"" + }, + "value": "you must own the collateral to reclaim it" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_e1a37be9c1372dff3a2267a67b092292ca46345df721c9020edbf06b5199d701", + "typeString": "literal_string \"you must own the collateral to reclaim it\"" + } + ], + "id": 1265, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2823, + 2824 + ], + "referencedDeclaration": 2824, + "src": "15911:7:4", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 1275, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "15911:102:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1276, + "nodeType": "ExpressionStatement", + "src": "15911:102:4" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1285, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2820, + "src": "16127:3:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1286, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "16127:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1287, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "16139:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 1289, + "indexExpression": { + "argumentTypes": null, + "id": 1288, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1233, + "src": "16147:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "16139:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 1290, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "uintDetails", + "nodeType": "MemberAccess", + "referencedDeclaration": 343, + "src": "16139:29:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailUints_$313_storage", + "typeString": "struct SmartPiggies.DetailUints storage ref" + } + }, + "id": 1291, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "collateral", + "nodeType": "MemberAccess", + "referencedDeclaration": 300, + "src": "16139:40:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1278, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "16075:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 1280, + "indexExpression": { + "argumentTypes": null, + "id": 1279, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1233, + "src": "16083:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "16075:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 1281, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "addresses", + "nodeType": "MemberAccess", + "referencedDeclaration": 341, + "src": "16075:27:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAddresses_$298_storage", + "typeString": "struct SmartPiggies.DetailAddresses storage ref" + } + }, + "id": 1282, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "collateralERC", + "nodeType": "MemberAccess", + "referencedDeclaration": 291, + "src": "16075:41:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1277, + "name": "PaymentToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 274, + "src": "16062:12:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_PaymentToken_$274_$", + "typeString": "type(contract PaymentToken)" + } + }, + "id": 1283, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "16062:55:4", + "typeDescriptions": { + "typeIdentifier": "t_contract$_PaymentToken_$274", + "typeString": "contract PaymentToken" + } + }, + "id": 1284, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "transfer", + "nodeType": "MemberAccess", + "referencedDeclaration": 268, + "src": "16062:64:4", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,uint256) external returns (bool)" + } + }, + "id": 1292, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "16062:118:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1293, + "nodeType": "ExpressionStatement", + "src": "16062:118:4" + } + ] + } + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1297, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2820, + "src": "16212:3:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1298, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "16212:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 1299, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1233, + "src": "16224:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1300, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "16234:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 1302, + "indexExpression": { + "argumentTypes": null, + "id": 1301, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1233, + "src": "16242:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "16234:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 1303, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "flags", + "nodeType": "MemberAccess", + "referencedDeclaration": 345, + "src": "16234:23:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BoolFlags_$322_storage", + "typeString": "struct SmartPiggies.BoolFlags storage ref" + } + }, + "id": 1304, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "isRequest", + "nodeType": "MemberAccess", + "referencedDeclaration": 315, + "src": "16234:33:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 1296, + "name": "ReclaimAndBurn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 423, + "src": "16197:14:4", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_bool_$returns$__$", + "typeString": "function (address,uint256,bool)" + } + }, + "id": 1305, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "16197:71:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1306, + "nodeType": "EmitStatement", + "src": "16192:76:4" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1308, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "16338:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 1310, + "indexExpression": { + "argumentTypes": null, + "id": 1309, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1233, + "src": "16346:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "16338:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 1311, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "addresses", + "nodeType": "MemberAccess", + "referencedDeclaration": 341, + "src": "16338:27:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAddresses_$298_storage", + "typeString": "struct SmartPiggies.DetailAddresses storage ref" + } + }, + "id": 1312, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "holder", + "nodeType": "MemberAccess", + "referencedDeclaration": 289, + "src": "16338:34:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1313, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1233, + "src": "16374:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1307, + "name": "_removeTokenFromOwnedPiggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2635, + "src": "16309:28:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 1314, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "16309:74:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1315, + "nodeType": "ExpressionStatement", + "src": "16309:74:4" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1317, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1233, + "src": "16449:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1316, + "name": "_resetPiggy", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2789, + "src": "16437:11:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$__$", + "typeString": "function (uint256)" + } + }, + "id": 1318, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "16437:21:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1319, + "nodeType": "ExpressionStatement", + "src": "16437:21:4" + }, + { + "expression": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 1320, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "16471:4:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 1237, + "id": 1321, + "nodeType": "Return", + "src": "16464:11:4" + } + ] + }, + "documentation": null, + "id": 1323, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "reclaimAndBurn", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1234, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1233, + "name": "_tokenId", + "nodeType": "VariableDeclaration", + "scope": 1323, + "src": "15612:16:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1232, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "15612:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "15611:18:4" + }, + "returnParameters": { + "id": 1237, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1236, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 1323, + "src": "15654:4:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 1235, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "15654:4:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "15653:6:4" + }, + "scope": 2805, + "src": "15588:892:4", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 1377, + "nodeType": "Block", + "src": "16547:501:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 1333, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1328, + "name": "auctions", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 369, + "src": "16553:8:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_DetailAuction_$339_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.DetailAuction storage ref)" + } + }, + "id": 1330, + "indexExpression": { + "argumentTypes": null, + "id": 1329, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1325, + "src": "16562:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "16553:18:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAuction_$339_storage", + "typeString": "struct SmartPiggies.DetailAuction storage ref" + } + }, + "id": 1331, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "startBlock", + "nodeType": "MemberAccess", + "referencedDeclaration": 324, + "src": "16553:29:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "30", + "id": 1332, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "16585:1:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "16553:33:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1334, + "nodeType": "ExpressionStatement", + "src": "16553:33:4" + }, + { + "expression": { + "argumentTypes": null, + "id": 1340, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1335, + "name": "auctions", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 369, + "src": "16592:8:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_DetailAuction_$339_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.DetailAuction storage ref)" + } + }, + "id": 1337, + "indexExpression": { + "argumentTypes": null, + "id": 1336, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1325, + "src": "16601:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "16592:18:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAuction_$339_storage", + "typeString": "struct SmartPiggies.DetailAuction storage ref" + } + }, + "id": 1338, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "expiryBlock", + "nodeType": "MemberAccess", + "referencedDeclaration": 326, + "src": "16592:30:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "30", + "id": 1339, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "16625:1:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "16592:34:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1341, + "nodeType": "ExpressionStatement", + "src": "16592:34:4" + }, + { + "expression": { + "argumentTypes": null, + "id": 1347, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1342, + "name": "auctions", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 369, + "src": "16632:8:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_DetailAuction_$339_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.DetailAuction storage ref)" + } + }, + "id": 1344, + "indexExpression": { + "argumentTypes": null, + "id": 1343, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1325, + "src": "16641:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "16632:18:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAuction_$339_storage", + "typeString": "struct SmartPiggies.DetailAuction storage ref" + } + }, + "id": 1345, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "startPrice", + "nodeType": "MemberAccess", + "referencedDeclaration": 328, + "src": "16632:29:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "30", + "id": 1346, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "16664:1:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "16632:33:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1348, + "nodeType": "ExpressionStatement", + "src": "16632:33:4" + }, + { + "expression": { + "argumentTypes": null, + "id": 1354, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1349, + "name": "auctions", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 369, + "src": "16671:8:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_DetailAuction_$339_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.DetailAuction storage ref)" + } + }, + "id": 1351, + "indexExpression": { + "argumentTypes": null, + "id": 1350, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1325, + "src": "16680:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "16671:18:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAuction_$339_storage", + "typeString": "struct SmartPiggies.DetailAuction storage ref" + } + }, + "id": 1352, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "reservePrice", + "nodeType": "MemberAccess", + "referencedDeclaration": 330, + "src": "16671:31:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "30", + "id": 1353, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "16705:1:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "16671:35:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1355, + "nodeType": "ExpressionStatement", + "src": "16671:35:4" + }, + { + "expression": { + "argumentTypes": null, + "id": 1361, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1356, + "name": "auctions", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 369, + "src": "16712:8:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_DetailAuction_$339_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.DetailAuction storage ref)" + } + }, + "id": 1358, + "indexExpression": { + "argumentTypes": null, + "id": 1357, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1325, + "src": "16721:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "16712:18:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAuction_$339_storage", + "typeString": "struct SmartPiggies.DetailAuction storage ref" + } + }, + "id": 1359, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "timeStep", + "nodeType": "MemberAccess", + "referencedDeclaration": 332, + "src": "16712:27:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "30", + "id": 1360, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "16742:1:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "16712:31:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1362, + "nodeType": "ExpressionStatement", + "src": "16712:31:4" + }, + { + "expression": { + "argumentTypes": null, + "id": 1368, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1363, + "name": "auctions", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 369, + "src": "16749:8:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_DetailAuction_$339_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.DetailAuction storage ref)" + } + }, + "id": 1365, + "indexExpression": { + "argumentTypes": null, + "id": 1364, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1325, + "src": "16758:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "16749:18:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAuction_$339_storage", + "typeString": "struct SmartPiggies.DetailAuction storage ref" + } + }, + "id": 1366, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "priceStep", + "nodeType": "MemberAccess", + "referencedDeclaration": 334, + "src": "16749:28:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "30", + "id": 1367, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "16780:1:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "16749:32:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1369, + "nodeType": "ExpressionStatement", + "src": "16749:32:4" + }, + { + "expression": { + "argumentTypes": null, + "id": 1375, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1370, + "name": "auctions", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 369, + "src": "16787:8:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_DetailAuction_$339_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.DetailAuction storage ref)" + } + }, + "id": 1372, + "indexExpression": { + "argumentTypes": null, + "id": 1371, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1325, + "src": "16796:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "16787:18:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAuction_$339_storage", + "typeString": "struct SmartPiggies.DetailAuction storage ref" + } + }, + "id": 1373, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "auctionActive", + "nodeType": "MemberAccess", + "referencedDeclaration": 336, + "src": "16787:32:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "66616c7365", + "id": 1374, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "16822:5:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "src": "16787:40:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1376, + "nodeType": "ExpressionStatement", + "src": "16787:40:4" + } + ] + }, + "documentation": null, + "id": 1378, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_clearAuctionDetails", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1326, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1325, + "name": "_tokenId", + "nodeType": "VariableDeclaration", + "scope": 1378, + "src": "16514:16:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1324, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "16514:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "16513:18:4" + }, + "returnParameters": { + "id": 1327, + "nodeType": "ParameterList", + "parameters": [], + "src": "16547:0:4" + }, + "scope": 2805, + "src": "16484:564:4", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 1548, + "nodeType": "Block", + "src": "17261:1866:4", + "statements": [ + { + "assignments": [ + 1396 + ], + "declarations": [ + { + "constant": false, + "id": 1396, + "name": "_auctionExpiry", + "nodeType": "VariableDeclaration", + "scope": 1548, + "src": "17267:22:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1395, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "17267:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1402, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1400, + "name": "_auctionLength", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1386, + "src": "17309:14:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1397, + "name": "block", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2810, + "src": "17292:5:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_block", + "typeString": "block" + } + }, + "id": 1398, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "number", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "17292:12:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1399, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 224, + "src": "17292:16:4", + "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": 1401, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "17292:32:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "17267:57:4" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 1411, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1404, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "17338:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 1406, + "indexExpression": { + "argumentTypes": null, + "id": 1405, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1380, + "src": "17346:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "17338:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 1407, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "addresses", + "nodeType": "MemberAccess", + "referencedDeclaration": 341, + "src": "17338:27:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAddresses_$298_storage", + "typeString": "struct SmartPiggies.DetailAddresses storage ref" + } + }, + "id": 1408, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "holder", + "nodeType": "MemberAccess", + "referencedDeclaration": 289, + "src": "17338:34:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1409, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2820, + "src": "17376:3:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1410, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "17376:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "17338:48:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "796f75206d757374206f776e206120746f6b656e20746f2061756374696f6e206974", + "id": 1412, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "17388:36:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_347b553f3479dd6198fdca821cd75f6d27d0336c41b4547759f0a4c4f21c9a92", + "typeString": "literal_string \"you must own a token to auction it\"" + }, + "value": "you must own a token to auction it" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_347b553f3479dd6198fdca821cd75f6d27d0336c41b4547759f0a4c4f21c9a92", + "typeString": "literal_string \"you must own a token to auction it\"" + } + ], + "id": 1403, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2823, + 2824 + ], + "referencedDeclaration": 2824, + "src": "17330:7:4", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 1413, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "17330:95:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1414, + "nodeType": "ExpressionStatement", + "src": "17330:95:4" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1423, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1416, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "17439:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 1418, + "indexExpression": { + "argumentTypes": null, + "id": 1417, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1380, + "src": "17447:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "17439:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 1419, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "uintDetails", + "nodeType": "MemberAccess", + "referencedDeclaration": 343, + "src": "17439:29:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailUints_$313_storage", + "typeString": "struct SmartPiggies.DetailUints storage ref" + } + }, + "id": 1420, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "expiry", + "nodeType": "MemberAccess", + "referencedDeclaration": 306, + "src": "17439:36:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1421, + "name": "block", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2810, + "src": "17478:5:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_block", + "typeString": "block" + } + }, + "id": 1422, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "number", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "17478:12:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "17439:51:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "6f7074696f6e206d757374206e6f742062652065787069726564", + "id": 1424, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "17492:28:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_ba126d0c204e17df1d0c888d9310fb1a71bf1e5ac964bdfd20946754b0eb84fe", + "typeString": "literal_string \"option must not be expired\"" + }, + "value": "option must not be expired" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_ba126d0c204e17df1d0c888d9310fb1a71bf1e5ac964bdfd20946754b0eb84fe", + "typeString": "literal_string \"option must not be expired\"" + } + ], + "id": 1415, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2823, + 2824 + ], + "referencedDeclaration": 2824, + "src": "17431:7:4", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 1425, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "17431:90:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1426, + "nodeType": "ExpressionStatement", + "src": "17431:90:4" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1434, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1428, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "17535:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 1430, + "indexExpression": { + "argumentTypes": null, + "id": 1429, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1380, + "src": "17543:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "17535:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 1431, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "uintDetails", + "nodeType": "MemberAccess", + "referencedDeclaration": 343, + "src": "17535:29:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailUints_$313_storage", + "typeString": "struct SmartPiggies.DetailUints storage ref" + } + }, + "id": 1432, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "expiry", + "nodeType": "MemberAccess", + "referencedDeclaration": 306, + "src": "17535:36:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "id": 1433, + "name": "_auctionExpiry", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1396, + "src": "17574:14:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "17535:53:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "61756374696f6e2063616e6e6f742065787069726520616674657220746865206f7074696f6e", + "id": 1435, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "17590:40:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_daf46ad355eb83d623c4a90b6054984c4a49e4edba5a28880e2c350c8e4a5235", + "typeString": "literal_string \"auction cannot expire after the option\"" + }, + "value": "auction cannot expire after the option" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_daf46ad355eb83d623c4a90b6054984c4a49e4edba5a28880e2c350c8e4a5235", + "typeString": "literal_string \"auction cannot expire after the option\"" + } + ], + "id": 1427, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2823, + 2824 + ], + "referencedDeclaration": 2824, + "src": "17527:7:4", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 1436, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "17527:104:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1437, + "nodeType": "ExpressionStatement", + "src": "17527:104:4" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1444, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "17645:39:4", + "subExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1439, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "17646:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 1441, + "indexExpression": { + "argumentTypes": null, + "id": 1440, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1380, + "src": "17654:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "17646:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 1442, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "flags", + "nodeType": "MemberAccess", + "referencedDeclaration": 345, + "src": "17646:23:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BoolFlags_$322_storage", + "typeString": "struct SmartPiggies.BoolFlags storage ref" + } + }, + "id": 1443, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "hasBeenCleared", + "nodeType": "MemberAccess", + "referencedDeclaration": 321, + "src": "17646:38:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "6f7074696f6e2063616e6e6f742068617665206265656e20636c6561726564", + "id": 1445, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "17686:33:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_27073f39ec9976896b20149ca5e815b73111f8a75112e9c5d8b9ee35967e8927", + "typeString": "literal_string \"option cannot have been cleared\"" + }, + "value": "option cannot have been cleared" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_27073f39ec9976896b20149ca5e815b73111f8a75112e9c5d8b9ee35967e8927", + "typeString": "literal_string \"option cannot have been cleared\"" + } + ], + "id": 1438, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2823, + 2824 + ], + "referencedDeclaration": 2824, + "src": "17637:7:4", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 1446, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "17637:83:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1447, + "nodeType": "ExpressionStatement", + "src": "17637:83:4" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1453, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "17734:33:4", + "subExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1449, + "name": "auctions", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 369, + "src": "17735:8:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_DetailAuction_$339_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.DetailAuction storage ref)" + } + }, + "id": 1451, + "indexExpression": { + "argumentTypes": null, + "id": 1450, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1380, + "src": "17744:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "17735:18:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAuction_$339_storage", + "typeString": "struct SmartPiggies.DetailAuction storage ref" + } + }, + "id": 1452, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "auctionActive", + "nodeType": "MemberAccess", + "referencedDeclaration": 336, + "src": "17735:32:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "61756374696f6e2063616e6e6f7420616c72656164792062652072756e6e696e67", + "id": 1454, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "17769:35:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_75e7be135ed90dd1a70249ea02e2cf969271d5c8707ac2d8fa92cff139cff01a", + "typeString": "literal_string \"auction cannot already be running\"" + }, + "value": "auction cannot already be running" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_75e7be135ed90dd1a70249ea02e2cf969271d5c8707ac2d8fa92cff139cff01a", + "typeString": "literal_string \"auction cannot already be running\"" + } + ], + "id": 1448, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2823, + 2824 + ], + "referencedDeclaration": 2824, + "src": "17726:7:4", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 1455, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "17726:79:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1456, + "nodeType": "ExpressionStatement", + "src": "17726:79:4" + }, + { + "condition": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1457, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "18153:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 1459, + "indexExpression": { + "argumentTypes": null, + "id": 1458, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1380, + "src": "18161:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "18153:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 1460, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "flags", + "nodeType": "MemberAccess", + "referencedDeclaration": 345, + "src": "18153:23:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BoolFlags_$322_storage", + "typeString": "struct SmartPiggies.BoolFlags storage ref" + } + }, + "id": 1461, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "isRequest", + "nodeType": "MemberAccess", + "referencedDeclaration": 315, + "src": "18153:33:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 1484, + "nodeType": "IfStatement", + "src": "18149:359:4", + "trueBody": { + "id": 1483, + "nodeType": "Block", + "src": "18188:320:4", + "statements": [ + { + "assignments": [ + 1463 + ], + "declarations": [ + { + "constant": false, + "id": 1463, + "name": "success", + "nodeType": "VariableDeclaration", + "scope": 1483, + "src": "18196:12:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 1462, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "18196:4:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1477, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1465, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "18243:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 1467, + "indexExpression": { + "argumentTypes": null, + "id": 1466, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1380, + "src": "18251:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "18243:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 1468, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "addresses", + "nodeType": "MemberAccess", + "referencedDeclaration": 341, + "src": "18243:27:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAddresses_$298_storage", + "typeString": "struct SmartPiggies.DetailAddresses storage ref" + } + }, + "id": 1469, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "premiumERC", + "nodeType": "MemberAccess", + "referencedDeclaration": 293, + "src": "18243:38:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1470, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2820, + "src": "18291:3:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1471, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "18291:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1473, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2843, + "src": "18319:4:4", + "typeDescriptions": { + "typeIdentifier": "t_contract$_SmartPiggies_$2805", + "typeString": "contract SmartPiggies" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_SmartPiggies_$2805", + "typeString": "contract SmartPiggies" + } + ], + "id": 1472, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "18311:7:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 1474, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "18311:13:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1475, + "name": "_reservePrice", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1384, + "src": "18334:13:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1464, + "name": "attemptPaymentTransfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 537, + "src": "18211:22:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,address,address,uint256) returns (bool)" + } + }, + "id": 1476, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "18211:230:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "18196:245:4" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1479, + "name": "success", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1463, + "src": "18457:7:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "7472616e7366657246726f6d20646964206e6f742072657475726e2074727565", + "id": 1480, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "18466:34:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_35b8e48e80d109dedabaecc36aa806b1e346b95a74c9bec1da46923b6d341700", + "typeString": "literal_string \"transferFrom did not return true\"" + }, + "value": "transferFrom did not return true" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_35b8e48e80d109dedabaecc36aa806b1e346b95a74c9bec1da46923b6d341700", + "typeString": "literal_string \"transferFrom did not return true\"" + } + ], + "id": 1478, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2823, + 2824 + ], + "referencedDeclaration": 2824, + "src": "18449:7:4", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 1481, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "18449:52:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1482, + "nodeType": "ExpressionStatement", + "src": "18449:52:4" + } + ] + } + }, + { + "expression": { + "argumentTypes": null, + "id": 1491, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1485, + "name": "auctions", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 369, + "src": "18607:8:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_DetailAuction_$339_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.DetailAuction storage ref)" + } + }, + "id": 1487, + "indexExpression": { + "argumentTypes": null, + "id": 1486, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1380, + "src": "18616:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "18607:18:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAuction_$339_storage", + "typeString": "struct SmartPiggies.DetailAuction storage ref" + } + }, + "id": 1488, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "startBlock", + "nodeType": "MemberAccess", + "referencedDeclaration": 324, + "src": "18607:29:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1489, + "name": "block", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2810, + "src": "18639:5:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_block", + "typeString": "block" + } + }, + "id": 1490, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "number", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "18639:12:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "18607:44:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1492, + "nodeType": "ExpressionStatement", + "src": "18607:44:4" + }, + { + "expression": { + "argumentTypes": null, + "id": 1498, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1493, + "name": "auctions", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 369, + "src": "18657:8:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_DetailAuction_$339_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.DetailAuction storage ref)" + } + }, + "id": 1495, + "indexExpression": { + "argumentTypes": null, + "id": 1494, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1380, + "src": "18666:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "18657:18:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAuction_$339_storage", + "typeString": "struct SmartPiggies.DetailAuction storage ref" + } + }, + "id": 1496, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "expiryBlock", + "nodeType": "MemberAccess", + "referencedDeclaration": 326, + "src": "18657:30:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 1497, + "name": "_auctionExpiry", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1396, + "src": "18690:14:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "18657:47:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1499, + "nodeType": "ExpressionStatement", + "src": "18657:47:4" + }, + { + "expression": { + "argumentTypes": null, + "id": 1505, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1500, + "name": "auctions", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 369, + "src": "18710:8:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_DetailAuction_$339_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.DetailAuction storage ref)" + } + }, + "id": 1502, + "indexExpression": { + "argumentTypes": null, + "id": 1501, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1380, + "src": "18719:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "18710:18:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAuction_$339_storage", + "typeString": "struct SmartPiggies.DetailAuction storage ref" + } + }, + "id": 1503, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "startPrice", + "nodeType": "MemberAccess", + "referencedDeclaration": 328, + "src": "18710:29:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 1504, + "name": "_startPrice", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1382, + "src": "18742:11:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "18710:43:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1506, + "nodeType": "ExpressionStatement", + "src": "18710:43:4" + }, + { + "expression": { + "argumentTypes": null, + "id": 1512, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1507, + "name": "auctions", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 369, + "src": "18759:8:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_DetailAuction_$339_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.DetailAuction storage ref)" + } + }, + "id": 1509, + "indexExpression": { + "argumentTypes": null, + "id": 1508, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1380, + "src": "18768:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "18759:18:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAuction_$339_storage", + "typeString": "struct SmartPiggies.DetailAuction storage ref" + } + }, + "id": 1510, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "reservePrice", + "nodeType": "MemberAccess", + "referencedDeclaration": 330, + "src": "18759:31:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 1511, + "name": "_reservePrice", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1384, + "src": "18793:13:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "18759:47:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1513, + "nodeType": "ExpressionStatement", + "src": "18759:47:4" + }, + { + "expression": { + "argumentTypes": null, + "id": 1519, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1514, + "name": "auctions", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 369, + "src": "18812:8:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_DetailAuction_$339_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.DetailAuction storage ref)" + } + }, + "id": 1516, + "indexExpression": { + "argumentTypes": null, + "id": 1515, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1380, + "src": "18821:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "18812:18:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAuction_$339_storage", + "typeString": "struct SmartPiggies.DetailAuction storage ref" + } + }, + "id": 1517, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "timeStep", + "nodeType": "MemberAccess", + "referencedDeclaration": 332, + "src": "18812:27:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 1518, + "name": "_timeStep", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1388, + "src": "18842:9:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "18812:39:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1520, + "nodeType": "ExpressionStatement", + "src": "18812:39:4" + }, + { + "expression": { + "argumentTypes": null, + "id": 1526, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1521, + "name": "auctions", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 369, + "src": "18857:8:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_DetailAuction_$339_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.DetailAuction storage ref)" + } + }, + "id": 1523, + "indexExpression": { + "argumentTypes": null, + "id": 1522, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1380, + "src": "18866:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "18857:18:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAuction_$339_storage", + "typeString": "struct SmartPiggies.DetailAuction storage ref" + } + }, + "id": 1524, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "priceStep", + "nodeType": "MemberAccess", + "referencedDeclaration": 334, + "src": "18857:28:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 1525, + "name": "_priceStep", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1390, + "src": "18888:10:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "18857:41:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1527, + "nodeType": "ExpressionStatement", + "src": "18857:41:4" + }, + { + "expression": { + "argumentTypes": null, + "id": 1533, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1528, + "name": "auctions", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 369, + "src": "18904:8:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_DetailAuction_$339_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.DetailAuction storage ref)" + } + }, + "id": 1530, + "indexExpression": { + "argumentTypes": null, + "id": 1529, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1380, + "src": "18913:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "18904:18:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAuction_$339_storage", + "typeString": "struct SmartPiggies.DetailAuction storage ref" + } + }, + "id": 1531, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "auctionActive", + "nodeType": "MemberAccess", + "referencedDeclaration": 336, + "src": "18904:32:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 1532, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "18939:4:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "src": "18904:39:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1534, + "nodeType": "ExpressionStatement", + "src": "18904:39:4" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1536, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2820, + "src": "18975:3:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1537, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "18975:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 1538, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1380, + "src": "18993:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 1539, + "name": "_startPrice", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1382, + "src": "19009:11:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 1540, + "name": "_reservePrice", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1384, + "src": "19028:13:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 1541, + "name": "_auctionLength", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1386, + "src": "19049:14:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 1542, + "name": "_timeStep", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1388, + "src": "19071:9:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 1543, + "name": "_priceStep", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1390, + "src": "19088:10:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1535, + "name": "StartAuction", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 439, + "src": "18955:12:4", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256,uint256,uint256,uint256,uint256,uint256)" + } + }, + "id": 1544, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "18955:149:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1545, + "nodeType": "EmitStatement", + "src": "18950:154:4" + }, + { + "expression": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 1546, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "19118:4:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 1394, + "id": 1547, + "nodeType": "Return", + "src": "19111:11:4" + } + ] + }, + "documentation": null, + "id": 1549, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "startAuction", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1391, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1380, + "name": "_tokenId", + "nodeType": "VariableDeclaration", + "scope": 1549, + "src": "17079:16:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1379, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "17079:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1382, + "name": "_startPrice", + "nodeType": "VariableDeclaration", + "scope": 1549, + "src": "17101:19:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1381, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "17101:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1384, + "name": "_reservePrice", + "nodeType": "VariableDeclaration", + "scope": 1549, + "src": "17126:21:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1383, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "17126:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1386, + "name": "_auctionLength", + "nodeType": "VariableDeclaration", + "scope": 1549, + "src": "17153:22:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1385, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "17153:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1388, + "name": "_timeStep", + "nodeType": "VariableDeclaration", + "scope": 1549, + "src": "17181:17:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1387, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "17181:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1390, + "name": "_priceStep", + "nodeType": "VariableDeclaration", + "scope": 1549, + "src": "17204:18:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1389, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "17204:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "17073:153:4" + }, + "returnParameters": { + "id": 1394, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1393, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 1549, + "src": "17253:4:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 1392, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "17253:4:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "17252:6:4" + }, + "scope": 2805, + "src": "17052:2075:4", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "external" + }, + { + "body": { + "id": 1629, + "nodeType": "Block", + "src": "19201:936:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 1564, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1557, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "19215:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 1559, + "indexExpression": { + "argumentTypes": null, + "id": 1558, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1551, + "src": "19223:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "19215:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 1560, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "addresses", + "nodeType": "MemberAccess", + "referencedDeclaration": 341, + "src": "19215:27:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAddresses_$298_storage", + "typeString": "struct SmartPiggies.DetailAddresses storage ref" + } + }, + "id": 1561, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "holder", + "nodeType": "MemberAccess", + "referencedDeclaration": 289, + "src": "19215:34:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1562, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2820, + "src": "19253:3:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1563, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "19253:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "19215:48:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "796f75206d757374206f776e206120746f6b656e20746f2061756374696f6e206974", + "id": 1565, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "19265:36:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_347b553f3479dd6198fdca821cd75f6d27d0336c41b4547759f0a4c4f21c9a92", + "typeString": "literal_string \"you must own a token to auction it\"" + }, + "value": "you must own a token to auction it" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_347b553f3479dd6198fdca821cd75f6d27d0336c41b4547759f0a4c4f21c9a92", + "typeString": "literal_string \"you must own a token to auction it\"" + } + ], + "id": 1556, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2823, + 2824 + ], + "referencedDeclaration": 2824, + "src": "19207:7:4", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 1566, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "19207:95:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1567, + "nodeType": "ExpressionStatement", + "src": "19207:95:4" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1569, + "name": "auctions", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 369, + "src": "19316:8:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_DetailAuction_$339_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.DetailAuction storage ref)" + } + }, + "id": 1571, + "indexExpression": { + "argumentTypes": null, + "id": 1570, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1551, + "src": "19325:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "19316:18:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAuction_$339_storage", + "typeString": "struct SmartPiggies.DetailAuction storage ref" + } + }, + "id": 1572, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "auctionActive", + "nodeType": "MemberAccess", + "referencedDeclaration": 336, + "src": "19316:32:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "61756374696f6e206d7573742062652061637469766520746f2063616e63656c206974", + "id": 1573, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "19350:37:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_d628b799737a92349c6ea16e9a2c5925f97e27b7f8836620f38d9e95dcb51daa", + "typeString": "literal_string \"auction must be active to cancel it\"" + }, + "value": "auction must be active to cancel it" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_d628b799737a92349c6ea16e9a2c5925f97e27b7f8836620f38d9e95dcb51daa", + "typeString": "literal_string \"auction must be active to cancel it\"" + } + ], + "id": 1568, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2823, + 2824 + ], + "referencedDeclaration": 2824, + "src": "19308:7:4", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 1574, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "19308:80:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1575, + "nodeType": "ExpressionStatement", + "src": "19308:80:4" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1581, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "19402:37:4", + "subExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1577, + "name": "auctions", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 369, + "src": "19403:8:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_DetailAuction_$339_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.DetailAuction storage ref)" + } + }, + "id": 1579, + "indexExpression": { + "argumentTypes": null, + "id": 1578, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1551, + "src": "19412:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "19403:18:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAuction_$339_storage", + "typeString": "struct SmartPiggies.DetailAuction storage ref" + } + }, + "id": 1580, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "satisfyInProgress", + "nodeType": "MemberAccess", + "referencedDeclaration": 338, + "src": "19403:36:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "61756374696f6e2063616e6e6f7420626520696e207468652070726f63657373206f66206265696e6720736174697366696564", + "id": 1582, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "19441:53:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_2e85065a51dd5ddc3b550cdcec6a89d37b41e2021606af9209014f7e9b3e3717", + "typeString": "literal_string \"auction cannot be in the process of being satisfied\"" + }, + "value": "auction cannot be in the process of being satisfied" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_2e85065a51dd5ddc3b550cdcec6a89d37b41e2021606af9209014f7e9b3e3717", + "typeString": "literal_string \"auction cannot be in the process of being satisfied\"" + } + ], + "id": 1576, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2823, + 2824 + ], + "referencedDeclaration": 2824, + "src": "19394:7:4", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 1583, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "19394:101:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1584, + "nodeType": "ExpressionStatement", + "src": "19394:101:4" + }, + { + "condition": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1585, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "19557:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 1587, + "indexExpression": { + "argumentTypes": null, + "id": 1586, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1551, + "src": "19565:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "19557:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 1588, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "flags", + "nodeType": "MemberAccess", + "referencedDeclaration": 345, + "src": "19557:23:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BoolFlags_$322_storage", + "typeString": "struct SmartPiggies.BoolFlags storage ref" + } + }, + "id": 1589, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "isRequest", + "nodeType": "MemberAccess", + "referencedDeclaration": 315, + "src": "19557:33:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 1611, + "nodeType": "IfStatement", + "src": "19553:449:4", + "trueBody": { + "id": 1610, + "nodeType": "Block", + "src": "19592:410:4", + "statements": [ + { + "assignments": [ + 1591 + ], + "declarations": [ + { + "constant": false, + "id": 1591, + "name": "_premiumToReturn", + "nodeType": "VariableDeclaration", + "scope": 1610, + "src": "19642:24:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1590, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "19642:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1596, + "initialValue": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1592, + "name": "auctions", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 369, + "src": "19669:8:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_DetailAuction_$339_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.DetailAuction storage ref)" + } + }, + "id": 1594, + "indexExpression": { + "argumentTypes": null, + "id": 1593, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1551, + "src": "19678:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "19669:18:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAuction_$339_storage", + "typeString": "struct SmartPiggies.DetailAuction storage ref" + } + }, + "id": 1595, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "reservePrice", + "nodeType": "MemberAccess", + "referencedDeclaration": 330, + "src": "19669:31:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "19642:58:4" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1605, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2820, + "src": "19966:3:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1606, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "19966:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 1607, + "name": "_premiumToReturn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1591, + "src": "19978:16:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1598, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "19917:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 1600, + "indexExpression": { + "argumentTypes": null, + "id": 1599, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1551, + "src": "19925:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "19917:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 1601, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "addresses", + "nodeType": "MemberAccess", + "referencedDeclaration": 341, + "src": "19917:27:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAddresses_$298_storage", + "typeString": "struct SmartPiggies.DetailAddresses storage ref" + } + }, + "id": 1602, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "premiumERC", + "nodeType": "MemberAccess", + "referencedDeclaration": 293, + "src": "19917:38:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1597, + "name": "PaymentToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 274, + "src": "19904:12:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_PaymentToken_$274_$", + "typeString": "type(contract PaymentToken)" + } + }, + "id": 1603, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "19904:52:4", + "typeDescriptions": { + "typeIdentifier": "t_contract$_PaymentToken_$274", + "typeString": "contract PaymentToken" + } + }, + "id": 1604, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "transfer", + "nodeType": "MemberAccess", + "referencedDeclaration": 268, + "src": "19904:61:4", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,uint256) external returns (bool)" + } + }, + "id": 1608, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "19904:91:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1609, + "nodeType": "ExpressionStatement", + "src": "19904:91:4" + } + ] + } + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1613, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1551, + "src": "20028:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1612, + "name": "_clearAuctionDetails", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1378, + "src": "20007:20:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$__$", + "typeString": "function (uint256)" + } + }, + "id": 1614, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "20007:30:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1615, + "nodeType": "ExpressionStatement", + "src": "20007:30:4" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1617, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2820, + "src": "20059:3:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1618, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "20059:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 1619, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1551, + "src": "20071:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1620, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "20081:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 1622, + "indexExpression": { + "argumentTypes": null, + "id": 1621, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1551, + "src": "20089:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "20081:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 1623, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "flags", + "nodeType": "MemberAccess", + "referencedDeclaration": 345, + "src": "20081:23:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BoolFlags_$322_storage", + "typeString": "struct SmartPiggies.BoolFlags storage ref" + } + }, + "id": 1624, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "isRequest", + "nodeType": "MemberAccess", + "referencedDeclaration": 315, + "src": "20081:33:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 1616, + "name": "EndAuction", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 447, + "src": "20048:10:4", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_bool_$returns$__$", + "typeString": "function (address,uint256,bool)" + } + }, + "id": 1625, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "20048:67:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1626, + "nodeType": "EmitStatement", + "src": "20043:72:4" + }, + { + "expression": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 1627, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "20128:4:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 1555, + "id": 1628, + "nodeType": "Return", + "src": "20121:11:4" + } + ] + }, + "documentation": null, + "id": 1630, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "endAuction", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1552, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1551, + "name": "_tokenId", + "nodeType": "VariableDeclaration", + "scope": 1630, + "src": "19151:16:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1550, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "19151:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "19150:18:4" + }, + "returnParameters": { + "id": 1555, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1554, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 1630, + "src": "19193:4:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 1553, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "19193:4:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "19192:6:4" + }, + "scope": 2805, + "src": "19131:1006:4", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 1687, + "nodeType": "Block", + "src": "20396:578:4", + "statements": [ + { + "assignments": [ + 1638 + ], + "declarations": [ + { + "constant": false, + "id": 1638, + "name": "_pStart", + "nodeType": "VariableDeclaration", + "scope": 1687, + "src": "20578:15:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1637, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "20578:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1643, + "initialValue": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1639, + "name": "auctions", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 369, + "src": "20596:8:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_DetailAuction_$339_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.DetailAuction storage ref)" + } + }, + "id": 1641, + "indexExpression": { + "argumentTypes": null, + "id": 1640, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1632, + "src": "20605:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "20596:18:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAuction_$339_storage", + "typeString": "struct SmartPiggies.DetailAuction storage ref" + } + }, + "id": 1642, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "startPrice", + "nodeType": "MemberAccess", + "referencedDeclaration": 328, + "src": "20596:29:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "20578:47:4" + }, + { + "assignments": [ + 1645 + ], + "declarations": [ + { + "constant": false, + "id": 1645, + "name": "_pDelta", + "nodeType": "VariableDeclaration", + "scope": 1687, + "src": "20699:15:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1644, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "20699:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1667, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1662, + "name": "auctions", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 369, + "src": "20805:8:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_DetailAuction_$339_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.DetailAuction storage ref)" + } + }, + "id": 1664, + "indexExpression": { + "argumentTypes": null, + "id": 1663, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1632, + "src": "20814:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "20805:18:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAuction_$339_storage", + "typeString": "struct SmartPiggies.DetailAuction storage ref" + } + }, + "id": 1665, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "timeStep", + "nodeType": "MemberAccess", + "referencedDeclaration": 332, + "src": "20805:27:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1656, + "name": "auctions", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 369, + "src": "20771:8:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_DetailAuction_$339_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.DetailAuction storage ref)" + } + }, + "id": 1658, + "indexExpression": { + "argumentTypes": null, + "id": 1657, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1632, + "src": "20780:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "20771:18:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAuction_$339_storage", + "typeString": "struct SmartPiggies.DetailAuction storage ref" + } + }, + "id": 1659, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "priceStep", + "nodeType": "MemberAccess", + "referencedDeclaration": 334, + "src": "20771:28:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1650, + "name": "auctions", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 369, + "src": "20736:8:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_DetailAuction_$339_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.DetailAuction storage ref)" + } + }, + "id": 1652, + "indexExpression": { + "argumentTypes": null, + "id": 1651, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1632, + "src": "20745:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "20736:18:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAuction_$339_storage", + "typeString": "struct SmartPiggies.DetailAuction storage ref" + } + }, + "id": 1653, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "startBlock", + "nodeType": "MemberAccess", + "referencedDeclaration": 324, + "src": "20736:29:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1646, + "name": "block", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2810, + "src": "20718:5:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_block", + "typeString": "block" + } + }, + "id": 1647, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "number", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "20718:12:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 1648, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "20717:14:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1649, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sub", + "nodeType": "MemberAccess", + "referencedDeclaration": 200, + "src": "20717:18:4", + "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": 1654, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "20717:49:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1655, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "mul", + "nodeType": "MemberAccess", + "referencedDeclaration": 152, + "src": "20717:53:4", + "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": 1660, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "20717:83:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1661, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "div", + "nodeType": "MemberAccess", + "referencedDeclaration": 176, + "src": "20717:87:4", + "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": 1666, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "20717:116:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "20699:134:4" + }, + { + "condition": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1668, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "20843:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 1670, + "indexExpression": { + "argumentTypes": null, + "id": 1669, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1632, + "src": "20851:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "20843:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 1671, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "flags", + "nodeType": "MemberAccess", + "referencedDeclaration": 345, + "src": "20843:23:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BoolFlags_$322_storage", + "typeString": "struct SmartPiggies.BoolFlags storage ref" + } + }, + "id": 1672, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "isRequest", + "nodeType": "MemberAccess", + "referencedDeclaration": 315, + "src": "20843:33:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 1685, + "nodeType": "Block", + "src": "20926:44:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1681, + "name": "_pDelta", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1645, + "src": "20954:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 1679, + "name": "_pStart", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1638, + "src": "20942:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1680, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sub", + "nodeType": "MemberAccess", + "referencedDeclaration": 200, + "src": "20942:11:4", + "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": 1682, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "20942:20:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 1683, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "20941:22:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 1636, + "id": 1684, + "nodeType": "Return", + "src": "20934:29:4" + } + ] + }, + "id": 1686, + "nodeType": "IfStatement", + "src": "20839:131:4", + "trueBody": { + "id": 1678, + "nodeType": "Block", + "src": "20878:42:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1675, + "name": "_pDelta", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1645, + "src": "20905:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 1673, + "name": "_pStart", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1638, + "src": "20893:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1674, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 224, + "src": "20893:11:4", + "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": 1676, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "20893:20:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 1636, + "id": 1677, + "nodeType": "Return", + "src": "20886:27:4" + } + ] + } + } + ] + }, + "documentation": null, + "id": 1688, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getAuctionPrice", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1633, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1632, + "name": "_tokenId", + "nodeType": "VariableDeclaration", + "scope": 1688, + "src": "20332:16:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1631, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "20332:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "20331:18:4" + }, + "returnParameters": { + "id": 1636, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1635, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 1688, + "src": "20385:7:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1634, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "20385:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "20384:9:4" + }, + "scope": 2805, + "src": "20307:667:4", + "stateMutability": "view", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 1982, + "nodeType": "Block", + "src": "21106:3569:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1700, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "21120:37:4", + "subExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1696, + "name": "auctions", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 369, + "src": "21121:8:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_DetailAuction_$339_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.DetailAuction storage ref)" + } + }, + "id": 1698, + "indexExpression": { + "argumentTypes": null, + "id": 1697, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1690, + "src": "21130:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "21121:18:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAuction_$339_storage", + "typeString": "struct SmartPiggies.DetailAuction storage ref" + } + }, + "id": 1699, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "satisfyInProgress", + "nodeType": "MemberAccess", + "referencedDeclaration": 338, + "src": "21121:36:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "63616e6e6f74207265656e74657220746869732066756e6374696f6e207768696c6520697420697320696e2070726f6772657373", + "id": 1701, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "21159:54:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_6a34dcd3ede81bbd1e22bc4d5fb3a35a06c8f704b873ce69d53ec62180454676", + "typeString": "literal_string \"cannot reenter this function while it is in progress\"" + }, + "value": "cannot reenter this function while it is in progress" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_6a34dcd3ede81bbd1e22bc4d5fb3a35a06c8f704b873ce69d53ec62180454676", + "typeString": "literal_string \"cannot reenter this function while it is in progress\"" + } + ], + "id": 1695, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2823, + 2824 + ], + "referencedDeclaration": 2824, + "src": "21112:7:4", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 1702, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "21112:102:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1703, + "nodeType": "ExpressionStatement", + "src": "21112:102:4" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 1712, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1705, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "21228:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 1707, + "indexExpression": { + "argumentTypes": null, + "id": 1706, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1690, + "src": "21236:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "21228:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 1708, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "addresses", + "nodeType": "MemberAccess", + "referencedDeclaration": 341, + "src": "21228:27:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAddresses_$298_storage", + "typeString": "struct SmartPiggies.DetailAddresses storage ref" + } + }, + "id": 1709, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "holder", + "nodeType": "MemberAccess", + "referencedDeclaration": 289, + "src": "21228:34:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1710, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2820, + "src": "21266:3:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1711, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "21266:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "21228:48:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "63616e6e6f74207361746973667920796f7572206f776e2061756374696f6e3b2075736520656e6441756374696f6e20696e7374656164", + "id": 1713, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "21278:57:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_112f3e3ad5bb7a63f742b0817bbe32876de85d03ad362398959d793954c3e061", + "typeString": "literal_string \"cannot satisfy your own auction; use endAuction instead\"" + }, + "value": "cannot satisfy your own auction; use endAuction instead" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_112f3e3ad5bb7a63f742b0817bbe32876de85d03ad362398959d793954c3e061", + "typeString": "literal_string \"cannot satisfy your own auction; use endAuction instead\"" + } + ], + "id": 1704, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2823, + 2824 + ], + "referencedDeclaration": 2824, + "src": "21220:7:4", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 1714, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "21220:116:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1715, + "nodeType": "ExpressionStatement", + "src": "21220:116:4" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1717, + "name": "auctions", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 369, + "src": "21350:8:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_DetailAuction_$339_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.DetailAuction storage ref)" + } + }, + "id": 1719, + "indexExpression": { + "argumentTypes": null, + "id": 1718, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1690, + "src": "21359:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "21350:18:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAuction_$339_storage", + "typeString": "struct SmartPiggies.DetailAuction storage ref" + } + }, + "id": 1720, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "auctionActive", + "nodeType": "MemberAccess", + "referencedDeclaration": 336, + "src": "21350:32:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "61756374696f6e206d7573742062652061637469766520746f2073617469736679206974", + "id": 1721, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "21384:38:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_47fbac54a3159745f1291bcc5f2bf48b19397de937c242968b64ec1bba31c110", + "typeString": "literal_string \"auction must be active to satisfy it\"" + }, + "value": "auction must be active to satisfy it" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_47fbac54a3159745f1291bcc5f2bf48b19397de937c242968b64ec1bba31c110", + "typeString": "literal_string \"auction must be active to satisfy it\"" + } + ], + "id": 1716, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2823, + 2824 + ], + "referencedDeclaration": 2824, + "src": "21342:7:4", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 1722, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "21342:81:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1723, + "nodeType": "ExpressionStatement", + "src": "21342:81:4" + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1730, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1724, + "name": "auctions", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 369, + "src": "21512:8:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_DetailAuction_$339_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.DetailAuction storage ref)" + } + }, + "id": 1726, + "indexExpression": { + "argumentTypes": null, + "id": 1725, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1690, + "src": "21521:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "21512:18:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAuction_$339_storage", + "typeString": "struct SmartPiggies.DetailAuction storage ref" + } + }, + "id": 1727, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "expiryBlock", + "nodeType": "MemberAccess", + "referencedDeclaration": 326, + "src": "21512:30:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1728, + "name": "block", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2810, + "src": "21545:5:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_block", + "typeString": "block" + } + }, + "id": 1729, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "number", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "21545:12:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "21512:45:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 1738, + "nodeType": "IfStatement", + "src": "21508:206:4", + "trueBody": { + "id": 1737, + "nodeType": "Block", + "src": "21559:155:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1732, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1690, + "src": "21678:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1731, + "name": "_clearAuctionDetails", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1378, + "src": "21657:20:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$__$", + "typeString": "function (uint256)" + } + }, + "id": 1733, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "21657:30:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1734, + "nodeType": "ExpressionStatement", + "src": "21657:30:4" + }, + { + "expression": { + "argumentTypes": null, + "hexValue": "66616c7365", + "id": 1735, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "21702:5:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "functionReturnParameters": 1694, + "id": 1736, + "nodeType": "Return", + "src": "21695:12:4" + } + ] + } + }, + { + "assignments": [ + 1740 + ], + "declarations": [ + { + "constant": false, + "id": 1740, + "name": "_auctionPremium", + "nodeType": "VariableDeclaration", + "scope": 1982, + "src": "21860:23:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1739, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "21860:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1744, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1742, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1690, + "src": "21902:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1741, + "name": "getAuctionPrice", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1688, + "src": "21886:15:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256) view returns (uint256)" + } + }, + "id": 1743, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "21886:25:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "21860:51:4" + }, + { + "expression": { + "argumentTypes": null, + "id": 1750, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1745, + "name": "auctions", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 369, + "src": "21935:8:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_DetailAuction_$339_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.DetailAuction storage ref)" + } + }, + "id": 1747, + "indexExpression": { + "argumentTypes": null, + "id": 1746, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1690, + "src": "21944:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "21935:18:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAuction_$339_storage", + "typeString": "struct SmartPiggies.DetailAuction storage ref" + } + }, + "id": 1748, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "satisfyInProgress", + "nodeType": "MemberAccess", + "referencedDeclaration": 338, + "src": "21935:36:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 1749, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "21974:4:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "src": "21935:43:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1751, + "nodeType": "ExpressionStatement", + "src": "21935:43:4" + }, + { + "condition": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1752, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "21988:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 1754, + "indexExpression": { + "argumentTypes": null, + "id": 1753, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1690, + "src": "21996:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "21988:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 1755, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "flags", + "nodeType": "MemberAccess", + "referencedDeclaration": 345, + "src": "21988:23:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BoolFlags_$322_storage", + "typeString": "struct SmartPiggies.BoolFlags storage ref" + } + }, + "id": 1756, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "isRequest", + "nodeType": "MemberAccess", + "referencedDeclaration": 315, + "src": "21988:33:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 1967, + "nodeType": "Block", + "src": "23656:866:4", + "statements": [ + { + "assignments": [ + 1898 + ], + "declarations": [ + { + "constant": false, + "id": 1898, + "name": "_adjPremium", + "nodeType": "VariableDeclaration", + "scope": 1967, + "src": "23726:19:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1897, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "23726:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1900, + "initialValue": { + "argumentTypes": null, + "id": 1899, + "name": "_auctionPremium", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1740, + "src": "23748:15:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "23726:37:4" + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1906, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1901, + "name": "_adjPremium", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1898, + "src": "23775:11:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1902, + "name": "auctions", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 369, + "src": "23789:8:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_DetailAuction_$339_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.DetailAuction storage ref)" + } + }, + "id": 1904, + "indexExpression": { + "argumentTypes": null, + "id": 1903, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1690, + "src": "23798:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "23789:18:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAuction_$339_storage", + "typeString": "struct SmartPiggies.DetailAuction storage ref" + } + }, + "id": 1905, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "reservePrice", + "nodeType": "MemberAccess", + "referencedDeclaration": 330, + "src": "23789:31:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "23775:45:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 1915, + "nodeType": "IfStatement", + "src": "23771:115:4", + "trueBody": { + "id": 1914, + "nodeType": "Block", + "src": "23822:64:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 1912, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 1907, + "name": "_adjPremium", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1898, + "src": "23832:11:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1908, + "name": "auctions", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 369, + "src": "23846:8:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_DetailAuction_$339_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.DetailAuction storage ref)" + } + }, + "id": 1910, + "indexExpression": { + "argumentTypes": null, + "id": 1909, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1690, + "src": "23855:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "23846:18:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAuction_$339_storage", + "typeString": "struct SmartPiggies.DetailAuction storage ref" + } + }, + "id": 1911, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "reservePrice", + "nodeType": "MemberAccess", + "referencedDeclaration": 330, + "src": "23846:31:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "23832:45:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1913, + "nodeType": "ExpressionStatement", + "src": "23832:45:4" + } + ] + } + }, + { + "assignments": [ + 1917 + ], + "declarations": [ + { + "constant": false, + "id": 1917, + "name": "success", + "nodeType": "VariableDeclaration", + "scope": 1967, + "src": "23937:12:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 1916, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "23937:4:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1933, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1919, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "23984:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 1921, + "indexExpression": { + "argumentTypes": null, + "id": 1920, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1690, + "src": "23992:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "23984:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 1922, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "addresses", + "nodeType": "MemberAccess", + "referencedDeclaration": 341, + "src": "23984:27:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAddresses_$298_storage", + "typeString": "struct SmartPiggies.DetailAddresses storage ref" + } + }, + "id": 1923, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "premiumERC", + "nodeType": "MemberAccess", + "referencedDeclaration": 293, + "src": "23984:38:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1924, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2820, + "src": "24032:3:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1925, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "24032:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1926, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "24052:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 1928, + "indexExpression": { + "argumentTypes": null, + "id": 1927, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1690, + "src": "24060:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "24052:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 1929, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "addresses", + "nodeType": "MemberAccess", + "referencedDeclaration": 341, + "src": "24052:27:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAddresses_$298_storage", + "typeString": "struct SmartPiggies.DetailAddresses storage ref" + } + }, + "id": 1930, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "holder", + "nodeType": "MemberAccess", + "referencedDeclaration": 289, + "src": "24052:34:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1931, + "name": "_adjPremium", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1898, + "src": "24140:11:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1918, + "name": "attemptPaymentTransfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 537, + "src": "23952:22:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,address,address,uint256) returns (bool)" + } + }, + "id": 1932, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "23952:207:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "23937:222:4" + }, + { + "condition": { + "argumentTypes": null, + "id": 1935, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "24171:8:4", + "subExpression": { + "argumentTypes": null, + "id": 1934, + "name": "success", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1917, + "src": "24172:7:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 1946, + "nodeType": "IfStatement", + "src": "24167:99:4", + "trueBody": { + "id": 1945, + "nodeType": "Block", + "src": "24181:85:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 1941, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1936, + "name": "auctions", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 369, + "src": "24191:8:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_DetailAuction_$339_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.DetailAuction storage ref)" + } + }, + "id": 1938, + "indexExpression": { + "argumentTypes": null, + "id": 1937, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1690, + "src": "24200:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "24191:18:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAuction_$339_storage", + "typeString": "struct SmartPiggies.DetailAuction storage ref" + } + }, + "id": 1939, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "satisfyInProgress", + "nodeType": "MemberAccess", + "referencedDeclaration": 338, + "src": "24191:36:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "66616c7365", + "id": 1940, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "24230:5:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "src": "24191:44:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1942, + "nodeType": "ExpressionStatement", + "src": "24191:44:4" + }, + { + "expression": { + "argumentTypes": null, + "hexValue": "66616c7365", + "id": 1943, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "24252:5:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "functionReturnParameters": 1694, + "id": 1944, + "nodeType": "Return", + "src": "24245:12:4" + } + ] + } + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1948, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "24326:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 1950, + "indexExpression": { + "argumentTypes": null, + "id": 1949, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1690, + "src": "24334:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "24326:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 1951, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "addresses", + "nodeType": "MemberAccess", + "referencedDeclaration": 341, + "src": "24326:27:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAddresses_$298_storage", + "typeString": "struct SmartPiggies.DetailAddresses storage ref" + } + }, + "id": 1952, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "holder", + "nodeType": "MemberAccess", + "referencedDeclaration": 289, + "src": "24326:34:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1953, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2820, + "src": "24362:3:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1954, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "24362:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 1955, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1690, + "src": "24374:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1947, + "name": "_internalTransfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1025, + "src": "24308:17:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 1956, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "24308:75:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1957, + "nodeType": "ExpressionStatement", + "src": "24308:75:4" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1959, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2820, + "src": "24421:3:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1960, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "24421:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 1961, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1690, + "src": "24441:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 1962, + "name": "_adjPremium", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1898, + "src": "24459:11:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "hexValue": "30", + "id": 1963, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "24480:1:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + { + "argumentTypes": null, + "id": 1964, + "name": "_auctionPremium", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1740, + "src": "24491:15:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1958, + "name": "SatisfyAuction", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 459, + "src": "24397:14:4", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256,uint256,uint256,uint256)" + } + }, + "id": 1965, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "24397:117:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1966, + "nodeType": "EmitStatement", + "src": "24392:122:4" + } + ] + }, + "id": 1968, + "nodeType": "IfStatement", + "src": "21984:2538:4", + "trueBody": { + "id": 1896, + "nodeType": "Block", + "src": "22023:1627:4", + "statements": [ + { + "assignments": [ + 1758 + ], + "declarations": [ + { + "constant": false, + "id": 1758, + "name": "success", + "nodeType": "VariableDeclaration", + "scope": 1896, + "src": "22083:12:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 1757, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "22083:4:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1776, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1760, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "22130:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 1762, + "indexExpression": { + "argumentTypes": null, + "id": 1761, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1690, + "src": "22138:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "22130:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 1763, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "addresses", + "nodeType": "MemberAccess", + "referencedDeclaration": 341, + "src": "22130:27:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAddresses_$298_storage", + "typeString": "struct SmartPiggies.DetailAddresses storage ref" + } + }, + "id": 1764, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "collateralERC", + "nodeType": "MemberAccess", + "referencedDeclaration": 291, + "src": "22130:41:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1765, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2820, + "src": "22181:3:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1766, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "22181:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1768, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2843, + "src": "22209:4:4", + "typeDescriptions": { + "typeIdentifier": "t_contract$_SmartPiggies_$2805", + "typeString": "contract SmartPiggies" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_SmartPiggies_$2805", + "typeString": "contract SmartPiggies" + } + ], + "id": 1767, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "22201:7:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 1769, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "22201:13:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1770, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "22224:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 1772, + "indexExpression": { + "argumentTypes": null, + "id": 1771, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1690, + "src": "22232:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "22224:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 1773, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "uintDetails", + "nodeType": "MemberAccess", + "referencedDeclaration": 343, + "src": "22224:29:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailUints_$313_storage", + "typeString": "struct SmartPiggies.DetailUints storage ref" + } + }, + "id": 1774, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "reqCollateral", + "nodeType": "MemberAccess", + "referencedDeclaration": 310, + "src": "22224:43:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1759, + "name": "attemptPaymentTransfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 537, + "src": "22098:22:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,address,address,uint256) returns (bool)" + } + }, + "id": 1775, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "22098:177:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "22083:192:4" + }, + { + "condition": { + "argumentTypes": null, + "id": 1778, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "22287:8:4", + "subExpression": { + "argumentTypes": null, + "id": 1777, + "name": "success", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1758, + "src": "22288:7:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 1789, + "nodeType": "IfStatement", + "src": "22283:99:4", + "trueBody": { + "id": 1788, + "nodeType": "Block", + "src": "22297:85:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 1784, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1779, + "name": "auctions", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 369, + "src": "22307:8:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_DetailAuction_$339_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.DetailAuction storage ref)" + } + }, + "id": 1781, + "indexExpression": { + "argumentTypes": null, + "id": 1780, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1690, + "src": "22316:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "22307:18:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAuction_$339_storage", + "typeString": "struct SmartPiggies.DetailAuction storage ref" + } + }, + "id": 1782, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "satisfyInProgress", + "nodeType": "MemberAccess", + "referencedDeclaration": 338, + "src": "22307:36:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "66616c7365", + "id": 1783, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "22346:5:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "src": "22307:44:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1785, + "nodeType": "ExpressionStatement", + "src": "22307:44:4" + }, + { + "expression": { + "argumentTypes": null, + "hexValue": "66616c7365", + "id": 1786, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "22368:5:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "functionReturnParameters": 1694, + "id": 1787, + "nodeType": "Return", + "src": "22361:12:4" + } + ] + } + }, + { + "expression": { + "argumentTypes": null, + "id": 1800, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1790, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "22473:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 1792, + "indexExpression": { + "argumentTypes": null, + "id": 1791, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1690, + "src": "22481:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "22473:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 1793, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "uintDetails", + "nodeType": "MemberAccess", + "referencedDeclaration": 343, + "src": "22473:29:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailUints_$313_storage", + "typeString": "struct SmartPiggies.DetailUints storage ref" + } + }, + "id": 1794, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "collateral", + "nodeType": "MemberAccess", + "referencedDeclaration": 300, + "src": "22473:40:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1795, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "22516:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 1797, + "indexExpression": { + "argumentTypes": null, + "id": 1796, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1690, + "src": "22524:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "22516:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 1798, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "uintDetails", + "nodeType": "MemberAccess", + "referencedDeclaration": 343, + "src": "22516:29:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailUints_$313_storage", + "typeString": "struct SmartPiggies.DetailUints storage ref" + } + }, + "id": 1799, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "reqCollateral", + "nodeType": "MemberAccess", + "referencedDeclaration": 310, + "src": "22516:43:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "22473:86:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1801, + "nodeType": "ExpressionStatement", + "src": "22473:86:4" + }, + { + "assignments": [ + 1803 + ], + "declarations": [ + { + "constant": false, + "id": 1803, + "name": "_change", + "nodeType": "VariableDeclaration", + "scope": 1896, + "src": "22672:15:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1802, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "22672:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1805, + "initialValue": { + "argumentTypes": null, + "hexValue": "30", + "id": 1804, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "22690:1:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "22672:19:4" + }, + { + "assignments": [ + 1807 + ], + "declarations": [ + { + "constant": false, + "id": 1807, + "name": "_adjPremium", + "nodeType": "VariableDeclaration", + "scope": 1896, + "src": "22699:19:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1806, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "22699:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1809, + "initialValue": { + "argumentTypes": null, + "id": 1808, + "name": "_auctionPremium", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1740, + "src": "22721:15:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "22699:37:4" + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1815, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1810, + "name": "_adjPremium", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1807, + "src": "22748:11:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1811, + "name": "auctions", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 369, + "src": "22762:8:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_DetailAuction_$339_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.DetailAuction storage ref)" + } + }, + "id": 1813, + "indexExpression": { + "argumentTypes": null, + "id": 1812, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1690, + "src": "22771:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "22762:18:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAuction_$339_storage", + "typeString": "struct SmartPiggies.DetailAuction storage ref" + } + }, + "id": 1814, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "reservePrice", + "nodeType": "MemberAccess", + "referencedDeclaration": 330, + "src": "22762:31:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "22748:45:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 1834, + "nodeType": "Block", + "src": "22865:77:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 1832, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 1824, + "name": "_change", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1803, + "src": "22875:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1830, + "name": "_adjPremium", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1807, + "src": "22921:11:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1825, + "name": "auctions", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 369, + "src": "22885:8:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_DetailAuction_$339_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.DetailAuction storage ref)" + } + }, + "id": 1827, + "indexExpression": { + "argumentTypes": null, + "id": 1826, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1690, + "src": "22894:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "22885:18:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAuction_$339_storage", + "typeString": "struct SmartPiggies.DetailAuction storage ref" + } + }, + "id": 1828, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "reservePrice", + "nodeType": "MemberAccess", + "referencedDeclaration": 330, + "src": "22885:31:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1829, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sub", + "nodeType": "MemberAccess", + "referencedDeclaration": 200, + "src": "22885:35:4", + "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": 1831, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "22885:48:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "22875:58:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1833, + "nodeType": "ExpressionStatement", + "src": "22875:58:4" + } + ] + }, + "id": 1835, + "nodeType": "IfStatement", + "src": "22744:198:4", + "trueBody": { + "id": 1823, + "nodeType": "Block", + "src": "22795:64:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 1821, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 1816, + "name": "_adjPremium", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1807, + "src": "22805:11:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1817, + "name": "auctions", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 369, + "src": "22819:8:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_DetailAuction_$339_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.DetailAuction storage ref)" + } + }, + "id": 1819, + "indexExpression": { + "argumentTypes": null, + "id": 1818, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1690, + "src": "22828:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "22819:18:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAuction_$339_storage", + "typeString": "struct SmartPiggies.DetailAuction storage ref" + } + }, + "id": 1820, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "reservePrice", + "nodeType": "MemberAccess", + "referencedDeclaration": 330, + "src": "22819:31:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "22805:45:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1822, + "nodeType": "ExpressionStatement", + "src": "22805:45:4" + } + ] + } + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1844, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2820, + "src": "23112:3:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1845, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "23112:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 1846, + "name": "_adjPremium", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1807, + "src": "23124:11:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1837, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "23063:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 1839, + "indexExpression": { + "argumentTypes": null, + "id": 1838, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1690, + "src": "23071:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "23063:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 1840, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "addresses", + "nodeType": "MemberAccess", + "referencedDeclaration": 341, + "src": "23063:27:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAddresses_$298_storage", + "typeString": "struct SmartPiggies.DetailAddresses storage ref" + } + }, + "id": 1841, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "premiumERC", + "nodeType": "MemberAccess", + "referencedDeclaration": 293, + "src": "23063:38:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1836, + "name": "PaymentToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 274, + "src": "23050:12:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_PaymentToken_$274_$", + "typeString": "type(contract PaymentToken)" + } + }, + "id": 1842, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "23050:52:4", + "typeDescriptions": { + "typeIdentifier": "t_contract$_PaymentToken_$274", + "typeString": "contract PaymentToken" + } + }, + "id": 1843, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "transfer", + "nodeType": "MemberAccess", + "referencedDeclaration": 268, + "src": "23050:61:4", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,uint256) external returns (bool)" + } + }, + "id": 1847, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "23050:86:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1848, + "nodeType": "ExpressionStatement", + "src": "23050:86:4" + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1851, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1849, + "name": "_change", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1803, + "src": "23196:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 1850, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "23206:1:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "23196:11:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 1869, + "nodeType": "IfStatement", + "src": "23192:142:4", + "trueBody": { + "id": 1868, + "nodeType": "Block", + "src": "23209:125:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1860, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "23281:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 1862, + "indexExpression": { + "argumentTypes": null, + "id": 1861, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1690, + "src": "23289:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "23281:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 1863, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "addresses", + "nodeType": "MemberAccess", + "referencedDeclaration": 341, + "src": "23281:27:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAddresses_$298_storage", + "typeString": "struct SmartPiggies.DetailAddresses storage ref" + } + }, + "id": 1864, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "holder", + "nodeType": "MemberAccess", + "referencedDeclaration": 289, + "src": "23281:34:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1865, + "name": "_change", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1803, + "src": "23317:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1853, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "23232:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 1855, + "indexExpression": { + "argumentTypes": null, + "id": 1854, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1690, + "src": "23240:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "23232:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 1856, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "addresses", + "nodeType": "MemberAccess", + "referencedDeclaration": 341, + "src": "23232:27:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAddresses_$298_storage", + "typeString": "struct SmartPiggies.DetailAddresses storage ref" + } + }, + "id": 1857, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "premiumERC", + "nodeType": "MemberAccess", + "referencedDeclaration": 293, + "src": "23232:38:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1852, + "name": "PaymentToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 274, + "src": "23219:12:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_PaymentToken_$274_$", + "typeString": "type(contract PaymentToken)" + } + }, + "id": 1858, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "23219:52:4", + "typeDescriptions": { + "typeIdentifier": "t_contract$_PaymentToken_$274", + "typeString": "contract PaymentToken" + } + }, + "id": 1859, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "transfer", + "nodeType": "MemberAccess", + "referencedDeclaration": 268, + "src": "23219:61:4", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,uint256) external returns (bool)" + } + }, + "id": 1866, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "23219:106:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1867, + "nodeType": "ExpressionStatement", + "src": "23219:106:4" + } + ] + } + }, + { + "expression": { + "argumentTypes": null, + "id": 1876, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1870, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "23374:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 1872, + "indexExpression": { + "argumentTypes": null, + "id": 1871, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1690, + "src": "23382:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "23374:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 1873, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "flags", + "nodeType": "MemberAccess", + "referencedDeclaration": 345, + "src": "23374:23:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BoolFlags_$322_storage", + "typeString": "struct SmartPiggies.BoolFlags storage ref" + } + }, + "id": 1874, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "isRequest", + "nodeType": "MemberAccess", + "referencedDeclaration": 315, + "src": "23374:33:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "66616c7365", + "id": 1875, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "23410:5:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "src": "23374:41:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1877, + "nodeType": "ExpressionStatement", + "src": "23374:41:4" + }, + { + "expression": { + "argumentTypes": null, + "id": 1885, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1878, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "23458:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 1880, + "indexExpression": { + "argumentTypes": null, + "id": 1879, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1690, + "src": "23466:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "23458:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 1881, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "addresses", + "nodeType": "MemberAccess", + "referencedDeclaration": 341, + "src": "23458:27:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAddresses_$298_storage", + "typeString": "struct SmartPiggies.DetailAddresses storage ref" + } + }, + "id": 1882, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "writer", + "nodeType": "MemberAccess", + "referencedDeclaration": 287, + "src": "23458:34:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1883, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2820, + "src": "23495:3:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1884, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "23495:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "23458:47:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 1886, + "nodeType": "ExpressionStatement", + "src": "23458:47:4" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1888, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2820, + "src": "23543:3:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1889, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "23543:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 1890, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1690, + "src": "23563:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 1891, + "name": "_adjPremium", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1807, + "src": "23581:11:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 1892, + "name": "_change", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1803, + "src": "23602:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 1893, + "name": "_auctionPremium", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1740, + "src": "23619:15:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1887, + "name": "SatisfyAuction", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 459, + "src": "23519:14:4", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256,uint256,uint256,uint256)" + } + }, + "id": 1894, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "23519:123:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1895, + "nodeType": "EmitStatement", + "src": "23514:128:4" + } + ] + } + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1970, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1690, + "src": "24572:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1969, + "name": "_clearAuctionDetails", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1378, + "src": "24551:20:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$__$", + "typeString": "function (uint256)" + } + }, + "id": 1971, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "24551:30:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1972, + "nodeType": "ExpressionStatement", + "src": "24551:30:4" + }, + { + "expression": { + "argumentTypes": null, + "id": 1978, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1973, + "name": "auctions", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 369, + "src": "24609:8:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_DetailAuction_$339_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.DetailAuction storage ref)" + } + }, + "id": 1975, + "indexExpression": { + "argumentTypes": null, + "id": 1974, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1690, + "src": "24618:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "24609:18:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAuction_$339_storage", + "typeString": "struct SmartPiggies.DetailAuction storage ref" + } + }, + "id": 1976, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "satisfyInProgress", + "nodeType": "MemberAccess", + "referencedDeclaration": 338, + "src": "24609:36:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "66616c7365", + "id": 1977, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "24648:5:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "src": "24609:44:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1979, + "nodeType": "ExpressionStatement", + "src": "24609:44:4" + }, + { + "expression": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 1980, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "24666:4:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 1694, + "id": 1981, + "nodeType": "Return", + "src": "24659:11:4" + } + ] + }, + "documentation": null, + "id": 1983, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "satisfyAuction", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1691, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1690, + "name": "_tokenId", + "nodeType": "VariableDeclaration", + "scope": 1983, + "src": "21056:16:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1689, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "21056:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "21055:18:4" + }, + "returnParameters": { + "id": 1694, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1693, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 1983, + "src": "21098:4:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 1692, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "21098:4:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "21097:6:4" + }, + "scope": 2805, + "src": "21032:3643:4", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 2115, + "nodeType": "Block", + "src": "26380:1259:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + "id": 1998, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1993, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2820, + "src": "26394:3:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1994, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "26394:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 1996, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "26416: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": 1995, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "26408:7:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 1997, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "26408:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "26394:24:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "73656e6465722063616e6e6f7420626520746865207a65726f2061646472657373", + "id": 1999, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "26420:35:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_ad4115bea56432736ed27c403a062ee25e09cc9064ddb968ec7ebe18284352ba", + "typeString": "literal_string \"sender cannot be the zero address\"" + }, + "value": "sender cannot be the zero address" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_ad4115bea56432736ed27c403a062ee25e09cc9064ddb968ec7ebe18284352ba", + "typeString": "literal_string \"sender cannot be the zero address\"" + } + ], + "id": 1992, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2823, + 2824 + ], + "referencedDeclaration": 2824, + "src": "26386:7:4", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 2000, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "26386:70:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2001, + "nodeType": "ExpressionStatement", + "src": "26386:70:4" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2007, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "26533:33:4", + "subExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2003, + "name": "auctions", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 369, + "src": "26534:8:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_DetailAuction_$339_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.DetailAuction storage ref)" + } + }, + "id": 2005, + "indexExpression": { + "argumentTypes": null, + "id": 2004, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1985, + "src": "26543:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "26534:18:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAuction_$339_storage", + "typeString": "struct SmartPiggies.DetailAuction storage ref" + } + }, + "id": 2006, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "auctionActive", + "nodeType": "MemberAccess", + "referencedDeclaration": 336, + "src": "26534:32:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "63616e6e6f7420636c656172206120746f6b656e207768696c652061756374696f6e20697320616374697665", + "id": 2008, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "26568:46:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_e4ca701426be01735c162fff9ee04dad7379e543cf6beb835093efb705fd1026", + "typeString": "literal_string \"cannot clear a token while auction is active\"" + }, + "value": "cannot clear a token while auction is active" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_e4ca701426be01735c162fff9ee04dad7379e543cf6beb835093efb705fd1026", + "typeString": "literal_string \"cannot clear a token while auction is active\"" + } + ], + "id": 2002, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2823, + 2824 + ], + "referencedDeclaration": 2824, + "src": "26525:7:4", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 2009, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "26525:90:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2010, + "nodeType": "ExpressionStatement", + "src": "26525:90:4" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2017, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "26629:39:4", + "subExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2012, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "26630:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 2014, + "indexExpression": { + "argumentTypes": null, + "id": 2013, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1985, + "src": "26638:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "26630:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 2015, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "flags", + "nodeType": "MemberAccess", + "referencedDeclaration": 345, + "src": "26630:23:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BoolFlags_$322_storage", + "typeString": "struct SmartPiggies.BoolFlags storage ref" + } + }, + "id": 2016, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "hasBeenCleared", + "nodeType": "MemberAccess", + "referencedDeclaration": 321, + "src": "26630:38:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "746f6b656e2068617320616c7265616479206265656e20636c6561726564", + "id": 2018, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "26670:32:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_ab94240cb90c148b324880de3f30539922fa48badec3a654065a4231cfad07a4", + "typeString": "literal_string \"token has already been cleared\"" + }, + "value": "token has already been cleared" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_ab94240cb90c148b324880de3f30539922fa48badec3a654065a4231cfad07a4", + "typeString": "literal_string \"token has already been cleared\"" + } + ], + "id": 2011, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2823, + 2824 + ], + "referencedDeclaration": 2824, + "src": "26621:7:4", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 2019, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "26621:82:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2020, + "nodeType": "ExpressionStatement", + "src": "26621:82:4" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2024, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2022, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1985, + "src": "26783:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 2023, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "26795:1:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "26783:13:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "5f746f6b656e49642063616e6e6f74206265207a65726f", + "id": 2025, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "26798:25:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_2f700274588ee4557177665c8ed74d76c18015ed2878f7ebb5d0d398460b950d", + "typeString": "literal_string \"_tokenId cannot be zero\"" + }, + "value": "_tokenId cannot be zero" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_2f700274588ee4557177665c8ed74d76c18015ed2878f7ebb5d0d398460b950d", + "typeString": "literal_string \"_tokenId cannot be zero\"" + } + ], + "id": 2021, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2823, + 2824 + ], + "referencedDeclaration": 2824, + "src": "26775:7:4", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 2026, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "26775:49:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2027, + "nodeType": "ExpressionStatement", + "src": "26775:49:4" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2031, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2029, + "name": "_oracleFee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1987, + "src": "26838:10:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 2030, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "26852:1:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "26838:15:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "6f7261636c65206665652063616e6e6f74206265207a65726f", + "id": 2032, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "26855:27:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_0db8fe92326f442d19f70ee9735d4588e3a3e39253e476edcfda4f7f1af78339", + "typeString": "literal_string \"oracle fee cannot be zero\"" + }, + "value": "oracle fee cannot be zero" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_0db8fe92326f442d19f70ee9735d4588e3a3e39253e476edcfda4f7f1af78339", + "typeString": "literal_string \"oracle fee cannot be zero\"" + } + ], + "id": 2028, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2823, + 2824 + ], + "referencedDeclaration": 2824, + "src": "26830:7:4", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 2033, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "26830:53:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2034, + "nodeType": "ExpressionStatement", + "src": "26830:53:4" + }, + { + "condition": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2035, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "26927:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 2037, + "indexExpression": { + "argumentTypes": null, + "id": 2036, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1985, + "src": "26935:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "26927:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 2038, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "flags", + "nodeType": "MemberAccess", + "referencedDeclaration": 345, + "src": "26927:23:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BoolFlags_$322_storage", + "typeString": "struct SmartPiggies.BoolFlags storage ref" + } + }, + "id": 2039, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "isEuro", + "nodeType": "MemberAccess", + "referencedDeclaration": 317, + "src": "26927:30:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 2052, + "nodeType": "IfStatement", + "src": "26923:112:4", + "trueBody": { + "id": 2051, + "nodeType": "Block", + "src": "26959:76:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2048, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2041, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "26975:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 2043, + "indexExpression": { + "argumentTypes": null, + "id": 2042, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1985, + "src": "26983:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "26975:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 2044, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "uintDetails", + "nodeType": "MemberAccess", + "referencedDeclaration": 343, + "src": "26975:29:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailUints_$313_storage", + "typeString": "struct SmartPiggies.DetailUints storage ref" + } + }, + "id": 2045, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "expiry", + "nodeType": "MemberAccess", + "referencedDeclaration": 306, + "src": "26975:36:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<=", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 2046, + "name": "block", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2810, + "src": "27015:5:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_block", + "typeString": "block" + } + }, + "id": 2047, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "number", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "27015:12:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "26975:52:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 2040, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2823, + 2824 + ], + "referencedDeclaration": 2823, + "src": "26967:7:4", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 2049, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "26967:61:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2050, + "nodeType": "ExpressionStatement", + "src": "26967:61:4" + } + ] + } + }, + { + "assignments": [ + 2054 + ], + "declarations": [ + { + "constant": false, + "id": 2054, + "name": "_dataResolver", + "nodeType": "VariableDeclaration", + "scope": 2115, + "src": "27084:21:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2053, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "27084:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 2055, + "initialValue": null, + "nodeType": "VariableDeclarationStatement", + "src": "27084:21:4" + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 2070, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2056, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "27115:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 2058, + "indexExpression": { + "argumentTypes": null, + "id": 2057, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1985, + "src": "27123:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "27115:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 2059, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "flags", + "nodeType": "MemberAccess", + "referencedDeclaration": 345, + "src": "27115:23:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BoolFlags_$322_storage", + "typeString": "struct SmartPiggies.BoolFlags storage ref" + } + }, + "id": 2060, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "isEuro", + "nodeType": "MemberAccess", + "referencedDeclaration": 317, + "src": "27115:30:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2068, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2061, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "27150:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 2063, + "indexExpression": { + "argumentTypes": null, + "id": 2062, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1985, + "src": "27158:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "27150:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 2064, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "uintDetails", + "nodeType": "MemberAccess", + "referencedDeclaration": 343, + "src": "27150:29:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailUints_$313_storage", + "typeString": "struct SmartPiggies.DetailUints storage ref" + } + }, + "id": 2065, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "expiry", + "nodeType": "MemberAccess", + "referencedDeclaration": 306, + "src": "27150:36:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 2066, + "name": "block", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2810, + "src": "27189:5:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_block", + "typeString": "block" + } + }, + "id": 2067, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "number", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "27189:12:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "27150:51:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "id": 2069, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "27149:53:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "27115:87:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 2100, + "nodeType": "Block", + "src": "27293:208:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 2088, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 2081, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2820, + "src": "27309:3:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 2082, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "27309:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2083, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "27323:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 2085, + "indexExpression": { + "argumentTypes": null, + "id": 2084, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1985, + "src": "27331:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "27323:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 2086, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "addresses", + "nodeType": "MemberAccess", + "referencedDeclaration": 341, + "src": "27323:27:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAddresses_$298_storage", + "typeString": "struct SmartPiggies.DetailAddresses storage ref" + } + }, + "id": 2087, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "holder", + "nodeType": "MemberAccess", + "referencedDeclaration": 289, + "src": "27323:34:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "27309:48:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "6f6e6c792074686520686f6c6465722063616e20736574746c6520616e20416d65726963616e207374796c65206f7074696f6e206265666f726520657870697279", + "id": 2089, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "27359:67:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_e638b15f125c8aef048b8486194c7d2b0eb1011ee42fac359a0c27aed937b109", + "typeString": "literal_string \"only the holder can settle an American style option before expiry\"" + }, + "value": "only the holder can settle an American style option before expiry" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_e638b15f125c8aef048b8486194c7d2b0eb1011ee42fac359a0c27aed937b109", + "typeString": "literal_string \"only the holder can settle an American style option before expiry\"" + } + ], + "id": 2080, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2823, + 2824 + ], + "referencedDeclaration": 2824, + "src": "27301:7:4", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 2090, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "27301:126:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2091, + "nodeType": "ExpressionStatement", + "src": "27301:126:4" + }, + { + "expression": { + "argumentTypes": null, + "id": 2098, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 2092, + "name": "_dataResolver", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2054, + "src": "27435:13:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2093, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "27451:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 2095, + "indexExpression": { + "argumentTypes": null, + "id": 2094, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1985, + "src": "27459:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "27451:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 2096, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "addresses", + "nodeType": "MemberAccess", + "referencedDeclaration": 341, + "src": "27451:27:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAddresses_$298_storage", + "typeString": "struct SmartPiggies.DetailAddresses storage ref" + } + }, + "id": 2097, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "dataResolverNow", + "nodeType": "MemberAccess", + "referencedDeclaration": 295, + "src": "27451:43:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "27435:59:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 2099, + "nodeType": "ExpressionStatement", + "src": "27435:59:4" + } + ] + }, + "id": 2101, + "nodeType": "IfStatement", + "src": "27111:390:4", + "trueBody": { + "id": 2079, + "nodeType": "Block", + "src": "27208:79:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 2077, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 2071, + "name": "_dataResolver", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2054, + "src": "27216:13:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2072, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "27232:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 2074, + "indexExpression": { + "argumentTypes": null, + "id": 2073, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1985, + "src": "27240:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "27232:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 2075, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "addresses", + "nodeType": "MemberAccess", + "referencedDeclaration": 341, + "src": "27232:27:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAddresses_$298_storage", + "typeString": "struct SmartPiggies.DetailAddresses storage ref" + } + }, + "id": 2076, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "dataResolverAtExpiry", + "nodeType": "MemberAccess", + "referencedDeclaration": 297, + "src": "27232:48:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "27216:64:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 2078, + "nodeType": "ExpressionStatement", + "src": "27216:64:4" + } + ] + } + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2104, + "name": "_dataResolver", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2054, + "src": "27528:13:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 2105, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2820, + "src": "27543:3:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 2106, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "27543:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 2107, + "name": "_oracleFee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1987, + "src": "27555:10:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 2108, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1985, + "src": "27567:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 2103, + "name": "_callResolver", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2159, + "src": "27514:13:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,address,uint256,uint256) returns (bool)" + } + }, + "id": 2109, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "27514:62:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "63616c6c20746f207265736f6c76657220646964206e6f742072657475726e2074727565", + "id": 2110, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "27578:38:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_c7d5d1fb1a904d51b7573bd7503cbbffa6841f2e9d1a1819b91902b71dc327b4", + "typeString": "literal_string \"call to resolver did not return true\"" + }, + "value": "call to resolver did not return true" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_c7d5d1fb1a904d51b7573bd7503cbbffa6841f2e9d1a1819b91902b71dc327b4", + "typeString": "literal_string \"call to resolver did not return true\"" + } + ], + "id": 2102, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2823, + 2824 + ], + "referencedDeclaration": 2824, + "src": "27506:7:4", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 2111, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "27506:111:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2112, + "nodeType": "ExpressionStatement", + "src": "27506:111:4" + }, + { + "expression": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 2113, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "27630:4:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 1991, + "id": 2114, + "nodeType": "Return", + "src": "27623:11:4" + } + ] + }, + "documentation": "@notice Call the oracle to fetch the settlement price\n@dev Throws if `_tokenId` is not a valid ERC-59 token.\nThrows if `_oracle` is not a valid contract address.\nThrows if `onMarket(_tokenId)` is true.\nIf `isEuro` is true for the specified token, throws if `_expiry` > block.number.\nIf `isEuro` is true for the specified token, throws if `_priceNow` is true. [OR specify that it flips that to false always (?)]\nIf `priceNow` is true, throws if block.number > `_expiry` for the specified token.\nIf `priceNow` is false, throws if block.number < `_expiry` for the specified token.\nIf `priceNow` is true, calls the oracle to request the `_underlyingNow` value for the token.\nIf `priceNow` is false, calls the oracle to request the `_underlyingExpiry` value for the token.\nDepending on the oracle service implemented, additional state will need to be referenced in\norder to call the oracle, e.g. an endpoint to fetch. This state handling will need to be\nmanaged on an implementation basis for specific oracle services.\n@param _tokenId The identifier of the specific ERC-59 token for which to fetch a settlement price\n_oracle The address of the oracle contract used to fetch the external settlement price\n_priceNow A boolean for specifying whether to fetch a \"live\" price or a fixed price at\nexpiry of the option\n@return The settlement price from the oracle to be used in `settleOption()`", + "id": 2116, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "requestSettlementPrice", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1988, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1985, + "name": "_tokenId", + "nodeType": "VariableDeclaration", + "scope": 2116, + "src": "26222:16:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1984, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "26222:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1987, + "name": "_oracleFee", + "nodeType": "VariableDeclaration", + "scope": 2116, + "src": "26240:18:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1986, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "26240:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "26221:38:4" + }, + "returnParameters": { + "id": 1991, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1990, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 2116, + "src": "26372:4:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 1989, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "26372:4:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "26371:6:4" + }, + "scope": 2805, + "src": "26190:1449:4", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 2158, + "nodeType": "Block", + "src": "27780:354:4", + "statements": [ + { + "assignments": [ + 2130, + null + ], + "declarations": [ + { + "constant": false, + "id": 2130, + "name": "success", + "nodeType": "VariableDeclaration", + "scope": 2158, + "src": "27787:12:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 2129, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "27787:4:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + }, + null + ], + "id": 2143, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "66657463684461746128616464726573732c75696e743235362c75696e7432353629", + "id": 2137, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "27864:36:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_1aa8ccc93b3cc911b48ca8541328b478b706a0fda711a61bfb3228bb961bc27f", + "typeString": "literal_string \"fetchData(address,uint256,uint256)\"" + }, + "value": "fetchData(address,uint256,uint256)" + }, + { + "argumentTypes": null, + "id": 2138, + "name": "_feePayer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2120, + "src": "27902:9:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 2139, + "name": "_oracleFee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2122, + "src": "27913:10:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 2140, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2124, + "src": "27925:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_1aa8ccc93b3cc911b48ca8541328b478b706a0fda711a61bfb3228bb961bc27f", + "typeString": "literal_string \"fetchData(address,uint256,uint256)\"" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 2135, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2807, + "src": "27840:3:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 2136, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "encodeWithSignature", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "27840:23:4", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$", + "typeString": "function (string memory) pure returns (bytes memory)" + } + }, + "id": 2141, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "27840:94:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2132, + "name": "_dataResolver", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2118, + "src": "27813:13:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 2131, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "27805:7:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 2133, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "27805:22:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 2134, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "call", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "27805:27:4", + "typeDescriptions": { + "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$", + "typeString": "function (bytes memory) payable returns (bool,bytes memory)" + } + }, + "id": 2142, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "27805:135:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$", + "typeString": "tuple(bool,bytes memory)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "27786:154:4" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2145, + "name": "success", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2130, + "src": "27954:7:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "6665746368207375636365737320646964206e6f742072657475726e2074727565", + "id": 2146, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "27963:35:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_994cb985e31ba3aa28e93aea8c8314dc6e57927397544c60b1b2f03735f47644", + "typeString": "literal_string \"fetch success did not return true\"" + }, + "value": "fetch success did not return true" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_994cb985e31ba3aa28e93aea8c8314dc6e57927397544c60b1b2f03735f47644", + "typeString": "literal_string \"fetch success did not return true\"" + } + ], + "id": 2144, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2823, + 2824 + ], + "referencedDeclaration": 2824, + "src": "27946:7:4", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 2147, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "27946:53:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2148, + "nodeType": "ExpressionStatement", + "src": "27946:53:4" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2150, + "name": "_feePayer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2120, + "src": "28041:9:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 2151, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2124, + "src": "28058:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 2152, + "name": "_oracleFee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2122, + "src": "28074:10:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 2153, + "name": "_dataResolver", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2118, + "src": "28092:13:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 2149, + "name": "RequestSettlementPrice", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 469, + "src": "28011:22:4", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_address_$returns$__$", + "typeString": "function (address,uint256,uint256,address)" + } + }, + "id": 2154, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "28011:100:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2155, + "nodeType": "EmitStatement", + "src": "28006:105:4" + }, + { + "expression": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 2156, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "28125:4:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 2128, + "id": 2157, + "nodeType": "Return", + "src": "28118:11:4" + } + ] + }, + "documentation": null, + "id": 2159, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_callResolver", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2125, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2118, + "name": "_dataResolver", + "nodeType": "VariableDeclaration", + "scope": 2159, + "src": "27666:21:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2117, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "27666:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2120, + "name": "_feePayer", + "nodeType": "VariableDeclaration", + "scope": 2159, + "src": "27689:17:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2119, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "27689:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2122, + "name": "_oracleFee", + "nodeType": "VariableDeclaration", + "scope": 2159, + "src": "27708:18:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2121, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "27708:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2124, + "name": "_tokenId", + "nodeType": "VariableDeclaration", + "scope": 2159, + "src": "27728:16:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2123, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "27728:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "27665:80:4" + }, + "returnParameters": { + "id": 2128, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2127, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 2159, + "src": "27772:4:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 2126, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "27772:4:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "27771:6:4" + }, + "scope": 2805, + "src": "27643:491:4", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 2234, + "nodeType": "Block", + "src": "28216:615:4", + "statements": [ + { + "assignments": [ + 2167 + ], + "declarations": [ + { + "constant": false, + "id": 2167, + "name": "_dataResolver", + "nodeType": "VariableDeclaration", + "scope": 2234, + "src": "28222:21:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2166, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "28222:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 2168, + "initialValue": null, + "nodeType": "VariableDeclarationStatement", + "src": "28222:21:4" + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 2183, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2169, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "28253:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 2171, + "indexExpression": { + "argumentTypes": null, + "id": 2170, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2161, + "src": "28261:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "28253:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 2172, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "flags", + "nodeType": "MemberAccess", + "referencedDeclaration": 345, + "src": "28253:23:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BoolFlags_$322_storage", + "typeString": "struct SmartPiggies.BoolFlags storage ref" + } + }, + "id": 2173, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "isEuro", + "nodeType": "MemberAccess", + "referencedDeclaration": 317, + "src": "28253:30:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2181, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2174, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "28288:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 2176, + "indexExpression": { + "argumentTypes": null, + "id": 2175, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2161, + "src": "28296:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "28288:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 2177, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "uintDetails", + "nodeType": "MemberAccess", + "referencedDeclaration": 343, + "src": "28288:29:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailUints_$313_storage", + "typeString": "struct SmartPiggies.DetailUints storage ref" + } + }, + "id": 2178, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "expiry", + "nodeType": "MemberAccess", + "referencedDeclaration": 306, + "src": "28288:36:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 2179, + "name": "block", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2810, + "src": "28327:5:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_block", + "typeString": "block" + } + }, + "id": 2180, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "number", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "28327:12:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "28288:51:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "id": 2182, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "28287:53:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "28253:87:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 2201, + "nodeType": "Block", + "src": "28431:74:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 2199, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 2193, + "name": "_dataResolver", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2167, + "src": "28439:13:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2194, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "28455:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 2196, + "indexExpression": { + "argumentTypes": null, + "id": 2195, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2161, + "src": "28463:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "28455:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 2197, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "addresses", + "nodeType": "MemberAccess", + "referencedDeclaration": 341, + "src": "28455:27:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAddresses_$298_storage", + "typeString": "struct SmartPiggies.DetailAddresses storage ref" + } + }, + "id": 2198, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "dataResolverNow", + "nodeType": "MemberAccess", + "referencedDeclaration": 295, + "src": "28455:43:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "28439:59:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 2200, + "nodeType": "ExpressionStatement", + "src": "28439:59:4" + } + ] + }, + "id": 2202, + "nodeType": "IfStatement", + "src": "28249:256:4", + "trueBody": { + "id": 2192, + "nodeType": "Block", + "src": "28346:79:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 2190, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 2184, + "name": "_dataResolver", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2167, + "src": "28354:13:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2185, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "28370:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 2187, + "indexExpression": { + "argumentTypes": null, + "id": 2186, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2161, + "src": "28378:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "28370:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 2188, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "addresses", + "nodeType": "MemberAccess", + "referencedDeclaration": 341, + "src": "28370:27:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAddresses_$298_storage", + "typeString": "struct SmartPiggies.DetailAddresses storage ref" + } + }, + "id": 2189, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "dataResolverAtExpiry", + "nodeType": "MemberAccess", + "referencedDeclaration": 297, + "src": "28370:48:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "28354:64:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 2191, + "nodeType": "ExpressionStatement", + "src": "28354:64:4" + } + ] + } + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 2207, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 2204, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2820, + "src": "28518:3:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 2205, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "28518:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 2206, + "name": "_dataResolver", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2167, + "src": "28532:13:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "28518:27:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "7265736f6c7665206164647265737320776173206e6f7420636f7272656374", + "id": 2208, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "28547:33:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_2e33e22d72fdb46becf75c42e09581fa0441b6719e3574fb9d745f9b7a787af7", + "typeString": "literal_string \"resolve address was not correct\"" + }, + "value": "resolve address was not correct" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_2e33e22d72fdb46becf75c42e09581fa0441b6719e3574fb9d745f9b7a787af7", + "typeString": "literal_string \"resolve address was not correct\"" + } + ], + "id": 2203, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2823, + 2824 + ], + "referencedDeclaration": 2824, + "src": "28510:7:4", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 2209, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "28510:71:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2210, + "nodeType": "ExpressionStatement", + "src": "28510:71:4" + }, + { + "expression": { + "argumentTypes": null, + "id": 2217, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2211, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "28640:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 2213, + "indexExpression": { + "argumentTypes": null, + "id": 2212, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2161, + "src": "28648:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "28640:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 2214, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "uintDetails", + "nodeType": "MemberAccess", + "referencedDeclaration": 343, + "src": "28640:29:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailUints_$313_storage", + "typeString": "struct SmartPiggies.DetailUints storage ref" + } + }, + "id": 2215, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "settlementPrice", + "nodeType": "MemberAccess", + "referencedDeclaration": 308, + "src": "28640:45:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 2216, + "name": "_price", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2163, + "src": "28688:6:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "28640:54:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2218, + "nodeType": "ExpressionStatement", + "src": "28640:54:4" + }, + { + "expression": { + "argumentTypes": null, + "id": 2225, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2219, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "28700:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 2221, + "indexExpression": { + "argumentTypes": null, + "id": 2220, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2161, + "src": "28708:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "28700:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 2222, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "flags", + "nodeType": "MemberAccess", + "referencedDeclaration": 345, + "src": "28700:23:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BoolFlags_$322_storage", + "typeString": "struct SmartPiggies.BoolFlags storage ref" + } + }, + "id": 2223, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "hasBeenCleared", + "nodeType": "MemberAccess", + "referencedDeclaration": 321, + "src": "28700:38:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 2224, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "28741:4:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "src": "28700:45:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2226, + "nodeType": "ExpressionStatement", + "src": "28700:45:4" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 2228, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2820, + "src": "28779:3:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 2229, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "28779:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 2230, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2161, + "src": "28797:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 2231, + "name": "_price", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2163, + "src": "28813:6:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 2227, + "name": "OracleReturned", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 477, + "src": "28757:14:4", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256,uint256)" + } + }, + "id": 2232, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "28757:68:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2233, + "nodeType": "EmitStatement", + "src": "28752:73:4" + } + ] + }, + "documentation": null, + "id": 2235, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_callback", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2164, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2161, + "name": "_tokenId", + "nodeType": "VariableDeclaration", + "scope": 2235, + "src": "28162:16:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2160, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "28162:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2163, + "name": "_price", + "nodeType": "VariableDeclaration", + "scope": 2235, + "src": "28184:14:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2162, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "28184:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "28156:46:4" + }, + "returnParameters": { + "id": 2165, + "nodeType": "ParameterList", + "parameters": [], + "src": "28216:0:4" + }, + "scope": 2805, + "src": "28138:693:4", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 2300, + "nodeType": "Block", + "src": "29522:318:4", + "statements": [ + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 2255, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2250, + "name": "_isPut", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2237, + "src": "29532:6:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2253, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2251, + "name": "_strikePrice", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2241, + "src": "29543:12:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "id": 2252, + "name": "_exercisePrice", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2239, + "src": "29558:14:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "29543:29:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "id": 2254, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "29542:31:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "29532:41:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 2264, + "nodeType": "IfStatement", + "src": "29528:104:4", + "trueBody": { + "id": 2263, + "nodeType": "Block", + "src": "29575:57:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 2261, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 2256, + "name": "_payout", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2248, + "src": "29583:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2259, + "name": "_exercisePrice", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2239, + "src": "29610:14:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 2257, + "name": "_strikePrice", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2241, + "src": "29593:12:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2258, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sub", + "nodeType": "MemberAccess", + "referencedDeclaration": 200, + "src": "29593:16:4", + "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": 2260, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "29593:32:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "29583:42:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2262, + "nodeType": "ExpressionStatement", + "src": "29583:42:4" + } + ] + } + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 2271, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2266, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "29641:7:4", + "subExpression": { + "argumentTypes": null, + "id": 2265, + "name": "_isPut", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2237, + "src": "29642:6:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2269, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2267, + "name": "_exercisePrice", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2239, + "src": "29653:14:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "id": 2268, + "name": "_strikePrice", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2241, + "src": "29670:12:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "29653:29:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "id": 2270, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "29652:31:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "29641:42:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 2280, + "nodeType": "IfStatement", + "src": "29637:105:4", + "trueBody": { + "id": 2279, + "nodeType": "Block", + "src": "29685:57:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 2277, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 2272, + "name": "_payout", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2248, + "src": "29693:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2275, + "name": "_strikePrice", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2241, + "src": "29722:12:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 2273, + "name": "_exercisePrice", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2239, + "src": "29703:14:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2274, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sub", + "nodeType": "MemberAccess", + "referencedDeclaration": 200, + "src": "29703:18:4", + "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": 2276, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "29703:32:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "29693:42:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2278, + "nodeType": "ExpressionStatement", + "src": "29693:42:4" + } + ] + } + }, + { + "expression": { + "argumentTypes": null, + "id": 2296, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 2281, + "name": "_payout", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2248, + "src": "29747:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "313030", + "id": 2294, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "29811:3:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_100_by_1", + "typeString": "int_const 100" + }, + "value": "100" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_100_by_1", + "typeString": "int_const 100" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2291, + "name": "_lotSize", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2243, + "src": "29797:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2288, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "hexValue": "3130", + "id": 2284, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "29769:2:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_10_by_1", + "typeString": "int_const 10" + }, + "value": "10" + }, + "nodeType": "BinaryOperation", + "operator": "**", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2286, + "name": "_decimals", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2245, + "src": "29781:9:4", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + ], + "id": 2285, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "29773:7:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": "uint256" + }, + "id": 2287, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "29773:18:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "29769:22:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 2282, + "name": "_payout", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2248, + "src": "29757:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2283, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "mul", + "nodeType": "MemberAccess", + "referencedDeclaration": 152, + "src": "29757:11:4", + "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": 2289, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "29757:35:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2290, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "mul", + "nodeType": "MemberAccess", + "referencedDeclaration": 152, + "src": "29757:39:4", + "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": 2292, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "29757:49:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2293, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "div", + "nodeType": "MemberAccess", + "referencedDeclaration": 176, + "src": "29757:53:4", + "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": 2295, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "29757:58:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "29747:68:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2297, + "nodeType": "ExpressionStatement", + "src": "29747:68:4" + }, + { + "expression": { + "argumentTypes": null, + "id": 2298, + "name": "_payout", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2248, + "src": "29828:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 2249, + "id": 2299, + "nodeType": "Return", + "src": "29821:14:4" + } + ] + }, + "documentation": null, + "id": 2301, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_calculateLongPayout", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2246, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2237, + "name": "_isPut", + "nodeType": "VariableDeclaration", + "scope": 2301, + "src": "29355:11:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 2236, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "29355:4:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2239, + "name": "_exercisePrice", + "nodeType": "VariableDeclaration", + "scope": 2301, + "src": "29372:22:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2238, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "29372:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2241, + "name": "_strikePrice", + "nodeType": "VariableDeclaration", + "scope": 2301, + "src": "29400:20:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2240, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "29400:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2243, + "name": "_lotSize", + "nodeType": "VariableDeclaration", + "scope": 2301, + "src": "29426:16:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2242, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "29426:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2245, + "name": "_decimals", + "nodeType": "VariableDeclaration", + "scope": 2301, + "src": "29448:15:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 2244, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "29448:5:4", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "29349:118:4" + }, + "returnParameters": { + "id": 2249, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2248, + "name": "_payout", + "nodeType": "VariableDeclaration", + "scope": 2301, + "src": "29503:15:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2247, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "29503:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "29502:17:4" + }, + "scope": 2805, + "src": "29320:520:4", + "stateMutability": "pure", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 2483, + "nodeType": "Block", + "src": "30424:1562:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + "id": 2314, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 2309, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2820, + "src": "30439:3:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 2310, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "30439:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 2312, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "30461: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": 2311, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "30453:7:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 2313, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "30453:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "30439:24:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "6d73672e73656e6465722063616e6e6f74206265207a65726f", + "id": 2315, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "30465:27:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_aeea01aec3d95cf400af77b2a4e70b183892b8ffc254fd451f8406644a4f5d73", + "typeString": "literal_string \"msg.sender cannot be zero\"" + }, + "value": "msg.sender cannot be zero" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_aeea01aec3d95cf400af77b2a4e70b183892b8ffc254fd451f8406644a4f5d73", + "typeString": "literal_string \"msg.sender cannot be zero\"" + } + ], + "id": 2308, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2823, + 2824 + ], + "referencedDeclaration": 2824, + "src": "30431:7:4", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 2316, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "30431:62:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2317, + "nodeType": "ExpressionStatement", + "src": "30431:62:4" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2321, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2319, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2303, + "src": "30508:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 2320, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "30520:1:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "30508:13:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "746f6b656e49642063616e6e6f74206265207a65726f", + "id": 2322, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "30523:24:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_a89f543142a9de2b46f7eadcab6442212c082feaf16ab44efe1b01aae149b6cd", + "typeString": "literal_string \"tokenId cannot be zero\"" + }, + "value": "tokenId cannot be zero" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_a89f543142a9de2b46f7eadcab6442212c082feaf16ab44efe1b01aae149b6cd", + "typeString": "literal_string \"tokenId cannot be zero\"" + } + ], + "id": 2318, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2823, + 2824 + ], + "referencedDeclaration": 2824, + "src": "30500:7:4", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 2323, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "30500:48:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2324, + "nodeType": "ExpressionStatement", + "src": "30500:48:4" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2326, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "30563:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 2328, + "indexExpression": { + "argumentTypes": null, + "id": 2327, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2303, + "src": "30571:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "30563:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 2329, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "flags", + "nodeType": "MemberAccess", + "referencedDeclaration": 345, + "src": "30563:23:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BoolFlags_$322_storage", + "typeString": "struct SmartPiggies.BoolFlags storage ref" + } + }, + "id": 2330, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "hasBeenCleared", + "nodeType": "MemberAccess", + "referencedDeclaration": 321, + "src": "30563:38:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "706967677920686173206e6f7420726563656976656420616e206f7261636c65207072696365", + "id": 2331, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "30603:40:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_77f757b31a7d00a4ce5c81894c0f959249e455b423814404b4cbee93af3b92f8", + "typeString": "literal_string \"piggy has not received an oracle price\"" + }, + "value": "piggy has not received an oracle price" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_77f757b31a7d00a4ce5c81894c0f959249e455b423814404b4cbee93af3b92f8", + "typeString": "literal_string \"piggy has not received an oracle price\"" + } + ], + "id": 2325, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2823, + 2824 + ], + "referencedDeclaration": 2824, + "src": "30555:7:4", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 2332, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "30555:89:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2333, + "nodeType": "ExpressionStatement", + "src": "30555:89:4" + }, + { + "assignments": [ + 2335 + ], + "declarations": [ + { + "constant": false, + "id": 2335, + "name": "payout", + "nodeType": "VariableDeclaration", + "scope": 2483, + "src": "30652:14:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2334, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "30652:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 2336, + "initialValue": null, + "nodeType": "VariableDeclarationStatement", + "src": "30652:14:4" + }, + { + "condition": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2337, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "30677:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 2339, + "indexExpression": { + "argumentTypes": null, + "id": 2338, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2303, + "src": "30685:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "30677:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 2340, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "flags", + "nodeType": "MemberAccess", + "referencedDeclaration": 345, + "src": "30677:23:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BoolFlags_$322_storage", + "typeString": "struct SmartPiggies.BoolFlags storage ref" + } + }, + "id": 2341, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "isEuro", + "nodeType": "MemberAccess", + "referencedDeclaration": 317, + "src": "30677:30:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 2355, + "nodeType": "IfStatement", + "src": "30674:152:4", + "trueBody": { + "id": 2354, + "nodeType": "Block", + "src": "30709:117:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2350, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2343, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "30726:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 2345, + "indexExpression": { + "argumentTypes": null, + "id": 2344, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2303, + "src": "30734:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "30726:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 2346, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "uintDetails", + "nodeType": "MemberAccess", + "referencedDeclaration": 343, + "src": "30726:29:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailUints_$313_storage", + "typeString": "struct SmartPiggies.DetailUints storage ref" + } + }, + "id": 2347, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "expiry", + "nodeType": "MemberAccess", + "referencedDeclaration": 306, + "src": "30726:36:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<=", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 2348, + "name": "block", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2810, + "src": "30766:5:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_block", + "typeString": "block" + } + }, + "id": 2349, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "number", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "30766:12:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "30726:52:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "4575726f7065616e206f7074696f6e206e6565647320746f2062652065787069726564", + "id": 2351, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "30780:37:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_f22195ac208b1677643fe01bd7203cde67ce97a0dc3e538e1b1786a2cd90c614", + "typeString": "literal_string \"European option needs to be expired\"" + }, + "value": "European option needs to be expired" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_f22195ac208b1677643fe01bd7203cde67ce97a0dc3e538e1b1786a2cd90c614", + "typeString": "literal_string \"European option needs to be expired\"" + } + ], + "id": 2342, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2823, + 2824 + ], + "referencedDeclaration": 2824, + "src": "30718:7:4", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 2352, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "30718:100:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2353, + "nodeType": "ExpressionStatement", + "src": "30718:100:4" + } + ] + } + }, + { + "expression": { + "argumentTypes": null, + "id": 2384, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 2356, + "name": "payout", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2335, + "src": "30832:6:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2358, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "30872:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 2360, + "indexExpression": { + "argumentTypes": null, + "id": 2359, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2303, + "src": "30880:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "30872:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 2361, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "flags", + "nodeType": "MemberAccess", + "referencedDeclaration": 345, + "src": "30872:23:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BoolFlags_$322_storage", + "typeString": "struct SmartPiggies.BoolFlags storage ref" + } + }, + "id": 2362, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "isPut", + "nodeType": "MemberAccess", + "referencedDeclaration": 319, + "src": "30872:29:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2363, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "30912:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 2365, + "indexExpression": { + "argumentTypes": null, + "id": 2364, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2303, + "src": "30920:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "30912:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 2366, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "uintDetails", + "nodeType": "MemberAccess", + "referencedDeclaration": 343, + "src": "30912:29:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailUints_$313_storage", + "typeString": "struct SmartPiggies.DetailUints storage ref" + } + }, + "id": 2367, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "settlementPrice", + "nodeType": "MemberAccess", + "referencedDeclaration": 308, + "src": "30912:45:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2368, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "30968:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 2370, + "indexExpression": { + "argumentTypes": null, + "id": 2369, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2303, + "src": "30976:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "30968:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 2371, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "uintDetails", + "nodeType": "MemberAccess", + "referencedDeclaration": 343, + "src": "30968:29:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailUints_$313_storage", + "typeString": "struct SmartPiggies.DetailUints storage ref" + } + }, + "id": 2372, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "strikePrice", + "nodeType": "MemberAccess", + "referencedDeclaration": 304, + "src": "30968:41:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2373, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "31020:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 2375, + "indexExpression": { + "argumentTypes": null, + "id": 2374, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2303, + "src": "31028:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "31020:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 2376, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "uintDetails", + "nodeType": "MemberAccess", + "referencedDeclaration": 343, + "src": "31020:29:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailUints_$313_storage", + "typeString": "struct SmartPiggies.DetailUints storage ref" + } + }, + "id": 2377, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "lotSize", + "nodeType": "MemberAccess", + "referencedDeclaration": 302, + "src": "31020:37:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2378, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "31068:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 2380, + "indexExpression": { + "argumentTypes": null, + "id": 2379, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2303, + "src": "31076:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "31068:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 2381, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "uintDetails", + "nodeType": "MemberAccess", + "referencedDeclaration": 343, + "src": "31068:29:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailUints_$313_storage", + "typeString": "struct SmartPiggies.DetailUints storage ref" + } + }, + "id": 2382, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "collateralDecimals", + "nodeType": "MemberAccess", + "referencedDeclaration": 312, + "src": "31068:48:4", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + ], + "id": 2357, + "name": "_calculateLongPayout", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2301, + "src": "30841:20:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bool_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint8_$returns$_t_uint256_$", + "typeString": "function (bool,uint256,uint256,uint256,uint8) pure returns (uint256)" + } + }, + "id": 2383, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "30841:282:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "30832:291:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2385, + "nodeType": "ExpressionStatement", + "src": "30832:291:4" + }, + { + "assignments": [ + 2387 + ], + "declarations": [ + { + "constant": false, + "id": 2387, + "name": "_writer", + "nodeType": "VariableDeclaration", + "scope": 2483, + "src": "31202:15:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2386, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "31202:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 2393, + "initialValue": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2388, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "31220:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 2390, + "indexExpression": { + "argumentTypes": null, + "id": 2389, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2303, + "src": "31228:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "31220:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 2391, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "addresses", + "nodeType": "MemberAccess", + "referencedDeclaration": 341, + "src": "31220:27:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAddresses_$298_storage", + "typeString": "struct SmartPiggies.DetailAddresses storage ref" + } + }, + "id": 2392, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "writer", + "nodeType": "MemberAccess", + "referencedDeclaration": 287, + "src": "31220:34:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "31202:52:4" + }, + { + "assignments": [ + 2395 + ], + "declarations": [ + { + "constant": false, + "id": 2395, + "name": "_holder", + "nodeType": "VariableDeclaration", + "scope": 2483, + "src": "31261:15:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2394, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "31261:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 2401, + "initialValue": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2396, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "31279:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 2398, + "indexExpression": { + "argumentTypes": null, + "id": 2397, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2303, + "src": "31287:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "31279:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 2399, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "addresses", + "nodeType": "MemberAccess", + "referencedDeclaration": 341, + "src": "31279:27:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAddresses_$298_storage", + "typeString": "struct SmartPiggies.DetailAddresses storage ref" + } + }, + "id": 2400, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "holder", + "nodeType": "MemberAccess", + "referencedDeclaration": 289, + "src": "31279:34:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "31261:52:4" + }, + { + "assignments": [ + 2403 + ], + "declarations": [ + { + "constant": false, + "id": 2403, + "name": "_collateralERC", + "nodeType": "VariableDeclaration", + "scope": 2483, + "src": "31320:22:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2402, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "31320:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 2409, + "initialValue": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2404, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "31345:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 2406, + "indexExpression": { + "argumentTypes": null, + "id": 2405, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2303, + "src": "31353:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "31345:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 2407, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "addresses", + "nodeType": "MemberAccess", + "referencedDeclaration": 341, + "src": "31345:27:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAddresses_$298_storage", + "typeString": "struct SmartPiggies.DetailAddresses storage ref" + } + }, + "id": 2408, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "collateralERC", + "nodeType": "MemberAccess", + "referencedDeclaration": 291, + "src": "31345:41:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "31320:66:4" + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2416, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2410, + "name": "payout", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2335, + "src": "31398:6:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2411, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "31407:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 2413, + "indexExpression": { + "argumentTypes": null, + "id": 2412, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2303, + "src": "31415:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "31407:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 2414, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "uintDetails", + "nodeType": "MemberAccess", + "referencedDeclaration": 343, + "src": "31407:29:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailUints_$313_storage", + "typeString": "struct SmartPiggies.DetailUints storage ref" + } + }, + "id": 2415, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "collateral", + "nodeType": "MemberAccess", + "referencedDeclaration": 300, + "src": "31407:40:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "31398:49:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 2426, + "nodeType": "IfStatement", + "src": "31394:121:4", + "trueBody": { + "id": 2425, + "nodeType": "Block", + "src": "31449:66:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 2423, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 2417, + "name": "payout", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2335, + "src": "31458:6:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2418, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "31467:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 2420, + "indexExpression": { + "argumentTypes": null, + "id": 2419, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2303, + "src": "31475:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "31467:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 2421, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "uintDetails", + "nodeType": "MemberAccess", + "referencedDeclaration": 343, + "src": "31467:29:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailUints_$313_storage", + "typeString": "struct SmartPiggies.DetailUints storage ref" + } + }, + "id": 2422, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "collateral", + "nodeType": "MemberAccess", + "referencedDeclaration": 300, + "src": "31467:40:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "31458:49:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2424, + "nodeType": "ExpressionStatement", + "src": "31458:49:4" + } + ] + } + }, + { + "expression": { + "argumentTypes": null, + "id": 2440, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2427, + "name": "ERC20balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 352, + "src": "31521:13:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + } + }, + "id": 2430, + "indexExpression": { + "argumentTypes": null, + "id": 2428, + "name": "_holder", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2395, + "src": "31535:7:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "31521:22:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 2431, + "indexExpression": { + "argumentTypes": null, + "id": 2429, + "name": "_collateralERC", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2403, + "src": "31544:14:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "31521:38:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2438, + "name": "payout", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2335, + "src": "31605:6:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2432, + "name": "ERC20balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 352, + "src": "31562:13:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + } + }, + "id": 2434, + "indexExpression": { + "argumentTypes": null, + "id": 2433, + "name": "_holder", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2395, + "src": "31576:7:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "31562:22:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 2436, + "indexExpression": { + "argumentTypes": null, + "id": 2435, + "name": "_collateralERC", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2403, + "src": "31585:14:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "31562:38:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2437, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 224, + "src": "31562:42:4", + "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": 2439, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "31562:50:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "31521:91:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2441, + "nodeType": "ExpressionStatement", + "src": "31521:91:4" + }, + { + "expression": { + "argumentTypes": null, + "id": 2455, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2442, + "name": "ERC20balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 352, + "src": "31619:13:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + } + }, + "id": 2445, + "indexExpression": { + "argumentTypes": null, + "id": 2443, + "name": "_writer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2387, + "src": "31633:7:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "31619:22:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 2446, + "indexExpression": { + "argumentTypes": null, + "id": 2444, + "name": "_collateralERC", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2403, + "src": "31642:14:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "31619:38:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2453, + "name": "payout", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2335, + "src": "31705:6:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2447, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "31660:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 2449, + "indexExpression": { + "argumentTypes": null, + "id": 2448, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2303, + "src": "31668:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "31660:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 2450, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "uintDetails", + "nodeType": "MemberAccess", + "referencedDeclaration": 343, + "src": "31660:29:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailUints_$313_storage", + "typeString": "struct SmartPiggies.DetailUints storage ref" + } + }, + "id": 2451, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "collateral", + "nodeType": "MemberAccess", + "referencedDeclaration": 300, + "src": "31660:40:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2452, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sub", + "nodeType": "MemberAccess", + "referencedDeclaration": 200, + "src": "31660:44:4", + "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": 2454, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "31660:52:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "31619:93:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2456, + "nodeType": "ExpressionStatement", + "src": "31619:93:4" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 2458, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2820, + "src": "31745:3:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 2459, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "31745:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 2460, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2303, + "src": "31764:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 2461, + "name": "payout", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2335, + "src": "31781:6:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2468, + "name": "payout", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2335, + "src": "31841:6:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2462, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "31796:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 2464, + "indexExpression": { + "argumentTypes": null, + "id": 2463, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2303, + "src": "31804:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "31796:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 2465, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "uintDetails", + "nodeType": "MemberAccess", + "referencedDeclaration": 343, + "src": "31796:29:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailUints_$313_storage", + "typeString": "struct SmartPiggies.DetailUints storage ref" + } + }, + "id": 2466, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "collateral", + "nodeType": "MemberAccess", + "referencedDeclaration": 300, + "src": "31796:40:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2467, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sub", + "nodeType": "MemberAccess", + "referencedDeclaration": 200, + "src": "31796:44:4", + "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": 2469, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "31796:52:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 2457, + "name": "SettlePiggy", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 487, + "src": "31725:11:4", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256,uint256,uint256)" + } + }, + "id": 2470, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "31725:130:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2471, + "nodeType": "EmitStatement", + "src": "31720:135:4" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2473, + "name": "_holder", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2395, + "src": "31892:7:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 2474, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2303, + "src": "31901:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 2472, + "name": "_removeTokenFromOwnedPiggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2635, + "src": "31863:28:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 2475, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "31863:47:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2476, + "nodeType": "ExpressionStatement", + "src": "31863:47:4" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2478, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2303, + "src": "31953:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 2477, + "name": "_resetPiggy", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2789, + "src": "31941:11:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$__$", + "typeString": "function (uint256)" + } + }, + "id": 2479, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "31941:21:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2480, + "nodeType": "ExpressionStatement", + "src": "31941:21:4" + }, + { + "expression": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 2481, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "31976:4:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 2307, + "id": 2482, + "nodeType": "Return", + "src": "31969:11:4" + } + ] + }, + "documentation": "@notice Calculate the settlement of ownership of option collateral\n@dev Throws if `_tokenId` is not a valid ERC-59 token.\nThrows if msg.sender is not one of: seller, owner of `_tokenId`.\nThrows if `hasSettlementPrice(_tokenId)` is false.\n[Option settlement math goes here for call / put situations]", + "id": 2484, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "settlePiggy", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2304, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2303, + "name": "_tokenId", + "nodeType": "VariableDeclaration", + "scope": 2484, + "src": "30371:16:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2302, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "30371:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "30370:18:4" + }, + "returnParameters": { + "id": 2307, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2306, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 2484, + "src": "30415:4:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 2305, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "30415:4:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "30414:6:4" + }, + "scope": 2805, + "src": "30350:1636:4", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 2553, + "nodeType": "Block", + "src": "32218:662:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2501, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2494, + "name": "_amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2488, + "src": "32232:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<=", + "rightExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2495, + "name": "ERC20balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 352, + "src": "32243:13:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + } + }, + "id": 2498, + "indexExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 2496, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2820, + "src": "32257:3:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 2497, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "32257:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "32243:25:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 2500, + "indexExpression": { + "argumentTypes": null, + "id": 2499, + "name": "_paymentToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2486, + "src": "32269:13:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "32243:40:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "32232:51:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "45524332302062616c616e6365206973206c657373207468616e2072657175657374656420616d6f756e74", + "id": 2502, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "32285:45:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_51156ee7569ad1608b3d15e92f97c8d5b717540394961195b6b25a691c5fccef", + "typeString": "literal_string \"ERC20 balance is less than requested amount\"" + }, + "value": "ERC20 balance is less than requested amount" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_51156ee7569ad1608b3d15e92f97c8d5b717540394961195b6b25a691c5fccef", + "typeString": "literal_string \"ERC20 balance is less than requested amount\"" + } + ], + "id": 2493, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2823, + 2824 + ], + "referencedDeclaration": 2824, + "src": "32224:7:4", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 2503, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "32224:107:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2504, + "nodeType": "ExpressionStatement", + "src": "32224:107:4" + }, + { + "expression": { + "argumentTypes": null, + "id": 2520, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2505, + "name": "ERC20balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 352, + "src": "32337:13:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + } + }, + "id": 2509, + "indexExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 2506, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2820, + "src": "32351:3:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 2507, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "32351:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "32337:25:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 2510, + "indexExpression": { + "argumentTypes": null, + "id": 2508, + "name": "_paymentToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2486, + "src": "32363:13:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "32337:40:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2518, + "name": "_amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2488, + "src": "32425:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2511, + "name": "ERC20balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 352, + "src": "32380:13:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + } + }, + "id": 2514, + "indexExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 2512, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2820, + "src": "32394:3:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 2513, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "32394:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "32380:25:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 2516, + "indexExpression": { + "argumentTypes": null, + "id": 2515, + "name": "_paymentToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2486, + "src": "32406:13:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "32380:40:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2517, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sub", + "nodeType": "MemberAccess", + "referencedDeclaration": 200, + "src": "32380:44:4", + "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": 2519, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "32380:53:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "32337:96:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2521, + "nodeType": "ExpressionStatement", + "src": "32337:96:4" + }, + { + "assignments": [ + 2523, + null + ], + "declarations": [ + { + "constant": false, + "id": 2523, + "name": "success", + "nodeType": "VariableDeclaration", + "scope": 2553, + "src": "32543:12:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 2522, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "32543:4:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + }, + null + ], + "id": 2538, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "7472616e7366657228616464726573732c75696e7432353629", + "id": 2532, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "32643:27:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_a9059cbb2ab09eb219583f4a59a5d0623ade346d962bcd4e46b11da047c9049b", + "typeString": "literal_string \"transfer(address,uint256)\"" + }, + "value": "transfer(address,uint256)" + }, + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 2533, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2820, + "src": "32680:3:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 2534, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "32680:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 2535, + "name": "_amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2488, + "src": "32700:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_a9059cbb2ab09eb219583f4a59a5d0623ade346d962bcd4e46b11da047c9049b", + "typeString": "literal_string \"transfer(address,uint256)\"" + }, + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 2530, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2807, + "src": "32610:3:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 2531, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "encodeWithSignature", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "32610:23:4", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$", + "typeString": "function (string memory) pure returns (bytes memory)" + } + }, + "id": 2536, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "32610:105:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2526, + "name": "_paymentToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2486, + "src": "32582:13:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 2525, + "name": "PaymentToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 274, + "src": "32569:12:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_PaymentToken_$274_$", + "typeString": "type(contract PaymentToken)" + } + }, + "id": 2527, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "32569:27:4", + "typeDescriptions": { + "typeIdentifier": "t_contract$_PaymentToken_$274", + "typeString": "contract PaymentToken" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_PaymentToken_$274", + "typeString": "contract PaymentToken" + } + ], + "id": 2524, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "32561:7:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 2528, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "32561:36:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 2529, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "call", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "32561:41:4", + "typeDescriptions": { + "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$", + "typeString": "function (bytes memory) payable returns (bool,bytes memory)" + } + }, + "id": 2537, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "32561:160:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$", + "typeString": "tuple(bool,bytes memory)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "32542:179:4" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2540, + "name": "success", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2523, + "src": "32735:7:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "455243323020746f6b656e207472616e73666572206661696c6564", + "id": 2541, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "32744:29:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_09d7cbc760a5fb9ceb7ce3a996d579f34d61d7bf70c73104e2b38c60f3738442", + "typeString": "literal_string \"ERC20 token transfer failed\"" + }, + "value": "ERC20 token transfer failed" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_09d7cbc760a5fb9ceb7ce3a996d579f34d61d7bf70c73104e2b38c60f3738442", + "typeString": "literal_string \"ERC20 token transfer failed\"" + } + ], + "id": 2539, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2823, + 2824 + ], + "referencedDeclaration": 2824, + "src": "32727:7:4", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 2542, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "32727:47:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2543, + "nodeType": "ExpressionStatement", + "src": "32727:47:4" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 2545, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2820, + "src": "32805:3:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 2546, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "32805:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 2547, + "name": "_amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2488, + "src": "32823:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 2548, + "name": "_paymentToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2486, + "src": "32838:13:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 2544, + "name": "ClaimPayout", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 495, + "src": "32786:11:4", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_address_$returns$__$", + "typeString": "function (address,uint256,address)" + } + }, + "id": 2549, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "32786:71:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2550, + "nodeType": "EmitStatement", + "src": "32781:76:4" + }, + { + "expression": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 2551, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "32871:4:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 2492, + "id": 2552, + "nodeType": "Return", + "src": "32864:11:4" + } + ] + }, + "documentation": null, + "id": 2554, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "claimPayout", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2489, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2486, + "name": "_paymentToken", + "nodeType": "VariableDeclaration", + "scope": 2554, + "src": "32146:21:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2485, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "32146:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2488, + "name": "_amount", + "nodeType": "VariableDeclaration", + "scope": 2554, + "src": "32169:15:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2487, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "32169:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "32145:40:4" + }, + "returnParameters": { + "id": 2492, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2491, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 2554, + "src": "32210:4:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 2490, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "32210:4:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "32209:6:4" + }, + "scope": 2805, + "src": "32125:755:4", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 2577, + "nodeType": "Block", + "src": "32962:103:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 2568, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2561, + "name": "ownedPiggiesIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 361, + "src": "32968:17:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$", + "typeString": "mapping(uint256 => uint256)" + } + }, + "id": 2563, + "indexExpression": { + "argumentTypes": null, + "id": 2562, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2558, + "src": "32986:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "32968:27:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2564, + "name": "ownedPiggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 357, + "src": "32998:12:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_uint256_$dyn_storage_$", + "typeString": "mapping(address => uint256[] storage ref)" + } + }, + "id": 2566, + "indexExpression": { + "argumentTypes": null, + "id": 2565, + "name": "_to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2556, + "src": "33011:3:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "32998:17:4", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage", + "typeString": "uint256[] storage ref" + } + }, + "id": 2567, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "32998:24:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "32968:54:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2569, + "nodeType": "ExpressionStatement", + "src": "32968:54:4" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2574, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2558, + "src": "33051:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2570, + "name": "ownedPiggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 357, + "src": "33028:12:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_uint256_$dyn_storage_$", + "typeString": "mapping(address => uint256[] storage ref)" + } + }, + "id": 2572, + "indexExpression": { + "argumentTypes": null, + "id": 2571, + "name": "_to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2556, + "src": "33041:3:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "33028:17:4", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage", + "typeString": "uint256[] storage ref" + } + }, + "id": 2573, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "push", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "33028:22:4", + "typeDescriptions": { + "typeIdentifier": "t_function_arraypush_nonpayable$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256) returns (uint256)" + } + }, + "id": 2575, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "33028:32:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2576, + "nodeType": "ExpressionStatement", + "src": "33028:32:4" + } + ] + }, + "documentation": null, + "id": 2578, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_addTokenToOwnedPiggies", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2559, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2556, + "name": "_to", + "nodeType": "VariableDeclaration", + "scope": 2578, + "src": "32917:11:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2555, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "32917:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2558, + "name": "_tokenId", + "nodeType": "VariableDeclaration", + "scope": 2578, + "src": "32930:16:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2557, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "32930:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "32916:31:4" + }, + "returnParameters": { + "id": 2560, + "nodeType": "ParameterList", + "parameters": [], + "src": "32962:0:4" + }, + "scope": 2805, + "src": "32884:181:4", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "private" + }, + { + "body": { + "id": 2634, + "nodeType": "Block", + "src": "33154:373:4", + "statements": [ + { + "assignments": [ + 2586 + ], + "declarations": [ + { + "constant": false, + "id": 2586, + "name": "lastTokenIndex", + "nodeType": "VariableDeclaration", + "scope": 2634, + "src": "33160:22:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2585, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "33160:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 2594, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "31", + "id": 2592, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "33216:1:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + } + ], + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2587, + "name": "ownedPiggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 357, + "src": "33185:12:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_uint256_$dyn_storage_$", + "typeString": "mapping(address => uint256[] storage ref)" + } + }, + "id": 2589, + "indexExpression": { + "argumentTypes": null, + "id": 2588, + "name": "_from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2580, + "src": "33198:5:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "33185:19:4", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage", + "typeString": "uint256[] storage ref" + } + }, + "id": 2590, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "33185:26:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2591, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sub", + "nodeType": "MemberAccess", + "referencedDeclaration": 200, + "src": "33185:30:4", + "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": 2593, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "33185:33:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "33160:58:4" + }, + { + "assignments": [ + 2596 + ], + "declarations": [ + { + "constant": false, + "id": 2596, + "name": "tokenIndex", + "nodeType": "VariableDeclaration", + "scope": 2634, + "src": "33224:18:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2595, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "33224:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 2600, + "initialValue": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2597, + "name": "ownedPiggiesIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 361, + "src": "33245:17:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$", + "typeString": "mapping(uint256 => uint256)" + } + }, + "id": 2599, + "indexExpression": { + "argumentTypes": null, + "id": 2598, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2582, + "src": "33263:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "33245:27:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "33224:48:4" + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2603, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2601, + "name": "tokenIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2596, + "src": "33283:10:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "id": 2602, + "name": "lastTokenIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2586, + "src": "33297:14:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "33283:28:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 2627, + "nodeType": "IfStatement", + "src": "33279:210:4", + "trueBody": { + "id": 2626, + "nodeType": "Block", + "src": "33313:176:4", + "statements": [ + { + "assignments": [ + 2605 + ], + "declarations": [ + { + "constant": false, + "id": 2605, + "name": "lastTokenId", + "nodeType": "VariableDeclaration", + "scope": 2626, + "src": "33321:19:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2604, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "33321:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 2611, + "initialValue": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2606, + "name": "ownedPiggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 357, + "src": "33343:12:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_uint256_$dyn_storage_$", + "typeString": "mapping(address => uint256[] storage ref)" + } + }, + "id": 2608, + "indexExpression": { + "argumentTypes": null, + "id": 2607, + "name": "_from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2580, + "src": "33356:5:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "33343:19:4", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage", + "typeString": "uint256[] storage ref" + } + }, + "id": 2610, + "indexExpression": { + "argumentTypes": null, + "id": 2609, + "name": "lastTokenIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2586, + "src": "33363:14:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "33343:35:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "33321:57:4" + }, + { + "expression": { + "argumentTypes": null, + "id": 2618, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2612, + "name": "ownedPiggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 357, + "src": "33386:12:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_uint256_$dyn_storage_$", + "typeString": "mapping(address => uint256[] storage ref)" + } + }, + "id": 2615, + "indexExpression": { + "argumentTypes": null, + "id": 2613, + "name": "_from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2580, + "src": "33399:5:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "33386:19:4", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage", + "typeString": "uint256[] storage ref" + } + }, + "id": 2616, + "indexExpression": { + "argumentTypes": null, + "id": 2614, + "name": "tokenIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2596, + "src": "33406:10:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "33386:31:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 2617, + "name": "lastTokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2605, + "src": "33420:11:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "33386:45:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2619, + "nodeType": "ExpressionStatement", + "src": "33386:45:4" + }, + { + "expression": { + "argumentTypes": null, + "id": 2624, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2620, + "name": "ownedPiggiesIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 361, + "src": "33439:17:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$", + "typeString": "mapping(uint256 => uint256)" + } + }, + "id": 2622, + "indexExpression": { + "argumentTypes": null, + "id": 2621, + "name": "lastTokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2605, + "src": "33457:11:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "33439:30:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 2623, + "name": "tokenIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2596, + "src": "33472:10:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "33439:43:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2625, + "nodeType": "ExpressionStatement", + "src": "33439:43:4" + } + ] + } + }, + { + "expression": { + "argumentTypes": null, + "id": 2632, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "--", + "prefix": false, + "src": "33494:28:4", + "subExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2628, + "name": "ownedPiggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 357, + "src": "33494:12:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_uint256_$dyn_storage_$", + "typeString": "mapping(address => uint256[] storage ref)" + } + }, + "id": 2630, + "indexExpression": { + "argumentTypes": null, + "id": 2629, + "name": "_from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2580, + "src": "33507:5:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "33494:19:4", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage", + "typeString": "uint256[] storage ref" + } + }, + "id": 2631, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "33494:26:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2633, + "nodeType": "ExpressionStatement", + "src": "33494:28:4" + } + ] + }, + "documentation": null, + "id": 2635, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_removeTokenFromOwnedPiggies", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2583, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2580, + "name": "_from", + "nodeType": "VariableDeclaration", + "scope": 2635, + "src": "33107:13:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2579, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "33107:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2582, + "name": "_tokenId", + "nodeType": "VariableDeclaration", + "scope": 2635, + "src": "33122:16:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2581, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "33122:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "33106:33:4" + }, + "returnParameters": { + "id": 2584, + "nodeType": "ParameterList", + "parameters": [], + "src": "33154:0:4" + }, + "scope": 2805, + "src": "33069:458:4", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "private" + }, + { + "body": { + "id": 2788, + "nodeType": "Block", + "src": "33584:903:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 2648, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2640, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "33590:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 2642, + "indexExpression": { + "argumentTypes": null, + "id": 2641, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2637, + "src": "33598:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "33590:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 2643, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "addresses", + "nodeType": "MemberAccess", + "referencedDeclaration": 341, + "src": "33590:27:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAddresses_$298_storage", + "typeString": "struct SmartPiggies.DetailAddresses storage ref" + } + }, + "id": 2644, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "writer", + "nodeType": "MemberAccess", + "referencedDeclaration": 287, + "src": "33590:34:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 2646, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "33635: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": 2645, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "33627:7:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 2647, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "33627:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "33590:47:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 2649, + "nodeType": "ExpressionStatement", + "src": "33590:47:4" + }, + { + "expression": { + "argumentTypes": null, + "id": 2658, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2650, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "33643:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 2652, + "indexExpression": { + "argumentTypes": null, + "id": 2651, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2637, + "src": "33651:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "33643:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 2653, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "addresses", + "nodeType": "MemberAccess", + "referencedDeclaration": 341, + "src": "33643:27:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAddresses_$298_storage", + "typeString": "struct SmartPiggies.DetailAddresses storage ref" + } + }, + "id": 2654, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "holder", + "nodeType": "MemberAccess", + "referencedDeclaration": 289, + "src": "33643:34:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 2656, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "33688: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": 2655, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "33680:7:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 2657, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "33680:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "33643:47:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 2659, + "nodeType": "ExpressionStatement", + "src": "33643:47:4" + }, + { + "expression": { + "argumentTypes": null, + "id": 2668, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2660, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "33696:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 2662, + "indexExpression": { + "argumentTypes": null, + "id": 2661, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2637, + "src": "33704:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "33696:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 2663, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "addresses", + "nodeType": "MemberAccess", + "referencedDeclaration": 341, + "src": "33696:27:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAddresses_$298_storage", + "typeString": "struct SmartPiggies.DetailAddresses storage ref" + } + }, + "id": 2664, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "collateralERC", + "nodeType": "MemberAccess", + "referencedDeclaration": 291, + "src": "33696:41:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 2666, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "33748: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": 2665, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "33740:7:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 2667, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "33740:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "33696:54:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 2669, + "nodeType": "ExpressionStatement", + "src": "33696:54:4" + }, + { + "expression": { + "argumentTypes": null, + "id": 2678, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2670, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "33756:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 2672, + "indexExpression": { + "argumentTypes": null, + "id": 2671, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2637, + "src": "33764:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "33756:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 2673, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "addresses", + "nodeType": "MemberAccess", + "referencedDeclaration": 341, + "src": "33756:27:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAddresses_$298_storage", + "typeString": "struct SmartPiggies.DetailAddresses storage ref" + } + }, + "id": 2674, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "premiumERC", + "nodeType": "MemberAccess", + "referencedDeclaration": 293, + "src": "33756:38:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 2676, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "33805: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": 2675, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "33797:7:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 2677, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "33797:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "33756:51:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 2679, + "nodeType": "ExpressionStatement", + "src": "33756:51:4" + }, + { + "expression": { + "argumentTypes": null, + "id": 2688, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2680, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "33813:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 2682, + "indexExpression": { + "argumentTypes": null, + "id": 2681, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2637, + "src": "33821:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "33813:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 2683, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "addresses", + "nodeType": "MemberAccess", + "referencedDeclaration": 341, + "src": "33813:27:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAddresses_$298_storage", + "typeString": "struct SmartPiggies.DetailAddresses storage ref" + } + }, + "id": 2684, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "dataResolverNow", + "nodeType": "MemberAccess", + "referencedDeclaration": 295, + "src": "33813:43:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 2686, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "33867: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": 2685, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "33859:7:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 2687, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "33859:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "33813:56:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 2689, + "nodeType": "ExpressionStatement", + "src": "33813:56:4" + }, + { + "expression": { + "argumentTypes": null, + "id": 2698, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2690, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "33875:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 2692, + "indexExpression": { + "argumentTypes": null, + "id": 2691, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2637, + "src": "33883:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "33875:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 2693, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "addresses", + "nodeType": "MemberAccess", + "referencedDeclaration": 341, + "src": "33875:27:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAddresses_$298_storage", + "typeString": "struct SmartPiggies.DetailAddresses storage ref" + } + }, + "id": 2694, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "dataResolverAtExpiry", + "nodeType": "MemberAccess", + "referencedDeclaration": 297, + "src": "33875:48:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 2696, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "33934: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": 2695, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "33926:7:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 2697, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "33926:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "33875:61:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 2699, + "nodeType": "ExpressionStatement", + "src": "33875:61:4" + }, + { + "expression": { + "argumentTypes": null, + "id": 2706, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2700, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "33942:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 2702, + "indexExpression": { + "argumentTypes": null, + "id": 2701, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2637, + "src": "33950:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "33942:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 2703, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "uintDetails", + "nodeType": "MemberAccess", + "referencedDeclaration": 343, + "src": "33942:29:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailUints_$313_storage", + "typeString": "struct SmartPiggies.DetailUints storage ref" + } + }, + "id": 2704, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "collateral", + "nodeType": "MemberAccess", + "referencedDeclaration": 300, + "src": "33942:40:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "30", + "id": 2705, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "33985:1:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "33942:44:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2707, + "nodeType": "ExpressionStatement", + "src": "33942:44:4" + }, + { + "expression": { + "argumentTypes": null, + "id": 2714, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2708, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "33992:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 2710, + "indexExpression": { + "argumentTypes": null, + "id": 2709, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2637, + "src": "34000:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "33992:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 2711, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "uintDetails", + "nodeType": "MemberAccess", + "referencedDeclaration": 343, + "src": "33992:29:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailUints_$313_storage", + "typeString": "struct SmartPiggies.DetailUints storage ref" + } + }, + "id": 2712, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "lotSize", + "nodeType": "MemberAccess", + "referencedDeclaration": 302, + "src": "33992:37:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "30", + "id": 2713, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "34032:1:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "33992:41:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2715, + "nodeType": "ExpressionStatement", + "src": "33992:41:4" + }, + { + "expression": { + "argumentTypes": null, + "id": 2722, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2716, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "34039:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 2718, + "indexExpression": { + "argumentTypes": null, + "id": 2717, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2637, + "src": "34047:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "34039:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 2719, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "uintDetails", + "nodeType": "MemberAccess", + "referencedDeclaration": 343, + "src": "34039:29:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailUints_$313_storage", + "typeString": "struct SmartPiggies.DetailUints storage ref" + } + }, + "id": 2720, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "strikePrice", + "nodeType": "MemberAccess", + "referencedDeclaration": 304, + "src": "34039:41:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "30", + "id": 2721, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "34083:1:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "34039:45:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2723, + "nodeType": "ExpressionStatement", + "src": "34039:45:4" + }, + { + "expression": { + "argumentTypes": null, + "id": 2730, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2724, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "34090:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 2726, + "indexExpression": { + "argumentTypes": null, + "id": 2725, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2637, + "src": "34098:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "34090:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 2727, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "uintDetails", + "nodeType": "MemberAccess", + "referencedDeclaration": 343, + "src": "34090:29:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailUints_$313_storage", + "typeString": "struct SmartPiggies.DetailUints storage ref" + } + }, + "id": 2728, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "expiry", + "nodeType": "MemberAccess", + "referencedDeclaration": 306, + "src": "34090:36:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "30", + "id": 2729, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "34129:1:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "34090:40:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2731, + "nodeType": "ExpressionStatement", + "src": "34090:40:4" + }, + { + "expression": { + "argumentTypes": null, + "id": 2738, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2732, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "34136:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 2734, + "indexExpression": { + "argumentTypes": null, + "id": 2733, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2637, + "src": "34144:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "34136:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 2735, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "uintDetails", + "nodeType": "MemberAccess", + "referencedDeclaration": 343, + "src": "34136:29:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailUints_$313_storage", + "typeString": "struct SmartPiggies.DetailUints storage ref" + } + }, + "id": 2736, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "settlementPrice", + "nodeType": "MemberAccess", + "referencedDeclaration": 308, + "src": "34136:45:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "30", + "id": 2737, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "34184:1:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "34136:49:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2739, + "nodeType": "ExpressionStatement", + "src": "34136:49:4" + }, + { + "expression": { + "argumentTypes": null, + "id": 2746, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2740, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "34191:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 2742, + "indexExpression": { + "argumentTypes": null, + "id": 2741, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2637, + "src": "34199:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "34191:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 2743, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "uintDetails", + "nodeType": "MemberAccess", + "referencedDeclaration": 343, + "src": "34191:29:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailUints_$313_storage", + "typeString": "struct SmartPiggies.DetailUints storage ref" + } + }, + "id": 2744, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "reqCollateral", + "nodeType": "MemberAccess", + "referencedDeclaration": 310, + "src": "34191:43:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "30", + "id": 2745, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "34237:1:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "34191:47:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2747, + "nodeType": "ExpressionStatement", + "src": "34191:47:4" + }, + { + "expression": { + "argumentTypes": null, + "id": 2754, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2748, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "34244:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 2750, + "indexExpression": { + "argumentTypes": null, + "id": 2749, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2637, + "src": "34252:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "34244:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 2751, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "uintDetails", + "nodeType": "MemberAccess", + "referencedDeclaration": 343, + "src": "34244:29:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailUints_$313_storage", + "typeString": "struct SmartPiggies.DetailUints storage ref" + } + }, + "id": 2752, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "collateralDecimals", + "nodeType": "MemberAccess", + "referencedDeclaration": 312, + "src": "34244:48:4", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "30", + "id": 2753, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "34295:1:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "34244:52:4", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "id": 2755, + "nodeType": "ExpressionStatement", + "src": "34244:52:4" + }, + { + "expression": { + "argumentTypes": null, + "id": 2762, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2756, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "34302:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 2758, + "indexExpression": { + "argumentTypes": null, + "id": 2757, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2637, + "src": "34310:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "34302:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 2759, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "flags", + "nodeType": "MemberAccess", + "referencedDeclaration": 345, + "src": "34302:23:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BoolFlags_$322_storage", + "typeString": "struct SmartPiggies.BoolFlags storage ref" + } + }, + "id": 2760, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "isRequest", + "nodeType": "MemberAccess", + "referencedDeclaration": 315, + "src": "34302:33:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "66616c7365", + "id": 2761, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "34338:5:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "src": "34302:41:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2763, + "nodeType": "ExpressionStatement", + "src": "34302:41:4" + }, + { + "expression": { + "argumentTypes": null, + "id": 2770, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2764, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "34349:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 2766, + "indexExpression": { + "argumentTypes": null, + "id": 2765, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2637, + "src": "34357:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "34349:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 2767, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "flags", + "nodeType": "MemberAccess", + "referencedDeclaration": 345, + "src": "34349:23:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BoolFlags_$322_storage", + "typeString": "struct SmartPiggies.BoolFlags storage ref" + } + }, + "id": 2768, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "isEuro", + "nodeType": "MemberAccess", + "referencedDeclaration": 317, + "src": "34349:30:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "66616c7365", + "id": 2769, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "34382:5:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "src": "34349:38:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2771, + "nodeType": "ExpressionStatement", + "src": "34349:38:4" + }, + { + "expression": { + "argumentTypes": null, + "id": 2778, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2772, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "34393:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 2774, + "indexExpression": { + "argumentTypes": null, + "id": 2773, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2637, + "src": "34401:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "34393:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 2775, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "flags", + "nodeType": "MemberAccess", + "referencedDeclaration": 345, + "src": "34393:23:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BoolFlags_$322_storage", + "typeString": "struct SmartPiggies.BoolFlags storage ref" + } + }, + "id": 2776, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "isPut", + "nodeType": "MemberAccess", + "referencedDeclaration": 319, + "src": "34393:29:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "66616c7365", + "id": 2777, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "34425:5:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "src": "34393:37:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2779, + "nodeType": "ExpressionStatement", + "src": "34393:37:4" + }, + { + "expression": { + "argumentTypes": null, + "id": 2786, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2780, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "34436:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 2782, + "indexExpression": { + "argumentTypes": null, + "id": 2781, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2637, + "src": "34444:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "34436:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 2783, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "flags", + "nodeType": "MemberAccess", + "referencedDeclaration": 345, + "src": "34436:23:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BoolFlags_$322_storage", + "typeString": "struct SmartPiggies.BoolFlags storage ref" + } + }, + "id": 2784, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "hasBeenCleared", + "nodeType": "MemberAccess", + "referencedDeclaration": 321, + "src": "34436:38:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "66616c7365", + "id": 2785, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "34477:5:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "src": "34436:46:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2787, + "nodeType": "ExpressionStatement", + "src": "34436:46:4" + } + ] + }, + "documentation": null, + "id": 2789, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_resetPiggy", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2638, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2637, + "name": "_tokenId", + "nodeType": "VariableDeclaration", + "scope": 2789, + "src": "33552:16:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2636, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "33552:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "33551:18:4" + }, + "returnParameters": { + "id": 2639, + "nodeType": "ParameterList", + "parameters": [], + "src": "33584:0:4" + }, + "scope": 2805, + "src": "33531:956:4", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "private" + }, + { + "body": { + "id": 2803, + "nodeType": "Block", + "src": "34520:64:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + "id": 2796, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 2793, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2820, + "src": "34534:3:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 2794, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "34534:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 2795, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 283, + "src": "34548:5:4", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "34534:19:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 2792, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2823, + 2824 + ], + "referencedDeclaration": 2823, + "src": "34526:7:4", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 2797, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "34526:28:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2798, + "nodeType": "ExpressionStatement", + "src": "34526:28:4" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2800, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 283, + "src": "34573:5:4", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "id": 2799, + "name": "selfdestruct", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2828, + "src": "34560:12:4", + "typeDescriptions": { + "typeIdentifier": "t_function_selfdestruct_nonpayable$_t_address_payable_$returns$__$", + "typeString": "function (address payable)" + } + }, + "id": 2801, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "34560:19:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2802, + "nodeType": "ExpressionStatement", + "src": "34560:19:4" + } + ] + }, + "documentation": null, + "id": 2804, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "kill", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2790, + "nodeType": "ParameterList", + "parameters": [], + "src": "34504:2:4" + }, + "returnParameters": { + "id": 2791, + "nodeType": "ParameterList", + "parameters": [], + "src": "34520:0:4" + }, + "scope": 2805, + "src": "34491:93:4", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + } + ], + "scope": 2806, + "src": "1368:33218:4" + } + ], + "src": "750:33837:4" + }, + "compiler": { + "name": "solc", + "version": "0.5.2+commit.1df8f40c.Emscripten.clang" + }, + "networks": {}, + "schemaVersion": "3.0.2", + "updatedAt": "2019-04-26T14:47:45.671Z", + "devdoc": { + "methods": {} + }, + "userdoc": { + "methods": {} + } +} \ No newline at end of file diff --git a/app/src/contracts/SafeMath.json b/app/src/contracts/SafeMath.json new file mode 100644 index 0000000..a5a3b71 --- /dev/null +++ b/app/src/contracts/SafeMath.json @@ -0,0 +1,3287 @@ +{ + "contractName": "SafeMath", + "abi": [], + "bytecode": "0x604c602c600b82828239805160001a60731460008114601c57601e565bfe5b5030600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea165627a7a72305820c25f96addeba61483f8e06157954499cb3156cb4d8f8567e7b34285206fb3f9d0029", + "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea165627a7a72305820c25f96addeba61483f8e06157954499cb3156cb4d8f8567e7b34285206fb3f9d0029", + "sourceMap": "125:1737:3:-;;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", + "deployedSourceMap": "125:1737:3:-;;;;;;;;", + "source": "pragma solidity ^0.5.2;\n\n/**\n * @title SafeMath\n * @dev Unsigned math operations with safety checks that revert on error\n */\nlibrary SafeMath {\n /**\n * @dev Multiplies two unsigned integers, reverts on overflow.\n */\n function mul(uint256 a, uint256 b) internal pure returns (uint256) {\n // Gas optimization: this is cheaper than requiring 'a' not being zero, but the\n // benefit is lost if 'b' is also tested.\n // See: https://github.com/OpenZeppelin/openzeppelin-solidity/pull/522\n if (a == 0) {\n return 0;\n }\n\n uint256 c = a * b;\n require(c / a == b);\n\n return c;\n }\n\n /**\n * @dev Integer division of two unsigned integers truncating the quotient, reverts on division by zero.\n */\n function div(uint256 a, uint256 b) internal pure returns (uint256) {\n // Solidity only automatically asserts when dividing by 0\n require(b > 0);\n uint256 c = a / b;\n // assert(a == b * c + a % b); // There is no case in which this doesn't hold\n\n return c;\n }\n\n /**\n * @dev Subtracts two unsigned integers, reverts on overflow (i.e. if subtrahend is greater than minuend).\n */\n function sub(uint256 a, uint256 b) internal pure returns (uint256) {\n require(b <= a);\n uint256 c = a - b;\n\n return c;\n }\n\n /**\n * @dev Adds two unsigned integers, reverts on overflow.\n */\n function add(uint256 a, uint256 b) internal pure returns (uint256) {\n uint256 c = a + b;\n require(c >= a);\n\n return c;\n }\n\n /**\n * @dev Divides two unsigned integers and returns the remainder (unsigned integer modulo),\n * reverts when dividing by zero.\n */\n function mod(uint256 a, uint256 b) internal pure returns (uint256) {\n require(b != 0);\n return a % b;\n }\n}\n", + "sourcePath": "/home/vagrant/DAPPS/smartpiggiesGithub/amerigo/explorer/contracts/SafeMath.sol", + "ast": { + "absolutePath": "/home/vagrant/DAPPS/smartpiggiesGithub/amerigo/explorer/contracts/SafeMath.sol", + "exportedSymbols": { + "SafeMath": [ + 245 + ] + }, + "id": 246, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 119, + "literals": [ + "solidity", + "^", + "0.5", + ".2" + ], + "nodeType": "PragmaDirective", + "src": "0:23:3" + }, + { + "baseContracts": [], + "contractDependencies": [], + "contractKind": "library", + "documentation": "@title SafeMath\n@dev Unsigned math operations with safety checks that revert on error", + "fullyImplemented": true, + "id": 245, + "linearizedBaseContracts": [ + 245 + ], + "name": "SafeMath", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": { + "id": 151, + "nodeType": "Block", + "src": "298:354:3", + "statements": [ + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 130, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 128, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 121, + "src": "529:1:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 129, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "534:1:3", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "529:6:3", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 134, + "nodeType": "IfStatement", + "src": "525:45:3", + "trueBody": { + "id": 133, + "nodeType": "Block", + "src": "537:33:3", + "statements": [ + { + "expression": { + "argumentTypes": null, + "hexValue": "30", + "id": 131, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "558:1:3", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "functionReturnParameters": 127, + "id": 132, + "nodeType": "Return", + "src": "551:8:3" + } + ] + } + }, + { + "assignments": [ + 136 + ], + "declarations": [ + { + "constant": false, + "id": 136, + "name": "c", + "nodeType": "VariableDeclaration", + "scope": 151, + "src": "580:9:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 135, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "580:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 140, + "initialValue": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 139, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 137, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 121, + "src": "592:1:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "argumentTypes": null, + "id": 138, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 123, + "src": "596:1:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "592:5:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "580:17:3" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 146, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 144, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 142, + "name": "c", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 136, + "src": "615:1:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "argumentTypes": null, + "id": 143, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 121, + "src": "619:1:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "615:5:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 145, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 123, + "src": "624:1:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "615:10:3", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 141, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2823, + 2824 + ], + "referencedDeclaration": 2823, + "src": "607:7:3", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 147, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "607:19:3", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 148, + "nodeType": "ExpressionStatement", + "src": "607:19:3" + }, + { + "expression": { + "argumentTypes": null, + "id": 149, + "name": "c", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 136, + "src": "644:1:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 127, + "id": 150, + "nodeType": "Return", + "src": "637:8:3" + } + ] + }, + "documentation": "@dev Multiplies two unsigned integers, reverts on overflow.", + "id": 152, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "mul", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 124, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 121, + "name": "a", + "nodeType": "VariableDeclaration", + "scope": 152, + "src": "244:9:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 120, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "244:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 123, + "name": "b", + "nodeType": "VariableDeclaration", + "scope": 152, + "src": "255:9:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 122, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "255:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "243:22:3" + }, + "returnParameters": { + "id": 127, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 126, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 152, + "src": "289:7:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 125, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "289:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "288:9:3" + }, + "scope": 245, + "src": "231:421:3", + "stateMutability": "pure", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 175, + "nodeType": "Block", + "src": "849:229:3", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 164, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 162, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 156, + "src": "933:1:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 163, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "937:1:3", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "933:5:3", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 161, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2823, + 2824 + ], + "referencedDeclaration": 2823, + "src": "925:7:3", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 165, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "925:14:3", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 166, + "nodeType": "ExpressionStatement", + "src": "925:14:3" + }, + { + "assignments": [ + 168 + ], + "declarations": [ + { + "constant": false, + "id": 168, + "name": "c", + "nodeType": "VariableDeclaration", + "scope": 175, + "src": "949:9:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 167, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "949:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 172, + "initialValue": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 171, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 169, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 154, + "src": "961:1:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "argumentTypes": null, + "id": 170, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 156, + "src": "965:1:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "961:5:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "949:17:3" + }, + { + "expression": { + "argumentTypes": null, + "id": 173, + "name": "c", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 168, + "src": "1070:1:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 160, + "id": 174, + "nodeType": "Return", + "src": "1063:8:3" + } + ] + }, + "documentation": "@dev Integer division of two unsigned integers truncating the quotient, reverts on division by zero.", + "id": 176, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "div", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 157, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 154, + "name": "a", + "nodeType": "VariableDeclaration", + "scope": 176, + "src": "795:9:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 153, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "795:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 156, + "name": "b", + "nodeType": "VariableDeclaration", + "scope": 176, + "src": "806:9:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 155, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "806:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "794:22:3" + }, + "returnParameters": { + "id": 160, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 159, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 176, + "src": "840:7:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 158, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "840:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "839:9:3" + }, + "scope": 245, + "src": "782:296:3", + "stateMutability": "pure", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 199, + "nodeType": "Block", + "src": "1278:78:3", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 188, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 186, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 180, + "src": "1296:1:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<=", + "rightExpression": { + "argumentTypes": null, + "id": 187, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 178, + "src": "1301:1:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1296:6:3", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 185, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2823, + 2824 + ], + "referencedDeclaration": 2823, + "src": "1288:7:3", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 189, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1288:15:3", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 190, + "nodeType": "ExpressionStatement", + "src": "1288:15:3" + }, + { + "assignments": [ + 192 + ], + "declarations": [ + { + "constant": false, + "id": 192, + "name": "c", + "nodeType": "VariableDeclaration", + "scope": 199, + "src": "1313:9:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 191, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1313:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 196, + "initialValue": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 195, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 193, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 178, + "src": "1325:1:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "argumentTypes": null, + "id": 194, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 180, + "src": "1329:1:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1325:5:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "1313:17:3" + }, + { + "expression": { + "argumentTypes": null, + "id": 197, + "name": "c", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 192, + "src": "1348:1:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 184, + "id": 198, + "nodeType": "Return", + "src": "1341:8:3" + } + ] + }, + "documentation": "@dev Subtracts two unsigned integers, reverts on overflow (i.e. if subtrahend is greater than minuend).", + "id": 200, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "sub", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 181, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 178, + "name": "a", + "nodeType": "VariableDeclaration", + "scope": 200, + "src": "1224:9:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 177, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1224:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 180, + "name": "b", + "nodeType": "VariableDeclaration", + "scope": 200, + "src": "1235:9:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 179, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1235:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1223:22:3" + }, + "returnParameters": { + "id": 184, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 183, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 200, + "src": "1269:7:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 182, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1269:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1268:9:3" + }, + "scope": 245, + "src": "1211:145:3", + "stateMutability": "pure", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 223, + "nodeType": "Block", + "src": "1506:78:3", + "statements": [ + { + "assignments": [ + 210 + ], + "declarations": [ + { + "constant": false, + "id": 210, + "name": "c", + "nodeType": "VariableDeclaration", + "scope": 223, + "src": "1516:9:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 209, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1516:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 214, + "initialValue": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 213, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 211, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 202, + "src": "1528:1:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "argumentTypes": null, + "id": 212, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 204, + "src": "1532:1:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1528:5:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "1516:17:3" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 218, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 216, + "name": "c", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 210, + "src": "1551:1:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "argumentTypes": null, + "id": 217, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 202, + "src": "1556:1:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1551:6:3", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 215, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2823, + 2824 + ], + "referencedDeclaration": 2823, + "src": "1543:7:3", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 219, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1543:15:3", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 220, + "nodeType": "ExpressionStatement", + "src": "1543:15:3" + }, + { + "expression": { + "argumentTypes": null, + "id": 221, + "name": "c", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 210, + "src": "1576:1:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 208, + "id": 222, + "nodeType": "Return", + "src": "1569:8:3" + } + ] + }, + "documentation": "@dev Adds two unsigned integers, reverts on overflow.", + "id": 224, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "add", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 205, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 202, + "name": "a", + "nodeType": "VariableDeclaration", + "scope": 224, + "src": "1452:9:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 201, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1452:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 204, + "name": "b", + "nodeType": "VariableDeclaration", + "scope": 224, + "src": "1463:9:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 203, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1463:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1451:22:3" + }, + "returnParameters": { + "id": 208, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 207, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 224, + "src": "1497:7:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 206, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1497:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1496:9:3" + }, + "scope": 245, + "src": "1439:145:3", + "stateMutability": "pure", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 243, + "nodeType": "Block", + "src": "1806:54:3", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 236, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 234, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 228, + "src": "1824:1:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 235, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1829:1:3", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "1824:6:3", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 233, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2823, + 2824 + ], + "referencedDeclaration": 2823, + "src": "1816:7:3", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 237, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1816:15:3", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 238, + "nodeType": "ExpressionStatement", + "src": "1816:15:3" + }, + { + "expression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 241, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 239, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 226, + "src": "1848:1:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "%", + "rightExpression": { + "argumentTypes": null, + "id": 240, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 228, + "src": "1852:1:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1848:5:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 232, + "id": 242, + "nodeType": "Return", + "src": "1841:12:3" + } + ] + }, + "documentation": "@dev Divides two unsigned integers and returns the remainder (unsigned integer modulo),\nreverts when dividing by zero.", + "id": 244, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "mod", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 229, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 226, + "name": "a", + "nodeType": "VariableDeclaration", + "scope": 244, + "src": "1752:9:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 225, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1752:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 228, + "name": "b", + "nodeType": "VariableDeclaration", + "scope": 244, + "src": "1763:9:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 227, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1763:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1751:22:3" + }, + "returnParameters": { + "id": 232, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 231, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 244, + "src": "1797:7:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 230, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1797:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1796:9:3" + }, + "scope": 245, + "src": "1739:121:3", + "stateMutability": "pure", + "superFunction": null, + "visibility": "internal" + } + ], + "scope": 246, + "src": "125:1737:3" + } + ], + "src": "0:1863:3" + }, + "legacyAST": { + "absolutePath": "/home/vagrant/DAPPS/smartpiggiesGithub/amerigo/explorer/contracts/SafeMath.sol", + "exportedSymbols": { + "SafeMath": [ + 245 + ] + }, + "id": 246, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 119, + "literals": [ + "solidity", + "^", + "0.5", + ".2" + ], + "nodeType": "PragmaDirective", + "src": "0:23:3" + }, + { + "baseContracts": [], + "contractDependencies": [], + "contractKind": "library", + "documentation": "@title SafeMath\n@dev Unsigned math operations with safety checks that revert on error", + "fullyImplemented": true, + "id": 245, + "linearizedBaseContracts": [ + 245 + ], + "name": "SafeMath", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": { + "id": 151, + "nodeType": "Block", + "src": "298:354:3", + "statements": [ + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 130, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 128, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 121, + "src": "529:1:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 129, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "534:1:3", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "529:6:3", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 134, + "nodeType": "IfStatement", + "src": "525:45:3", + "trueBody": { + "id": 133, + "nodeType": "Block", + "src": "537:33:3", + "statements": [ + { + "expression": { + "argumentTypes": null, + "hexValue": "30", + "id": 131, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "558:1:3", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "functionReturnParameters": 127, + "id": 132, + "nodeType": "Return", + "src": "551:8:3" + } + ] + } + }, + { + "assignments": [ + 136 + ], + "declarations": [ + { + "constant": false, + "id": 136, + "name": "c", + "nodeType": "VariableDeclaration", + "scope": 151, + "src": "580:9:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 135, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "580:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 140, + "initialValue": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 139, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 137, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 121, + "src": "592:1:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "argumentTypes": null, + "id": 138, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 123, + "src": "596:1:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "592:5:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "580:17:3" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 146, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 144, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 142, + "name": "c", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 136, + "src": "615:1:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "argumentTypes": null, + "id": 143, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 121, + "src": "619:1:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "615:5:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 145, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 123, + "src": "624:1:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "615:10:3", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 141, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2823, + 2824 + ], + "referencedDeclaration": 2823, + "src": "607:7:3", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 147, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "607:19:3", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 148, + "nodeType": "ExpressionStatement", + "src": "607:19:3" + }, + { + "expression": { + "argumentTypes": null, + "id": 149, + "name": "c", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 136, + "src": "644:1:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 127, + "id": 150, + "nodeType": "Return", + "src": "637:8:3" + } + ] + }, + "documentation": "@dev Multiplies two unsigned integers, reverts on overflow.", + "id": 152, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "mul", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 124, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 121, + "name": "a", + "nodeType": "VariableDeclaration", + "scope": 152, + "src": "244:9:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 120, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "244:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 123, + "name": "b", + "nodeType": "VariableDeclaration", + "scope": 152, + "src": "255:9:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 122, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "255:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "243:22:3" + }, + "returnParameters": { + "id": 127, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 126, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 152, + "src": "289:7:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 125, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "289:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "288:9:3" + }, + "scope": 245, + "src": "231:421:3", + "stateMutability": "pure", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 175, + "nodeType": "Block", + "src": "849:229:3", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 164, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 162, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 156, + "src": "933:1:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 163, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "937:1:3", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "933:5:3", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 161, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2823, + 2824 + ], + "referencedDeclaration": 2823, + "src": "925:7:3", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 165, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "925:14:3", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 166, + "nodeType": "ExpressionStatement", + "src": "925:14:3" + }, + { + "assignments": [ + 168 + ], + "declarations": [ + { + "constant": false, + "id": 168, + "name": "c", + "nodeType": "VariableDeclaration", + "scope": 175, + "src": "949:9:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 167, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "949:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 172, + "initialValue": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 171, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 169, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 154, + "src": "961:1:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "argumentTypes": null, + "id": 170, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 156, + "src": "965:1:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "961:5:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "949:17:3" + }, + { + "expression": { + "argumentTypes": null, + "id": 173, + "name": "c", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 168, + "src": "1070:1:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 160, + "id": 174, + "nodeType": "Return", + "src": "1063:8:3" + } + ] + }, + "documentation": "@dev Integer division of two unsigned integers truncating the quotient, reverts on division by zero.", + "id": 176, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "div", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 157, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 154, + "name": "a", + "nodeType": "VariableDeclaration", + "scope": 176, + "src": "795:9:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 153, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "795:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 156, + "name": "b", + "nodeType": "VariableDeclaration", + "scope": 176, + "src": "806:9:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 155, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "806:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "794:22:3" + }, + "returnParameters": { + "id": 160, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 159, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 176, + "src": "840:7:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 158, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "840:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "839:9:3" + }, + "scope": 245, + "src": "782:296:3", + "stateMutability": "pure", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 199, + "nodeType": "Block", + "src": "1278:78:3", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 188, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 186, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 180, + "src": "1296:1:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<=", + "rightExpression": { + "argumentTypes": null, + "id": 187, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 178, + "src": "1301:1:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1296:6:3", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 185, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2823, + 2824 + ], + "referencedDeclaration": 2823, + "src": "1288:7:3", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 189, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1288:15:3", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 190, + "nodeType": "ExpressionStatement", + "src": "1288:15:3" + }, + { + "assignments": [ + 192 + ], + "declarations": [ + { + "constant": false, + "id": 192, + "name": "c", + "nodeType": "VariableDeclaration", + "scope": 199, + "src": "1313:9:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 191, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1313:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 196, + "initialValue": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 195, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 193, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 178, + "src": "1325:1:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "argumentTypes": null, + "id": 194, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 180, + "src": "1329:1:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1325:5:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "1313:17:3" + }, + { + "expression": { + "argumentTypes": null, + "id": 197, + "name": "c", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 192, + "src": "1348:1:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 184, + "id": 198, + "nodeType": "Return", + "src": "1341:8:3" + } + ] + }, + "documentation": "@dev Subtracts two unsigned integers, reverts on overflow (i.e. if subtrahend is greater than minuend).", + "id": 200, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "sub", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 181, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 178, + "name": "a", + "nodeType": "VariableDeclaration", + "scope": 200, + "src": "1224:9:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 177, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1224:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 180, + "name": "b", + "nodeType": "VariableDeclaration", + "scope": 200, + "src": "1235:9:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 179, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1235:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1223:22:3" + }, + "returnParameters": { + "id": 184, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 183, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 200, + "src": "1269:7:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 182, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1269:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1268:9:3" + }, + "scope": 245, + "src": "1211:145:3", + "stateMutability": "pure", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 223, + "nodeType": "Block", + "src": "1506:78:3", + "statements": [ + { + "assignments": [ + 210 + ], + "declarations": [ + { + "constant": false, + "id": 210, + "name": "c", + "nodeType": "VariableDeclaration", + "scope": 223, + "src": "1516:9:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 209, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1516:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 214, + "initialValue": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 213, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 211, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 202, + "src": "1528:1:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "argumentTypes": null, + "id": 212, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 204, + "src": "1532:1:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1528:5:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "1516:17:3" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 218, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 216, + "name": "c", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 210, + "src": "1551:1:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "argumentTypes": null, + "id": 217, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 202, + "src": "1556:1:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1551:6:3", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 215, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2823, + 2824 + ], + "referencedDeclaration": 2823, + "src": "1543:7:3", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 219, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1543:15:3", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 220, + "nodeType": "ExpressionStatement", + "src": "1543:15:3" + }, + { + "expression": { + "argumentTypes": null, + "id": 221, + "name": "c", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 210, + "src": "1576:1:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 208, + "id": 222, + "nodeType": "Return", + "src": "1569:8:3" + } + ] + }, + "documentation": "@dev Adds two unsigned integers, reverts on overflow.", + "id": 224, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "add", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 205, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 202, + "name": "a", + "nodeType": "VariableDeclaration", + "scope": 224, + "src": "1452:9:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 201, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1452:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 204, + "name": "b", + "nodeType": "VariableDeclaration", + "scope": 224, + "src": "1463:9:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 203, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1463:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1451:22:3" + }, + "returnParameters": { + "id": 208, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 207, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 224, + "src": "1497:7:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 206, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1497:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1496:9:3" + }, + "scope": 245, + "src": "1439:145:3", + "stateMutability": "pure", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 243, + "nodeType": "Block", + "src": "1806:54:3", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 236, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 234, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 228, + "src": "1824:1:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 235, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1829:1:3", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "1824:6:3", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 233, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2823, + 2824 + ], + "referencedDeclaration": 2823, + "src": "1816:7:3", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 237, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1816:15:3", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 238, + "nodeType": "ExpressionStatement", + "src": "1816:15:3" + }, + { + "expression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 241, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 239, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 226, + "src": "1848:1:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "%", + "rightExpression": { + "argumentTypes": null, + "id": 240, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 228, + "src": "1852:1:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1848:5:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 232, + "id": 242, + "nodeType": "Return", + "src": "1841:12:3" + } + ] + }, + "documentation": "@dev Divides two unsigned integers and returns the remainder (unsigned integer modulo),\nreverts when dividing by zero.", + "id": 244, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "mod", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 229, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 226, + "name": "a", + "nodeType": "VariableDeclaration", + "scope": 244, + "src": "1752:9:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 225, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1752:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 228, + "name": "b", + "nodeType": "VariableDeclaration", + "scope": 244, + "src": "1763:9:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 227, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1763:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1751:22:3" + }, + "returnParameters": { + "id": 232, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 231, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 244, + "src": "1797:7:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 230, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1797:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1796:9:3" + }, + "scope": 245, + "src": "1739:121:3", + "stateMutability": "pure", + "superFunction": null, + "visibility": "internal" + } + ], + "scope": 246, + "src": "125:1737:3" + } + ], + "src": "0:1863:3" + }, + "compiler": { + "name": "solc", + "version": "0.5.2+commit.1df8f40c.Emscripten.clang" + }, + "networks": {}, + "schemaVersion": "3.0.2", + "updatedAt": "2019-04-26T14:47:45.702Z", + "devdoc": { + "details": "Unsigned math operations with safety checks that revert on error", + "methods": {}, + "title": "SafeMath" + }, + "userdoc": { + "methods": {} + } +} \ No newline at end of file diff --git a/app/src/contracts/SmartPiggies.json b/app/src/contracts/SmartPiggies.json new file mode 100644 index 0000000..7e042c7 --- /dev/null +++ b/app/src/contracts/SmartPiggies.json @@ -0,0 +1,70966 @@ +{ + "contractName": "SmartPiggies", + "abi": [ + { + "constant": true, + "inputs": [ + { + "name": "interfaceId", + "type": "bytes4" + } + ], + "name": "supportsInterface", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "tokenId", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "from", + "type": "address" + }, + { + "indexed": true, + "name": "tokenId", + "type": "uint256" + }, + { + "indexed": true, + "name": "strike", + "type": "uint256" + }, + { + "indexed": false, + "name": "expiryBlock", + "type": "uint256" + }, + { + "indexed": false, + "name": "RFP", + "type": "bool" + } + ], + "name": "CreatePiggy", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "from", + "type": "address" + }, + { + "indexed": true, + "name": "to", + "type": "address" + }, + { + "indexed": true, + "name": "tokenId", + "type": "uint256" + } + ], + "name": "TransferPiggy", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "from", + "type": "address" + }, + { + "indexed": true, + "name": "tokenId", + "type": "uint256" + }, + { + "indexed": false, + "name": "collateralERC", + "type": "address" + }, + { + "indexed": false, + "name": "premiumERC", + "type": "address" + }, + { + "indexed": false, + "name": "dataResolverNow", + "type": "address" + }, + { + "indexed": false, + "name": "dataResolverAtExpiry", + "type": "address" + }, + { + "indexed": false, + "name": "reqCollateral", + "type": "uint256" + }, + { + "indexed": false, + "name": "lotSize", + "type": "uint256" + }, + { + "indexed": false, + "name": "strikePrice", + "type": "uint256" + }, + { + "indexed": false, + "name": "expiry", + "type": "uint256" + }, + { + "indexed": false, + "name": "isEuro", + "type": "bool" + }, + { + "indexed": false, + "name": "isPut", + "type": "bool" + } + ], + "name": "UpdateRFP", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "from", + "type": "address" + }, + { + "indexed": true, + "name": "tokenId", + "type": "uint256" + }, + { + "indexed": true, + "name": "RFP", + "type": "bool" + } + ], + "name": "ReclaimAndBurn", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "from", + "type": "address" + }, + { + "indexed": true, + "name": "tokenId", + "type": "uint256" + }, + { + "indexed": false, + "name": "startPrice", + "type": "uint256" + }, + { + "indexed": false, + "name": "reservePrice", + "type": "uint256" + }, + { + "indexed": false, + "name": "auctionLength", + "type": "uint256" + }, + { + "indexed": false, + "name": "timeStep", + "type": "uint256" + }, + { + "indexed": false, + "name": "priceStep", + "type": "uint256" + } + ], + "name": "StartAuction", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "from", + "type": "address" + }, + { + "indexed": true, + "name": "tokenId", + "type": "uint256" + }, + { + "indexed": true, + "name": "RFP", + "type": "bool" + } + ], + "name": "EndAuction", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "from", + "type": "address" + }, + { + "indexed": true, + "name": "tokenId", + "type": "uint256" + }, + { + "indexed": false, + "name": "paidPremium", + "type": "uint256" + }, + { + "indexed": false, + "name": "change", + "type": "uint256" + }, + { + "indexed": false, + "name": "auctionPremium", + "type": "uint256" + } + ], + "name": "SatisfyAuction", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "feePayer", + "type": "address" + }, + { + "indexed": true, + "name": "tokenId", + "type": "uint256" + }, + { + "indexed": false, + "name": "oracleFee", + "type": "uint256" + }, + { + "indexed": false, + "name": "dataResolver", + "type": "address" + } + ], + "name": "RequestSettlementPrice", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "resolver", + "type": "address" + }, + { + "indexed": true, + "name": "tokenId", + "type": "uint256" + }, + { + "indexed": true, + "name": "price", + "type": "uint256" + } + ], + "name": "OracleReturned", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "from", + "type": "address" + }, + { + "indexed": true, + "name": "tokenId", + "type": "uint256" + }, + { + "indexed": true, + "name": "holderPayout", + "type": "uint256" + }, + { + "indexed": false, + "name": "writerPayout", + "type": "uint256" + } + ], + "name": "SettlePiggy", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "from", + "type": "address" + }, + { + "indexed": true, + "name": "amount", + "type": "uint256" + }, + { + "indexed": true, + "name": "paymentToken", + "type": "address" + } + ], + "name": "ClaimPayout", + "type": "event" + }, + { + "constant": false, + "inputs": [ + { + "name": "_collateralERC", + "type": "address" + }, + { + "name": "_premiumERC", + "type": "address" + }, + { + "name": "_dataResolverNow", + "type": "address" + }, + { + "name": "_dataResolverAtExpiry", + "type": "address" + }, + { + "name": "_collateral", + "type": "uint256" + }, + { + "name": "_lotSize", + "type": "uint256" + }, + { + "name": "_strikePrice", + "type": "uint256" + }, + { + "name": "_expiry", + "type": "uint256" + }, + { + "name": "_isEuro", + "type": "bool" + }, + { + "name": "_isPut", + "type": "bool" + }, + { + "name": "_isRequest", + "type": "bool" + } + ], + "name": "createPiggy", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "_tokenId", + "type": "uint256" + } + ], + "name": "getDetails", + "outputs": [ + { + "components": [ + { + "components": [ + { + "name": "writer", + "type": "address" + }, + { + "name": "holder", + "type": "address" + }, + { + "name": "collateralERC", + "type": "address" + }, + { + "name": "premiumERC", + "type": "address" + }, + { + "name": "dataResolverNow", + "type": "address" + }, + { + "name": "dataResolverAtExpiry", + "type": "address" + } + ], + "name": "addresses", + "type": "tuple" + }, + { + "components": [ + { + "name": "collateral", + "type": "uint256" + }, + { + "name": "lotSize", + "type": "uint256" + }, + { + "name": "strikePrice", + "type": "uint256" + }, + { + "name": "expiry", + "type": "uint256" + }, + { + "name": "settlementPrice", + "type": "uint256" + }, + { + "name": "reqCollateral", + "type": "uint256" + }, + { + "name": "collateralDecimals", + "type": "uint8" + } + ], + "name": "uintDetails", + "type": "tuple" + }, + { + "components": [ + { + "name": "isRequest", + "type": "bool" + }, + { + "name": "isEuro", + "type": "bool" + }, + { + "name": "isPut", + "type": "bool" + }, + { + "name": "hasBeenCleared", + "type": "bool" + } + ], + "name": "flags", + "type": "tuple" + } + ], + "name": "", + "type": "tuple" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "_tokenId", + "type": "uint256" + } + ], + "name": "getAuctionDetails", + "outputs": [ + { + "components": [ + { + "name": "startBlock", + "type": "uint256" + }, + { + "name": "expiryBlock", + "type": "uint256" + }, + { + "name": "startPrice", + "type": "uint256" + }, + { + "name": "reservePrice", + "type": "uint256" + }, + { + "name": "timeStep", + "type": "uint256" + }, + { + "name": "priceStep", + "type": "uint256" + }, + { + "name": "auctionActive", + "type": "bool" + }, + { + "name": "satisfyInProgress", + "type": "bool" + } + ], + "name": "", + "type": "tuple" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "_owner", + "type": "address" + } + ], + "name": "getOwnedPiggies", + "outputs": [ + { + "name": "", + "type": "uint256[]" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "_owner", + "type": "address" + }, + { + "name": "_erc20", + "type": "address" + } + ], + "name": "getERC20balance", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "_from", + "type": "address" + }, + { + "name": "_to", + "type": "address" + }, + { + "name": "_tokenId", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "_tokenId", + "type": "uint256" + }, + { + "name": "_collateralERC", + "type": "address" + }, + { + "name": "_premiumERC", + "type": "address" + }, + { + "name": "_dataResolverNow", + "type": "address" + }, + { + "name": "_dataResolverAtExpiry", + "type": "address" + }, + { + "name": "_reqCollateral", + "type": "uint256" + }, + { + "name": "_lotSize", + "type": "uint256" + }, + { + "name": "_strikePrice", + "type": "uint256" + }, + { + "name": "_expiry", + "type": "uint256" + }, + { + "name": "_isEuro", + "type": "bool" + }, + { + "name": "_isPut", + "type": "bool" + } + ], + "name": "updateRFP", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "_tokenId", + "type": "uint256" + } + ], + "name": "reclaimAndBurn", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "_tokenId", + "type": "uint256" + }, + { + "name": "_startPrice", + "type": "uint256" + }, + { + "name": "_reservePrice", + "type": "uint256" + }, + { + "name": "_auctionLength", + "type": "uint256" + }, + { + "name": "_timeStep", + "type": "uint256" + }, + { + "name": "_priceStep", + "type": "uint256" + } + ], + "name": "startAuction", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "_tokenId", + "type": "uint256" + } + ], + "name": "endAuction", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "_tokenId", + "type": "uint256" + } + ], + "name": "satisfyAuction", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "_tokenId", + "type": "uint256" + }, + { + "name": "_oracleFee", + "type": "uint256" + } + ], + "name": "requestSettlementPrice", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "_tokenId", + "type": "uint256" + }, + { + "name": "_price", + "type": "uint256" + } + ], + "name": "_callback", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "_tokenId", + "type": "uint256" + } + ], + "name": "settlePiggy", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "_paymentToken", + "type": "address" + }, + { + "name": "_amount", + "type": "uint256" + } + ], + "name": "claimPayout", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [], + "name": "kill", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x60806040523480156200001157600080fd5b50620000467f01ffc9a7000000000000000000000000000000000000000000000000000000006401000000006200005e810204565b60018054600160a060020a03191633179055620000cb565b7fffffffff0000000000000000000000000000000000000000000000000000000080821614156200008e57600080fd5b7fffffffff00000000000000000000000000000000000000000000000000000000166000908152602081905260409020805460ff19166001179055565b613e7d80620000db6000396000f3fe608060405234801561001057600080fd5b5060043610610133576000357c010000000000000000000000000000000000000000000000000000000090048063685b8b40116100bf578063b93a89f71161008e578063b93a89f71461024b578063b9a2de3a1461026b578063bbecae151461027e578063f20e5e3514610291578063fff6fe5a146102b157610133565b8063685b8b40146101f25780636f83bc0f1461020557806388fed58514610218578063abf11d6e1461023857610133565b806325a948e51161010657806325a948e51461019e5780632617ee78146101b15780632894209f146101c457806341c0e1b5146101d757806359af508c146101df57610133565b806301ffc9a71461013857806317d70f7c146101615780631a2fcc8b1461017657806323b872dd14610189575b600080fd5b61014b610146366004612ab0565b6102c4565b6040516101589190613a86565b60405180910390f35b6101696102ff565b6040516101589190613d22565b61014b610184366004612a62565b610305565b61019c610197366004612a15565b610517565b005b6101696101ac3660046128ed565b610563565b61014b6101bf366004612927565b6105bc565b61014b6101d2366004612ace565b6108c7565b61019c610b52565b61014b6101ed366004612ace565b610b77565b61014b610200366004612ba3565b610d69565b61014b610213366004612aec565b610f6a565b61022b6102263660046128cf565b611241565b6040516101589190613a75565b61019c610246366004612ba3565b6112d8565b61025e610259366004612ace565b6113d4565b6040516101589190613d13565b61014b610279366004612ace565b6114ff565b61014b61028c366004612bc2565b6116da565b6102a461029f366004612ace565b611903565b6040516101589190613d04565b61014b6102bf366004612ace565b611980565b7fffffffff00000000000000000000000000000000000000000000000000000000811660009081526020819052604090205460ff165b919050565b60025481565b336000908152600360209081526040808320600160a060020a03861684529091528120548211156103545760405160e560020a62461bcd02815260040161034b90613b54565b60405180910390fd5b336000908152600360209081526040808320600160a060020a0387168452909152902054610388908363ffffffff611e7816565b336000818152600360209081526040808320600160a060020a03891680855292528083209490945592519092916103c3918690602401613983565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb0000000000000000000000000000000000000000000000000000000017815290518251909182918083835b602083106104465780518252601f199092019160209182019101610427565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146104a8576040519150601f19603f3d011682016040523d82523d6000602084013e6104ad565b606091505b505090508015156104d35760405160e560020a62461bcd02815260040161034b90613aa4565b604051600160a060020a03851690849033907f7b456c79443b1e226ff616818ce3708f317376cb1094cd5d65a55e51ece25bd290600090a460019150505b92915050565b600081815260066020526040902060010154600160a060020a031633146105535760405160e560020a62461bcd02815260040161034b90613cf4565b61055e838383611e8d565b505050565b6000600160a060020a03831615156105905760405160e560020a62461bcd02815260040161034b90613be4565b50600160a060020a03918216600090815260036020908152604080832093909416825291909152205490565b6000600160a060020a038c16158015906105de5750600160a060020a038b1615155b80156105f25750600160a060020a038a1615155b80156106065750600160a060020a03891615155b15156106275760405160e560020a62461bcd02815260040161034b90613a94565b871580159061063557508615155b801561064057508515155b801561064b57508415155b151561066c5760405160e560020a62461bcd02815260040161034b90613c04565b8115156106a75760006106818d33308c611f77565b90508015156106a55760405160e560020a62461bcd02815260040161034b90613b94565b505b6002546106bb90600163ffffffff61209216565b60028190555060006006600060025481526020019081526020016000209050338160000160010160006101000a815481600160a060020a030219169083600160a060020a031602179055508c8160000160020160006101000a815481600160a060020a030219169083600160a060020a031602179055508b8160000160030160006101000a815481600160a060020a030219169083600160a060020a031602179055508a8160000160040160006101000a815481600160a060020a030219169083600160a060020a03160217905550898160000160050160006101000a815481600160a060020a030219169083600160a060020a031602179055506107bf8d6120ab565b600c8201805460ff191660ff9290921691909117905560078101889055600881018790556107ed8643612092565b6009820155600d8101805461ff001916610100871515021762ff0000191662010000861515021760ff1916841580159190911790915561083357600b8101899055610858565b805473ffffffffffffffffffffffffffffffffffffffff191633178155600681018990555b61086433600254612240565b6002548790337faa2032c3a05e7293eec92b9f41cfe70d5d753b29790a3f2cdeace3d6f5c9b74961089b8a4363ffffffff61209216565b876040516108aa929190613d4b565b60405180910390a460019150505b9b9a5050505050505050505050565b60003315156108eb5760405160e560020a62461bcd02815260040161034b90613c34565b81151561090d5760405160e560020a62461bcd02815260040161034b90613bd4565b6000828152600660205260409020600d01546301000000900460ff16151561094a5760405160e560020a62461bcd02815260040161034b90613b84565b6000828152600660205260408120600d0154610100900460ff161561099d5760008381526006602052604090206009015443101561099d5760405160e560020a62461bcd02815260040161034b90613cd4565b6000838152600660205260409020600d810154600a82015460088301546007840154600c909401546109dd9460ff6201000090950485169490911661227e565b60008481526006602081905260409091208054600182015460028301549290930154939450600160a060020a039081169392811692911690841115610a32576000868152600660208190526040909120015493505b600160a060020a03808316600090815260036020908152604080832093851683529290522054610a68908563ffffffff61209216565b600160a060020a038084166000908152600360209081526040808320938616835292815282822093909355888152600692839052200154610aaf908563ffffffff611e7816565b600160a060020a0380851660009081526003602090815260408083209386168352928152828220939093558881526006928390522001548490879033907f24827fe6f8d4089bee240c9fb4b9fb5a994e34610b00aeb4cfc427f4807cca1a90610b1e908563ffffffff611e7816565b604051610b2b9190613d22565b60405180910390a4610b3d8287612300565b610b46866123f7565b50600195945050505050565b600154600160a060020a03163314610b6957600080fd5b600154600160a060020a0316ff5b600081815260066020526040812060010154600160a060020a03163314610bb35760405160e560020a62461bcd02815260040161034b90613c24565b60008281526007602052604090206006015460ff1615610be85760405160e560020a62461bcd02815260040161034b90613ba4565b6000828152600660205260409020600d015460ff161515610cef57600082815260066020526040902054600160a060020a03163314610c3c5760405160e560020a62461bcd02815260040161034b90613c94565b600082815260066020819052604091829020600281015491015491517fa9059cbb000000000000000000000000000000000000000000000000000000008152600160a060020a039091169163a9059cbb91610c9b91339160040161399e565b602060405180830381600087803b158015610cb557600080fd5b505af1158015610cc9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610ced9190810190612a92565b505b600082815260066020526040808220600d0154905160ff909116151591849133917f6d36d64725ed2ba6d5b45497a83b141bc51d4803efaa99039162496e7f7465c291a4600082815260066020526040902060010154610d5890600160a060020a031683612300565b610d61826123f7565b506001919050565b6000331515610d8d5760405160e560020a62461bcd02815260040161034b90613c14565b60008381526007602052604090206006015460ff1615610dc25760405160e560020a62461bcd02815260040161034b90613cb4565b6000838152600660205260409020600d01546301000000900460ff1615610dfe5760405160e560020a62461bcd02815260040161034b90613bf4565b821515610e205760405160e560020a62461bcd02815260040161034b90613b14565b811515610e425760405160e560020a62461bcd02815260040161034b90613ab4565b6000838152600660205260409020600d0154610100900460ff1615610e7f57600083815260066020526040902060090154431015610e7f57600080fd5b6000838152600660205260408120600d0154610100900460ff1680610eb4575060008481526006602052604090206009015443115b15610eda5750600083815260066020526040902060050154600160a060020a0316610f33565b600084815260066020526040902060010154600160a060020a03163314610f165760405160e560020a62461bcd02815260040161034b90613cc4565b50600083815260066020526040902060040154600160a060020a03165b610f3f8133858761249d565b1515610f605760405160e560020a62461bcd02815260040161034b90613c64565b5060019392505050565b60008b815260066020526040812060010154600160a060020a03163314610fa65760405160e560020a62461bcd02815260040161034b90613ad4565b60008c8152600660205260409020600d015460ff161515610fdc5760405160e560020a62461bcd02815260040161034b90613ce4565b6000600160a060020a038c16156110255760008d8152600660205260409020600201805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a038e161790555b600160a060020a038b161561106c5760008d8152600660205260409020600301805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a038d161790555b600160a060020a038a16156110b35760008d8152600660205260409020600401805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a038c161790555b600160a060020a038916156110fa5760008d8152600660205260409020600501805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a038b161790555b87156111155760008d8152600660205260409020600b018890555b86156111305760008d81526006602052604090206007018790555b851561114b5760008d81526006602052604090206008018690555b841561117857611161854363ffffffff61209216565b60008e815260066020526040902060090181905590505b83600660008f8152602001908152602001600020600d0160000160016101000a81548160ff02191690831515021790555082600660008f8152602001908152602001600020600d0160000160026101000a81548160ff0219169083151502179055508c33600160a060020a03167f9cb9db39ba4b88876ce74e5752ff81841af649bf00d0c275cc0c4d7ceae2ba1e8e8e8e8e8e8e8e8a8e8e6040516112269a999897969594939291906139ac565b60405180910390a35060019c9b505050505050505050505050565b6060600160a060020a038216151561126e5760405160e560020a62461bcd02815260040161034b90613be4565b600160a060020a038216600090815260046020908152604091829020805483518184028101840190945280845290918301828280156112cc57602002820191906000526020600020905b8154815260200190600101908083116112b8575b50505050509050919050565b6000828152600660205260408120600d0154610100900460ff168061130d575060008381526006602052604090206009015443115b156113335750600082815260066020526040902060050154600160a060020a0316611350565b50600082815260066020526040902060040154600160a060020a03165b33600160a060020a0382161461137b5760405160e560020a62461bcd02815260040161034b90613af4565b600083815260066020526040808220600a8101859055600d01805463ff00000019166301000000179055518391859133917f09501576903c44a3f43eebbcee4603f6664e6f88e6d9943eb95c26f890b0353991a4505050565b6113dc612733565b506000908152600660208181526040928390208351610120810185528154600160a060020a039081166060808401918252600185015483166080808601919091526002860154841660a0808701919091526003870154851660c0808801919091526004880154861660e0808901919091526005890154909616610100808901919091529487528a519586018b529887015485526007870154858901526008870154858b0152600987015485840152600a87015485830152600b87015490850152600c86015460ff908116988501989098528487019390935287519283018852600d90940154808716151583529081048616151594820194909452620100008404851615158187015263010000009093049093161515908201529181019190915290565b600081815260066020526040812060010154600160a060020a0316331461153b5760405160e560020a62461bcd02815260040161034b90613b24565b60008281526007602052604090206006015460ff1615156115715760405160e560020a62461bcd02815260040161034b90613c74565b600082815260076020526040902060060154610100900460ff16156115ab5760405160e560020a62461bcd02815260040161034b90613b04565b6000828152600660205260409020600d015460ff16156116855760008281526007602090815260408083206003908101546006909352928190209092015491517fa9059cbb0000000000000000000000000000000000000000000000000000000081529091600160a060020a03169063a9059cbb90611630903390859060040161399e565b602060405180830381600087803b15801561164a57600080fd5b505af115801561165e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506116829190810190612a92565b50505b61168e8261261f565b600082815260066020526040808220600d0154905160ff909116151591849133917f1b263718a9da58fd8fbc3c9f97a9f04b73318dd5d4d7e4f921f639dd5f0c233b91a4506001919050565b6000806116ed438663ffffffff61209216565b600089815260066020526040902060010154909150600160a060020a0316331461172c5760405160e560020a62461bcd02815260040161034b90613b24565b600088815260066020526040902060090154431061175f5760405160e560020a62461bcd02815260040161034b90613c44565b60008881526006602052604090206009015481106117925760405160e560020a62461bcd02815260040161034b90613c84565b6000888152600660205260409020600d01546301000000900460ff16156117ce5760405160e560020a62461bcd02815260040161034b90613ae4565b60008881526007602052604090206006015460ff16156118035760405160e560020a62461bcd02815260040161034b90613b74565b6000888152600660205260409020600d015460ff161561186a5760008881526006602052604081206003015461184490600160a060020a031633308a611f77565b90508015156118685760405160e560020a62461bcd02815260040161034b90613b34565b505b600088815260076020526040908190204381556001808201849055600282018a90556003820189905560048201879055600582018690556006909101805460ff1916909117905551889033907f88a665277b4dcf78a761227e836d2b9c98169b818abf80cb4297114cb71a019f906118eb908b908b908b908b908b90613d8f565b60405180910390a360019150505b9695505050505050565b61190b612767565b5060009081526007602090815260409182902082516101008082018552825482526001830154938201939093526002820154938101939093526003810154606084015260048101546080840152600581015460a08401526006015460ff808216151560c085015291900416151560e082015290565b600081815260076020526040812060060154610100900460ff16156119ba5760405160e560020a62461bcd02815260040161034b90613b64565b600082815260066020526040902060010154600160a060020a03163314156119f75760405160e560020a62461bcd02815260040161034b90613ac4565b60008281526007602052604090206006015460ff161515611a2d5760405160e560020a62461bcd02815260040161034b90613b44565b600082815260076020526040902060010154431115611a5757611a4f8261261f565b5060006102fa565b6000611a6283612661565b60008481526007602090815260408083206006908101805461ff0019166101001790559091529020600d015490915060ff1615611d505760008381526006602052604081206002810154600b90910154611ac991600160a060020a03169033903090611f77565b9050801515611af4575050506000818152600760205260408120600601805461ff00191690556102fa565b6000848152600660208181526040808420600b810154930192909255600790528120600301548390811115611b3b5750600085815260076020526040902060030154611b60565b600086815260076020526040902060030154611b5d908263ffffffff611e7816565b91505b600086815260066020526040908190206003015490517fa9059cbb000000000000000000000000000000000000000000000000000000008152600160a060020a039091169063a9059cbb90611bbb903390859060040161399e565b602060405180830381600087803b158015611bd557600080fd5b505af1158015611be9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611c0d9190810190612a92565b506000821115611cce5760008681526006602052604090819020600381015460019091015491517fa9059cbb000000000000000000000000000000000000000000000000000000008152600160a060020a039182169263a9059cbb92611c7a929116908690600401613983565b602060405180830381600087803b158015611c9457600080fd5b505af1158015611ca8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611ccc9190810190612a92565b505b60008681526006602052604090819020600d8101805460ff19169055805473ffffffffffffffffffffffffffffffffffffffff19163390811790915590518791907f5f96074f1a6f13e028fea4b54d89ce40af34737ec917ab068e618b51c43415ff90611d4090859087908a90613d81565b60405180910390a3505050611e4e565b6000838152600760205260409020600301548190811015611d7f57506000838152600760205260409020600301545b60008481526006602052604081206003810154600190910154611db191600160a060020a039081169133911685611f77565b9050801515611dde575050506000828152600760205260408120600601805461ff001916905590506102fa565b600085815260066020526040902060010154611e0490600160a060020a03163387611e8d565b8433600160a060020a03167f5f96074f1a6f13e028fea4b54d89ce40af34737ec917ab068e618b51c43415ff84600087604051611e4393929190613d66565b60405180910390a350505b611e578361261f565b50506000908152600760205260409020600601805461ff0019169055600190565b600082821115611e8757600080fd5b50900390565b600081815260066020526040902060010154600160a060020a03848116911614611ecc5760405160e560020a62461bcd02815260040161034b90613bc4565b600160a060020a0382161515611ef75760405160e560020a62461bcd02815260040161034b90613c54565b611f018382612300565b611f0b8282612240565b600081815260066020526040808220600101805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0386811691821790925591518493918716917f71bf9544ab5405f66022054c1753722fc8011fcea0317b8c57b43cfbf9f44dd891a4505050565b60008085600160a060020a0316858585604051602401611f9993929190613a32565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd0000000000000000000000000000000000000000000000000000000017815290518251909182918083835b6020831061201c5780518252601f199092019160209182019101611ffd565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d806000811461207e576040519150601f19603f3d011682016040523d82523d6000602084013e612083565b606091505b5090925050505b949350505050565b6000828201838110156120a457600080fd5b9392505050565b60408051600481526024810182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f313ce56700000000000000000000000000000000000000000000000000000000178152915181516000938493606093600160a060020a03881693919290918291908083835b602083106121425780518252601f199092019160209182019101612123565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146121a4576040519150601f19603f3d011682016040523d82523d6000602084013e6121a9565b606091505b50915091508115156121d05760405160e560020a62461bcd02815260040161034b90613ca4565b6000805b8251811015612237578060010183510360080260020a83828151811015156121f857fe5b6020910101517f01000000000000000000000000000000000000000000000000000000000000009081900481020460ff160291909101906001016121d4565b50949350505050565b600160a060020a0390911660009081526004602081815260408084208054868652600584529185208290559282526001810183559183529091200155565b600085801561228c57508484115b156122a4576122a1848663ffffffff611e7816565b90505b851580156122b157508385115b156122c9576122c6858563ffffffff611e7816565b90505b6118f960646122f4856122e88560ff8816600a0a63ffffffff6126e416565b9063ffffffff6126e416565b9063ffffffff61270f16565b600160a060020a03821660009081526004602052604081205461232a90600163ffffffff611e7816565b6000838152600560205260409020549091508082146123c757600160a060020a038416600090815260046020526040812080548490811061236757fe5b90600052602060002001549050806004600087600160a060020a0316600160a060020a03168152602001908152602001600020838154811015156123a757fe5b600091825260208083209091019290925591825260059052604090208190555b600160a060020a03841660009081526004602052604090208054906123f09060001983016127b1565b5050505050565b60009081526006602081905260408220805473ffffffffffffffffffffffffffffffffffffffff199081168255600182018054821690556002820180548216905560038201805482169055600482018054821690556005820180549091169055908101829055600781018290556008810182905560098101829055600a8101829055600b810191909155600c8101805460ff19169055600d01805463ffffffff19169055565b60008085600160a060020a03168585856040516024016124bf93929190613a5a565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f1aa8ccc90000000000000000000000000000000000000000000000000000000017815290518251909182918083835b602083106125425780518252601f199092019160209182019101612523565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146125a4576040519150601f19603f3d011682016040523d82523d6000602084013e6125a9565b606091505b505090508015156125cf5760405160e560020a62461bcd02815260040161034b90613bb4565b8285600160a060020a03167f6e9f88567c24566f7654186f0a7171f7c85eff316314402531824e2d1e2b1675868960405161260b929190613d30565b60405180910390a350600195945050505050565b6000908152600760205260408120818155600181018290556002810182905560038101829055600481018290556005810191909155600601805460ff19169055565b600081815260076020526040812060028101546004820154600583015492549192849261269e92916122f4916122e890439063ffffffff611e7816565b6000858152600660205260409020600d015490915060ff16156126d4576126cb828263ffffffff61209216565b925050506102fa565b6126cb828263ffffffff611e7816565b60008215156126f557506000610511565b82820282848281151561270457fe5b04146120a457600080fd5b600080821161271d57600080fd5b6000828481151561272a57fe5b04949350505050565b610220604051908101604052806127486127d5565b815260200161275561280a565b815260200161276261284b565b905290565b610100604051908101604052806000815260200160008152602001600081526020016000815260200160008152602001600081526020016000151581526020016000151581525090565b81548183558181111561055e5760008381526020902061055e918101908301612872565b6040805160c081018252600080825260208201819052918101829052606081018290526080810182905260a081019190915290565b60e060405190810160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600060ff1681525090565b60408051608081018252600080825260208201819052918101829052606081019190915290565b61289091905b8082111561288c5760008155600101612878565b5090565b90565b60006120a48235613ddb565b60006120a48235613de6565b60006120a48251613de6565b60006120a48235613dfd565b60006120a48235612890565b6000602082840312156128e157600080fd5b600061208a8484612893565b6000806040838503121561290057600080fd5b600061290c8585612893565b925050602061291d85828601612893565b9150509250929050565b60008060008060008060008060008060006101608c8e03121561294957600080fd5b60006129558e8e612893565b9b505060206129668e828f01612893565b9a505060406129778e828f01612893565b99505060606129888e828f01612893565b98505060806129998e828f016128c3565b97505060a06129aa8e828f016128c3565b96505060c06129bb8e828f016128c3565b95505060e06129cc8e828f016128c3565b9450506101006129de8e828f0161289f565b9350506101206129f08e828f0161289f565b925050610140612a028e828f0161289f565b9150509295989b509295989b9093969950565b600080600060608486031215612a2a57600080fd5b6000612a368686612893565b9350506020612a4786828701612893565b9250506040612a58868287016128c3565b9150509250925092565b60008060408385031215612a7557600080fd5b6000612a818585612893565b925050602061291d858286016128c3565b600060208284031215612aa457600080fd5b600061208a84846128ab565b600060208284031215612ac257600080fd5b600061208a84846128b7565b600060208284031215612ae057600080fd5b600061208a84846128c3565b60008060008060008060008060008060006101608c8e031215612b0e57600080fd5b6000612b1a8e8e6128c3565b9b50506020612b2b8e828f01612893565b9a50506040612b3c8e828f01612893565b9950506060612b4d8e828f01612893565b9850506080612b5e8e828f01612893565b97505060a0612b6f8e828f016128c3565b96505060c0612b808e828f016128c3565b95505060e0612b918e828f016128c3565b9450506101006129de8e828f016128c3565b60008060408385031215612bb657600080fd5b6000612a8185856128c3565b60008060008060008060c08789031215612bdb57600080fd5b6000612be789896128c3565b9650506020612bf889828a016128c3565b9550506040612c0989828a016128c3565b9450506060612c1a89828a016128c3565b9350506080612c2b89828a016128c3565b92505060a0612c3c89828a016128c3565b9150509295509295509295565b612c5281613e22565b82525050565b612c5281613ddb565b6000612c6c82613dd7565b808452602084019350612c7e83613dd1565b60005b82811015612cae57612c94868351613971565b612c9d82613dd1565b602096909601959150600101612c81565b5093949350505050565b612c5281613de6565b612c5281613e2d565b601881527f6164647265737365732063616e6e6f74206265207a65726f0000000000000000602082015260400190565b601b81527f455243323020746f6b656e207472616e73666572206661696c65640000000000602082015260400190565b601981527f6f7261636c65206665652063616e6e6f74206265207a65726f00000000000000602082015260400190565b603781527f63616e6e6f74207361746973667920796f7572206f776e2061756374696f6e3b60208201527f2075736520656e6441756374696f6e20696e7374656164000000000000000000604082015260600190565b602181527f796f75206d757374206f776e207468652052465020746f20757064617465206960208201527f7400000000000000000000000000000000000000000000000000000000000000604082015260600190565b601f81527f6f7074696f6e2063616e6e6f742068617665206265656e20636c656172656400602082015260400190565b601f81527f7265736f6c7665206164647265737320776173206e6f7420636f727265637400602082015260400190565b603381527f61756374696f6e2063616e6e6f7420626520696e207468652070726f6365737360208201527f206f66206265696e672073617469736669656400000000000000000000000000604082015260600190565b601781527f5f746f6b656e49642063616e6e6f74206265207a65726f000000000000000000602082015260400190565b602281527f796f75206d757374206f776e206120746f6b656e20746f2061756374696f6e2060208201527f6974000000000000000000000000000000000000000000000000000000000000604082015260600190565b60208082527f7472616e7366657246726f6d20646964206e6f742072657475726e20747275659082015260400190565b602481527f61756374696f6e206d7573742062652061637469766520746f2073617469736660208201527f7920697400000000000000000000000000000000000000000000000000000000604082015260600190565b602b81527f45524332302062616c616e6365206973206c657373207468616e20726571756560208201527f7374656420616d6f756e74000000000000000000000000000000000000000000604082015260600190565b603481527f63616e6e6f74207265656e74657220746869732066756e6374696f6e2077686960208201527f6c6520697420697320696e2070726f6772657373000000000000000000000000604082015260600190565b602181527f61756374696f6e2063616e6e6f7420616c72656164792062652072756e6e696e60208201527f6700000000000000000000000000000000000000000000000000000000000000604082015260600190565b602681527f706967677920686173206e6f7420726563656976656420616e206f7261636c6560208201527f2070726963650000000000000000000000000000000000000000000000000000604082015260600190565b601f81527f546f6b656e207472616e7366657220646964206e6f7420636f6d706c65746500602082015260400190565b602b81527f796f752063616e6e6f74206275726e206120746f6b656e20776869636820697360208201527f206f6e2061756374696f6e000000000000000000000000000000000000000000604082015260600190565b602181527f6665746368207375636365737320646964206e6f742072657475726e2074727560208201527f6500000000000000000000000000000000000000000000000000000000000000604082015260600190565b601d81527f66726f6d2061646472657373206973206e6f7420746865206f776e6572000000602082015260400190565b601681527f746f6b656e49642063616e6e6f74206265207a65726f00000000000000000000602082015260400190565b601681527f616464726573732063616e6e6f74206265207a65726f00000000000000000000602082015260400190565b601e81527f746f6b656e2068617320616c7265616479206265656e20636c65617265640000602082015260400190565b60208082527f6f7074696f6e20706172616d65746572732063616e6e6f74206265207a65726f9082015260400190565b602181527f73656e6465722063616e6e6f7420626520746865207a65726f2061646472657360208201527f7300000000000000000000000000000000000000000000000000000000000000604082015260600190565b602181527f796f75206d757374206f776e2074686520746f6b656e20746f206275726e206960208201527f7400000000000000000000000000000000000000000000000000000000000000604082015260600190565b601981527f6d73672e73656e6465722063616e6e6f74206265207a65726f00000000000000602082015260400190565b601a81527f6f7074696f6e206d757374206e6f742062652065787069726564000000000000602082015260400190565b601281527f746f2061646472657373206973207a65726f0000000000000000000000000000602082015260400190565b602481527f63616c6c20746f207265736f6c76657220646964206e6f742072657475726e2060208201527f7472756500000000000000000000000000000000000000000000000000000000604082015260600190565b602381527f61756374696f6e206d7573742062652061637469766520746f2063616e63656c60208201527f2069740000000000000000000000000000000000000000000000000000000000604082015260600190565b602681527f61756374696f6e2063616e6e6f7420657870697265206166746572207468652060208201527f6f7074696f6e0000000000000000000000000000000000000000000000000000604082015260600190565b602981527f796f75206d757374206f776e2074686520636f6c6c61746572616c20746f207260208201527f65636c61696d2069740000000000000000000000000000000000000000000000604082015260600190565b603d81527f636f6c6c61746572616c204552432d323020636f6e747261637420646f65732060208201527f6e6f742070726f7065726c79207370656369667920646563696d616c73000000604082015260600190565b602c81527f63616e6e6f7420636c656172206120746f6b656e207768696c6520617563746960208201527f6f6e206973206163746976650000000000000000000000000000000000000000604082015260600190565b604181527f6f6e6c792074686520686f6c6465722063616e20736574746c6520616e20416d60208201527f65726963616e207374796c65206f7074696f6e206265666f726520657870697260408201527f7900000000000000000000000000000000000000000000000000000000000000606082015260800190565b602381527f4575726f7065616e206f7074696f6e206e6565647320746f206265206578706960208201527f7265640000000000000000000000000000000000000000000000000000000000604082015260600190565b601a81527f796f752063616e206f6e6c792075706461746520616e20524650000000000000602082015260400190565b601b81527f6d73672e73656e646572206973206e6f7420746865206f776e65720000000000602082015260400190565b8051608083019061376f8482612cb8565b5060208201516137826020850182612cb8565b5060408201516137956040850182612cb8565b5060608201516137a86060850182612cb8565b50505050565b805160c08301906137bf8482612c58565b5060208201516137d26020850182612c58565b5060408201516137e56040850182612c58565b5060608201516137f86060850182612c58565b50608082015161380b6080850182612c58565b5060a08201516137a860a0850182612c58565b80516101008301906138308482613971565b5060208201516138436020850182613971565b5060408201516138566040850182613971565b5060608201516138696060850182613971565b50608082015161387c6080850182613971565b5060a082015161388f60a0850182613971565b5060c08201516138a260c0850182612cb8565b5060e08201516137a860e0850182612cb8565b805160e08301906138c68482613971565b5060208201516138d96020850182613971565b5060408201516138ec6040850182613971565b5060608201516138ff6060850182613971565b5060808201516139126080850182613971565b5060a082015161392560a0850182613971565b5060c08201516137a860c085018261397a565b805161022083019061394a84826137ae565b50602082015161395d60c08501826138b5565b5060408201516137a86101a085018261375e565b612c5281612890565b612c5281613df7565b604081016139918285612c58565b6120a46020830184613971565b604081016139918285612c49565b61014081016139bb828d612c58565b6139c8602083018c612c58565b6139d5604083018b612c58565b6139e2606083018a612c58565b6139ef6080830189613971565b6139fc60a0830188613971565b613a0960c0830187613971565b613a1660e0830186613971565b613a24610100830185612cb8565b6108b8610120830184612cb8565b60608101613a408286612c58565b613a4d6020830185612c58565b61208a6040830184613971565b60608101613a688286612c58565b613a4d6020830185613971565b602080825281016120a48184612c61565b602081016105118284612cb8565b6020808252810161051181612cca565b6020808252810161051181612cfa565b6020808252810161051181612d2a565b6020808252810161051181612d5a565b6020808252810161051181612db0565b6020808252810161051181612e06565b6020808252810161051181612e36565b6020808252810161051181612e66565b6020808252810161051181612ebc565b6020808252810161051181612eec565b6020808252810161051181612f42565b6020808252810161051181612f72565b6020808252810161051181612fc8565b602080825281016105118161301e565b6020808252810161051181613074565b60208082528101610511816130ca565b6020808252810161051181613120565b6020808252810161051181613150565b60208082528101610511816131a6565b60208082528101610511816131fc565b602080825281016105118161322c565b602080825281016105118161325c565b602080825281016105118161328c565b60208082528101610511816132bc565b60208082528101610511816132ec565b6020808252810161051181613342565b6020808252810161051181613398565b60208082528101610511816133c8565b60208082528101610511816133f8565b6020808252810161051181613428565b602080825281016105118161347e565b60208082528101610511816134d4565b602080825281016105118161352a565b6020808252810161051181613580565b60208082528101610511816135d6565b602080825281016105118161362c565b60208082528101610511816136a8565b60208082528101610511816136fe565b602080825281016105118161372e565b6101008101610511828461381e565b61022081016105118284613938565b602081016105118284613971565b60408101613d3e8285613971565b6120a46020830184612c58565b60408101613d598285613971565b6120a46020830184612cb8565b60608101613d748286613971565b613a4d6020830185612cc1565b60608101613a688286613971565b60a08101613d9d8288613971565b613daa6020830187613971565b613db76040830186613971565b613dc46060830185613971565b6118f96080830184613971565b60200190565b5190565b600061051182613deb565b151590565b600160a060020a031690565b60ff1690565b7fffffffff000000000000000000000000000000000000000000000000000000001690565b600061051182613e38565b600061051182612890565b600061051182613ddb56fea265627a7a72305820a505ae629d671c7661683a617574cce35efd11259d3e071b5b8a6304c67aa4416c6578706572696d656e74616cf50037", + "deployedBytecode": "0x608060405234801561001057600080fd5b5060043610610133576000357c010000000000000000000000000000000000000000000000000000000090048063685b8b40116100bf578063b93a89f71161008e578063b93a89f71461024b578063b9a2de3a1461026b578063bbecae151461027e578063f20e5e3514610291578063fff6fe5a146102b157610133565b8063685b8b40146101f25780636f83bc0f1461020557806388fed58514610218578063abf11d6e1461023857610133565b806325a948e51161010657806325a948e51461019e5780632617ee78146101b15780632894209f146101c457806341c0e1b5146101d757806359af508c146101df57610133565b806301ffc9a71461013857806317d70f7c146101615780631a2fcc8b1461017657806323b872dd14610189575b600080fd5b61014b610146366004612ab0565b6102c4565b6040516101589190613a86565b60405180910390f35b6101696102ff565b6040516101589190613d22565b61014b610184366004612a62565b610305565b61019c610197366004612a15565b610517565b005b6101696101ac3660046128ed565b610563565b61014b6101bf366004612927565b6105bc565b61014b6101d2366004612ace565b6108c7565b61019c610b52565b61014b6101ed366004612ace565b610b77565b61014b610200366004612ba3565b610d69565b61014b610213366004612aec565b610f6a565b61022b6102263660046128cf565b611241565b6040516101589190613a75565b61019c610246366004612ba3565b6112d8565b61025e610259366004612ace565b6113d4565b6040516101589190613d13565b61014b610279366004612ace565b6114ff565b61014b61028c366004612bc2565b6116da565b6102a461029f366004612ace565b611903565b6040516101589190613d04565b61014b6102bf366004612ace565b611980565b7fffffffff00000000000000000000000000000000000000000000000000000000811660009081526020819052604090205460ff165b919050565b60025481565b336000908152600360209081526040808320600160a060020a03861684529091528120548211156103545760405160e560020a62461bcd02815260040161034b90613b54565b60405180910390fd5b336000908152600360209081526040808320600160a060020a0387168452909152902054610388908363ffffffff611e7816565b336000818152600360209081526040808320600160a060020a03891680855292528083209490945592519092916103c3918690602401613983565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb0000000000000000000000000000000000000000000000000000000017815290518251909182918083835b602083106104465780518252601f199092019160209182019101610427565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146104a8576040519150601f19603f3d011682016040523d82523d6000602084013e6104ad565b606091505b505090508015156104d35760405160e560020a62461bcd02815260040161034b90613aa4565b604051600160a060020a03851690849033907f7b456c79443b1e226ff616818ce3708f317376cb1094cd5d65a55e51ece25bd290600090a460019150505b92915050565b600081815260066020526040902060010154600160a060020a031633146105535760405160e560020a62461bcd02815260040161034b90613cf4565b61055e838383611e8d565b505050565b6000600160a060020a03831615156105905760405160e560020a62461bcd02815260040161034b90613be4565b50600160a060020a03918216600090815260036020908152604080832093909416825291909152205490565b6000600160a060020a038c16158015906105de5750600160a060020a038b1615155b80156105f25750600160a060020a038a1615155b80156106065750600160a060020a03891615155b15156106275760405160e560020a62461bcd02815260040161034b90613a94565b871580159061063557508615155b801561064057508515155b801561064b57508415155b151561066c5760405160e560020a62461bcd02815260040161034b90613c04565b8115156106a75760006106818d33308c611f77565b90508015156106a55760405160e560020a62461bcd02815260040161034b90613b94565b505b6002546106bb90600163ffffffff61209216565b60028190555060006006600060025481526020019081526020016000209050338160000160010160006101000a815481600160a060020a030219169083600160a060020a031602179055508c8160000160020160006101000a815481600160a060020a030219169083600160a060020a031602179055508b8160000160030160006101000a815481600160a060020a030219169083600160a060020a031602179055508a8160000160040160006101000a815481600160a060020a030219169083600160a060020a03160217905550898160000160050160006101000a815481600160a060020a030219169083600160a060020a031602179055506107bf8d6120ab565b600c8201805460ff191660ff9290921691909117905560078101889055600881018790556107ed8643612092565b6009820155600d8101805461ff001916610100871515021762ff0000191662010000861515021760ff1916841580159190911790915561083357600b8101899055610858565b805473ffffffffffffffffffffffffffffffffffffffff191633178155600681018990555b61086433600254612240565b6002548790337faa2032c3a05e7293eec92b9f41cfe70d5d753b29790a3f2cdeace3d6f5c9b74961089b8a4363ffffffff61209216565b876040516108aa929190613d4b565b60405180910390a460019150505b9b9a5050505050505050505050565b60003315156108eb5760405160e560020a62461bcd02815260040161034b90613c34565b81151561090d5760405160e560020a62461bcd02815260040161034b90613bd4565b6000828152600660205260409020600d01546301000000900460ff16151561094a5760405160e560020a62461bcd02815260040161034b90613b84565b6000828152600660205260408120600d0154610100900460ff161561099d5760008381526006602052604090206009015443101561099d5760405160e560020a62461bcd02815260040161034b90613cd4565b6000838152600660205260409020600d810154600a82015460088301546007840154600c909401546109dd9460ff6201000090950485169490911661227e565b60008481526006602081905260409091208054600182015460028301549290930154939450600160a060020a039081169392811692911690841115610a32576000868152600660208190526040909120015493505b600160a060020a03808316600090815260036020908152604080832093851683529290522054610a68908563ffffffff61209216565b600160a060020a038084166000908152600360209081526040808320938616835292815282822093909355888152600692839052200154610aaf908563ffffffff611e7816565b600160a060020a0380851660009081526003602090815260408083209386168352928152828220939093558881526006928390522001548490879033907f24827fe6f8d4089bee240c9fb4b9fb5a994e34610b00aeb4cfc427f4807cca1a90610b1e908563ffffffff611e7816565b604051610b2b9190613d22565b60405180910390a4610b3d8287612300565b610b46866123f7565b50600195945050505050565b600154600160a060020a03163314610b6957600080fd5b600154600160a060020a0316ff5b600081815260066020526040812060010154600160a060020a03163314610bb35760405160e560020a62461bcd02815260040161034b90613c24565b60008281526007602052604090206006015460ff1615610be85760405160e560020a62461bcd02815260040161034b90613ba4565b6000828152600660205260409020600d015460ff161515610cef57600082815260066020526040902054600160a060020a03163314610c3c5760405160e560020a62461bcd02815260040161034b90613c94565b600082815260066020819052604091829020600281015491015491517fa9059cbb000000000000000000000000000000000000000000000000000000008152600160a060020a039091169163a9059cbb91610c9b91339160040161399e565b602060405180830381600087803b158015610cb557600080fd5b505af1158015610cc9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610ced9190810190612a92565b505b600082815260066020526040808220600d0154905160ff909116151591849133917f6d36d64725ed2ba6d5b45497a83b141bc51d4803efaa99039162496e7f7465c291a4600082815260066020526040902060010154610d5890600160a060020a031683612300565b610d61826123f7565b506001919050565b6000331515610d8d5760405160e560020a62461bcd02815260040161034b90613c14565b60008381526007602052604090206006015460ff1615610dc25760405160e560020a62461bcd02815260040161034b90613cb4565b6000838152600660205260409020600d01546301000000900460ff1615610dfe5760405160e560020a62461bcd02815260040161034b90613bf4565b821515610e205760405160e560020a62461bcd02815260040161034b90613b14565b811515610e425760405160e560020a62461bcd02815260040161034b90613ab4565b6000838152600660205260409020600d0154610100900460ff1615610e7f57600083815260066020526040902060090154431015610e7f57600080fd5b6000838152600660205260408120600d0154610100900460ff1680610eb4575060008481526006602052604090206009015443115b15610eda5750600083815260066020526040902060050154600160a060020a0316610f33565b600084815260066020526040902060010154600160a060020a03163314610f165760405160e560020a62461bcd02815260040161034b90613cc4565b50600083815260066020526040902060040154600160a060020a03165b610f3f8133858761249d565b1515610f605760405160e560020a62461bcd02815260040161034b90613c64565b5060019392505050565b60008b815260066020526040812060010154600160a060020a03163314610fa65760405160e560020a62461bcd02815260040161034b90613ad4565b60008c8152600660205260409020600d015460ff161515610fdc5760405160e560020a62461bcd02815260040161034b90613ce4565b6000600160a060020a038c16156110255760008d8152600660205260409020600201805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a038e161790555b600160a060020a038b161561106c5760008d8152600660205260409020600301805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a038d161790555b600160a060020a038a16156110b35760008d8152600660205260409020600401805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a038c161790555b600160a060020a038916156110fa5760008d8152600660205260409020600501805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a038b161790555b87156111155760008d8152600660205260409020600b018890555b86156111305760008d81526006602052604090206007018790555b851561114b5760008d81526006602052604090206008018690555b841561117857611161854363ffffffff61209216565b60008e815260066020526040902060090181905590505b83600660008f8152602001908152602001600020600d0160000160016101000a81548160ff02191690831515021790555082600660008f8152602001908152602001600020600d0160000160026101000a81548160ff0219169083151502179055508c33600160a060020a03167f9cb9db39ba4b88876ce74e5752ff81841af649bf00d0c275cc0c4d7ceae2ba1e8e8e8e8e8e8e8e8a8e8e6040516112269a999897969594939291906139ac565b60405180910390a35060019c9b505050505050505050505050565b6060600160a060020a038216151561126e5760405160e560020a62461bcd02815260040161034b90613be4565b600160a060020a038216600090815260046020908152604091829020805483518184028101840190945280845290918301828280156112cc57602002820191906000526020600020905b8154815260200190600101908083116112b8575b50505050509050919050565b6000828152600660205260408120600d0154610100900460ff168061130d575060008381526006602052604090206009015443115b156113335750600082815260066020526040902060050154600160a060020a0316611350565b50600082815260066020526040902060040154600160a060020a03165b33600160a060020a0382161461137b5760405160e560020a62461bcd02815260040161034b90613af4565b600083815260066020526040808220600a8101859055600d01805463ff00000019166301000000179055518391859133917f09501576903c44a3f43eebbcee4603f6664e6f88e6d9943eb95c26f890b0353991a4505050565b6113dc612733565b506000908152600660208181526040928390208351610120810185528154600160a060020a039081166060808401918252600185015483166080808601919091526002860154841660a0808701919091526003870154851660c0808801919091526004880154861660e0808901919091526005890154909616610100808901919091529487528a519586018b529887015485526007870154858901526008870154858b0152600987015485840152600a87015485830152600b87015490850152600c86015460ff908116988501989098528487019390935287519283018852600d90940154808716151583529081048616151594820194909452620100008404851615158187015263010000009093049093161515908201529181019190915290565b600081815260066020526040812060010154600160a060020a0316331461153b5760405160e560020a62461bcd02815260040161034b90613b24565b60008281526007602052604090206006015460ff1615156115715760405160e560020a62461bcd02815260040161034b90613c74565b600082815260076020526040902060060154610100900460ff16156115ab5760405160e560020a62461bcd02815260040161034b90613b04565b6000828152600660205260409020600d015460ff16156116855760008281526007602090815260408083206003908101546006909352928190209092015491517fa9059cbb0000000000000000000000000000000000000000000000000000000081529091600160a060020a03169063a9059cbb90611630903390859060040161399e565b602060405180830381600087803b15801561164a57600080fd5b505af115801561165e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506116829190810190612a92565b50505b61168e8261261f565b600082815260066020526040808220600d0154905160ff909116151591849133917f1b263718a9da58fd8fbc3c9f97a9f04b73318dd5d4d7e4f921f639dd5f0c233b91a4506001919050565b6000806116ed438663ffffffff61209216565b600089815260066020526040902060010154909150600160a060020a0316331461172c5760405160e560020a62461bcd02815260040161034b90613b24565b600088815260066020526040902060090154431061175f5760405160e560020a62461bcd02815260040161034b90613c44565b60008881526006602052604090206009015481106117925760405160e560020a62461bcd02815260040161034b90613c84565b6000888152600660205260409020600d01546301000000900460ff16156117ce5760405160e560020a62461bcd02815260040161034b90613ae4565b60008881526007602052604090206006015460ff16156118035760405160e560020a62461bcd02815260040161034b90613b74565b6000888152600660205260409020600d015460ff161561186a5760008881526006602052604081206003015461184490600160a060020a031633308a611f77565b90508015156118685760405160e560020a62461bcd02815260040161034b90613b34565b505b600088815260076020526040908190204381556001808201849055600282018a90556003820189905560048201879055600582018690556006909101805460ff1916909117905551889033907f88a665277b4dcf78a761227e836d2b9c98169b818abf80cb4297114cb71a019f906118eb908b908b908b908b908b90613d8f565b60405180910390a360019150505b9695505050505050565b61190b612767565b5060009081526007602090815260409182902082516101008082018552825482526001830154938201939093526002820154938101939093526003810154606084015260048101546080840152600581015460a08401526006015460ff808216151560c085015291900416151560e082015290565b600081815260076020526040812060060154610100900460ff16156119ba5760405160e560020a62461bcd02815260040161034b90613b64565b600082815260066020526040902060010154600160a060020a03163314156119f75760405160e560020a62461bcd02815260040161034b90613ac4565b60008281526007602052604090206006015460ff161515611a2d5760405160e560020a62461bcd02815260040161034b90613b44565b600082815260076020526040902060010154431115611a5757611a4f8261261f565b5060006102fa565b6000611a6283612661565b60008481526007602090815260408083206006908101805461ff0019166101001790559091529020600d015490915060ff1615611d505760008381526006602052604081206002810154600b90910154611ac991600160a060020a03169033903090611f77565b9050801515611af4575050506000818152600760205260408120600601805461ff00191690556102fa565b6000848152600660208181526040808420600b810154930192909255600790528120600301548390811115611b3b5750600085815260076020526040902060030154611b60565b600086815260076020526040902060030154611b5d908263ffffffff611e7816565b91505b600086815260066020526040908190206003015490517fa9059cbb000000000000000000000000000000000000000000000000000000008152600160a060020a039091169063a9059cbb90611bbb903390859060040161399e565b602060405180830381600087803b158015611bd557600080fd5b505af1158015611be9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611c0d9190810190612a92565b506000821115611cce5760008681526006602052604090819020600381015460019091015491517fa9059cbb000000000000000000000000000000000000000000000000000000008152600160a060020a039182169263a9059cbb92611c7a929116908690600401613983565b602060405180830381600087803b158015611c9457600080fd5b505af1158015611ca8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611ccc9190810190612a92565b505b60008681526006602052604090819020600d8101805460ff19169055805473ffffffffffffffffffffffffffffffffffffffff19163390811790915590518791907f5f96074f1a6f13e028fea4b54d89ce40af34737ec917ab068e618b51c43415ff90611d4090859087908a90613d81565b60405180910390a3505050611e4e565b6000838152600760205260409020600301548190811015611d7f57506000838152600760205260409020600301545b60008481526006602052604081206003810154600190910154611db191600160a060020a039081169133911685611f77565b9050801515611dde575050506000828152600760205260408120600601805461ff001916905590506102fa565b600085815260066020526040902060010154611e0490600160a060020a03163387611e8d565b8433600160a060020a03167f5f96074f1a6f13e028fea4b54d89ce40af34737ec917ab068e618b51c43415ff84600087604051611e4393929190613d66565b60405180910390a350505b611e578361261f565b50506000908152600760205260409020600601805461ff0019169055600190565b600082821115611e8757600080fd5b50900390565b600081815260066020526040902060010154600160a060020a03848116911614611ecc5760405160e560020a62461bcd02815260040161034b90613bc4565b600160a060020a0382161515611ef75760405160e560020a62461bcd02815260040161034b90613c54565b611f018382612300565b611f0b8282612240565b600081815260066020526040808220600101805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0386811691821790925591518493918716917f71bf9544ab5405f66022054c1753722fc8011fcea0317b8c57b43cfbf9f44dd891a4505050565b60008085600160a060020a0316858585604051602401611f9993929190613a32565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd0000000000000000000000000000000000000000000000000000000017815290518251909182918083835b6020831061201c5780518252601f199092019160209182019101611ffd565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d806000811461207e576040519150601f19603f3d011682016040523d82523d6000602084013e612083565b606091505b5090925050505b949350505050565b6000828201838110156120a457600080fd5b9392505050565b60408051600481526024810182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f313ce56700000000000000000000000000000000000000000000000000000000178152915181516000938493606093600160a060020a03881693919290918291908083835b602083106121425780518252601f199092019160209182019101612123565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146121a4576040519150601f19603f3d011682016040523d82523d6000602084013e6121a9565b606091505b50915091508115156121d05760405160e560020a62461bcd02815260040161034b90613ca4565b6000805b8251811015612237578060010183510360080260020a83828151811015156121f857fe5b6020910101517f01000000000000000000000000000000000000000000000000000000000000009081900481020460ff160291909101906001016121d4565b50949350505050565b600160a060020a0390911660009081526004602081815260408084208054868652600584529185208290559282526001810183559183529091200155565b600085801561228c57508484115b156122a4576122a1848663ffffffff611e7816565b90505b851580156122b157508385115b156122c9576122c6858563ffffffff611e7816565b90505b6118f960646122f4856122e88560ff8816600a0a63ffffffff6126e416565b9063ffffffff6126e416565b9063ffffffff61270f16565b600160a060020a03821660009081526004602052604081205461232a90600163ffffffff611e7816565b6000838152600560205260409020549091508082146123c757600160a060020a038416600090815260046020526040812080548490811061236757fe5b90600052602060002001549050806004600087600160a060020a0316600160a060020a03168152602001908152602001600020838154811015156123a757fe5b600091825260208083209091019290925591825260059052604090208190555b600160a060020a03841660009081526004602052604090208054906123f09060001983016127b1565b5050505050565b60009081526006602081905260408220805473ffffffffffffffffffffffffffffffffffffffff199081168255600182018054821690556002820180548216905560038201805482169055600482018054821690556005820180549091169055908101829055600781018290556008810182905560098101829055600a8101829055600b810191909155600c8101805460ff19169055600d01805463ffffffff19169055565b60008085600160a060020a03168585856040516024016124bf93929190613a5a565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f1aa8ccc90000000000000000000000000000000000000000000000000000000017815290518251909182918083835b602083106125425780518252601f199092019160209182019101612523565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146125a4576040519150601f19603f3d011682016040523d82523d6000602084013e6125a9565b606091505b505090508015156125cf5760405160e560020a62461bcd02815260040161034b90613bb4565b8285600160a060020a03167f6e9f88567c24566f7654186f0a7171f7c85eff316314402531824e2d1e2b1675868960405161260b929190613d30565b60405180910390a350600195945050505050565b6000908152600760205260408120818155600181018290556002810182905560038101829055600481018290556005810191909155600601805460ff19169055565b600081815260076020526040812060028101546004820154600583015492549192849261269e92916122f4916122e890439063ffffffff611e7816565b6000858152600660205260409020600d015490915060ff16156126d4576126cb828263ffffffff61209216565b925050506102fa565b6126cb828263ffffffff611e7816565b60008215156126f557506000610511565b82820282848281151561270457fe5b04146120a457600080fd5b600080821161271d57600080fd5b6000828481151561272a57fe5b04949350505050565b610220604051908101604052806127486127d5565b815260200161275561280a565b815260200161276261284b565b905290565b610100604051908101604052806000815260200160008152602001600081526020016000815260200160008152602001600081526020016000151581526020016000151581525090565b81548183558181111561055e5760008381526020902061055e918101908301612872565b6040805160c081018252600080825260208201819052918101829052606081018290526080810182905260a081019190915290565b60e060405190810160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600060ff1681525090565b60408051608081018252600080825260208201819052918101829052606081019190915290565b61289091905b8082111561288c5760008155600101612878565b5090565b90565b60006120a48235613ddb565b60006120a48235613de6565b60006120a48251613de6565b60006120a48235613dfd565b60006120a48235612890565b6000602082840312156128e157600080fd5b600061208a8484612893565b6000806040838503121561290057600080fd5b600061290c8585612893565b925050602061291d85828601612893565b9150509250929050565b60008060008060008060008060008060006101608c8e03121561294957600080fd5b60006129558e8e612893565b9b505060206129668e828f01612893565b9a505060406129778e828f01612893565b99505060606129888e828f01612893565b98505060806129998e828f016128c3565b97505060a06129aa8e828f016128c3565b96505060c06129bb8e828f016128c3565b95505060e06129cc8e828f016128c3565b9450506101006129de8e828f0161289f565b9350506101206129f08e828f0161289f565b925050610140612a028e828f0161289f565b9150509295989b509295989b9093969950565b600080600060608486031215612a2a57600080fd5b6000612a368686612893565b9350506020612a4786828701612893565b9250506040612a58868287016128c3565b9150509250925092565b60008060408385031215612a7557600080fd5b6000612a818585612893565b925050602061291d858286016128c3565b600060208284031215612aa457600080fd5b600061208a84846128ab565b600060208284031215612ac257600080fd5b600061208a84846128b7565b600060208284031215612ae057600080fd5b600061208a84846128c3565b60008060008060008060008060008060006101608c8e031215612b0e57600080fd5b6000612b1a8e8e6128c3565b9b50506020612b2b8e828f01612893565b9a50506040612b3c8e828f01612893565b9950506060612b4d8e828f01612893565b9850506080612b5e8e828f01612893565b97505060a0612b6f8e828f016128c3565b96505060c0612b808e828f016128c3565b95505060e0612b918e828f016128c3565b9450506101006129de8e828f016128c3565b60008060408385031215612bb657600080fd5b6000612a8185856128c3565b60008060008060008060c08789031215612bdb57600080fd5b6000612be789896128c3565b9650506020612bf889828a016128c3565b9550506040612c0989828a016128c3565b9450506060612c1a89828a016128c3565b9350506080612c2b89828a016128c3565b92505060a0612c3c89828a016128c3565b9150509295509295509295565b612c5281613e22565b82525050565b612c5281613ddb565b6000612c6c82613dd7565b808452602084019350612c7e83613dd1565b60005b82811015612cae57612c94868351613971565b612c9d82613dd1565b602096909601959150600101612c81565b5093949350505050565b612c5281613de6565b612c5281613e2d565b601881527f6164647265737365732063616e6e6f74206265207a65726f0000000000000000602082015260400190565b601b81527f455243323020746f6b656e207472616e73666572206661696c65640000000000602082015260400190565b601981527f6f7261636c65206665652063616e6e6f74206265207a65726f00000000000000602082015260400190565b603781527f63616e6e6f74207361746973667920796f7572206f776e2061756374696f6e3b60208201527f2075736520656e6441756374696f6e20696e7374656164000000000000000000604082015260600190565b602181527f796f75206d757374206f776e207468652052465020746f20757064617465206960208201527f7400000000000000000000000000000000000000000000000000000000000000604082015260600190565b601f81527f6f7074696f6e2063616e6e6f742068617665206265656e20636c656172656400602082015260400190565b601f81527f7265736f6c7665206164647265737320776173206e6f7420636f727265637400602082015260400190565b603381527f61756374696f6e2063616e6e6f7420626520696e207468652070726f6365737360208201527f206f66206265696e672073617469736669656400000000000000000000000000604082015260600190565b601781527f5f746f6b656e49642063616e6e6f74206265207a65726f000000000000000000602082015260400190565b602281527f796f75206d757374206f776e206120746f6b656e20746f2061756374696f6e2060208201527f6974000000000000000000000000000000000000000000000000000000000000604082015260600190565b60208082527f7472616e7366657246726f6d20646964206e6f742072657475726e20747275659082015260400190565b602481527f61756374696f6e206d7573742062652061637469766520746f2073617469736660208201527f7920697400000000000000000000000000000000000000000000000000000000604082015260600190565b602b81527f45524332302062616c616e6365206973206c657373207468616e20726571756560208201527f7374656420616d6f756e74000000000000000000000000000000000000000000604082015260600190565b603481527f63616e6e6f74207265656e74657220746869732066756e6374696f6e2077686960208201527f6c6520697420697320696e2070726f6772657373000000000000000000000000604082015260600190565b602181527f61756374696f6e2063616e6e6f7420616c72656164792062652072756e6e696e60208201527f6700000000000000000000000000000000000000000000000000000000000000604082015260600190565b602681527f706967677920686173206e6f7420726563656976656420616e206f7261636c6560208201527f2070726963650000000000000000000000000000000000000000000000000000604082015260600190565b601f81527f546f6b656e207472616e7366657220646964206e6f7420636f6d706c65746500602082015260400190565b602b81527f796f752063616e6e6f74206275726e206120746f6b656e20776869636820697360208201527f206f6e2061756374696f6e000000000000000000000000000000000000000000604082015260600190565b602181527f6665746368207375636365737320646964206e6f742072657475726e2074727560208201527f6500000000000000000000000000000000000000000000000000000000000000604082015260600190565b601d81527f66726f6d2061646472657373206973206e6f7420746865206f776e6572000000602082015260400190565b601681527f746f6b656e49642063616e6e6f74206265207a65726f00000000000000000000602082015260400190565b601681527f616464726573732063616e6e6f74206265207a65726f00000000000000000000602082015260400190565b601e81527f746f6b656e2068617320616c7265616479206265656e20636c65617265640000602082015260400190565b60208082527f6f7074696f6e20706172616d65746572732063616e6e6f74206265207a65726f9082015260400190565b602181527f73656e6465722063616e6e6f7420626520746865207a65726f2061646472657360208201527f7300000000000000000000000000000000000000000000000000000000000000604082015260600190565b602181527f796f75206d757374206f776e2074686520746f6b656e20746f206275726e206960208201527f7400000000000000000000000000000000000000000000000000000000000000604082015260600190565b601981527f6d73672e73656e6465722063616e6e6f74206265207a65726f00000000000000602082015260400190565b601a81527f6f7074696f6e206d757374206e6f742062652065787069726564000000000000602082015260400190565b601281527f746f2061646472657373206973207a65726f0000000000000000000000000000602082015260400190565b602481527f63616c6c20746f207265736f6c76657220646964206e6f742072657475726e2060208201527f7472756500000000000000000000000000000000000000000000000000000000604082015260600190565b602381527f61756374696f6e206d7573742062652061637469766520746f2063616e63656c60208201527f2069740000000000000000000000000000000000000000000000000000000000604082015260600190565b602681527f61756374696f6e2063616e6e6f7420657870697265206166746572207468652060208201527f6f7074696f6e0000000000000000000000000000000000000000000000000000604082015260600190565b602981527f796f75206d757374206f776e2074686520636f6c6c61746572616c20746f207260208201527f65636c61696d2069740000000000000000000000000000000000000000000000604082015260600190565b603d81527f636f6c6c61746572616c204552432d323020636f6e747261637420646f65732060208201527f6e6f742070726f7065726c79207370656369667920646563696d616c73000000604082015260600190565b602c81527f63616e6e6f7420636c656172206120746f6b656e207768696c6520617563746960208201527f6f6e206973206163746976650000000000000000000000000000000000000000604082015260600190565b604181527f6f6e6c792074686520686f6c6465722063616e20736574746c6520616e20416d60208201527f65726963616e207374796c65206f7074696f6e206265666f726520657870697260408201527f7900000000000000000000000000000000000000000000000000000000000000606082015260800190565b602381527f4575726f7065616e206f7074696f6e206e6565647320746f206265206578706960208201527f7265640000000000000000000000000000000000000000000000000000000000604082015260600190565b601a81527f796f752063616e206f6e6c792075706461746520616e20524650000000000000602082015260400190565b601b81527f6d73672e73656e646572206973206e6f7420746865206f776e65720000000000602082015260400190565b8051608083019061376f8482612cb8565b5060208201516137826020850182612cb8565b5060408201516137956040850182612cb8565b5060608201516137a86060850182612cb8565b50505050565b805160c08301906137bf8482612c58565b5060208201516137d26020850182612c58565b5060408201516137e56040850182612c58565b5060608201516137f86060850182612c58565b50608082015161380b6080850182612c58565b5060a08201516137a860a0850182612c58565b80516101008301906138308482613971565b5060208201516138436020850182613971565b5060408201516138566040850182613971565b5060608201516138696060850182613971565b50608082015161387c6080850182613971565b5060a082015161388f60a0850182613971565b5060c08201516138a260c0850182612cb8565b5060e08201516137a860e0850182612cb8565b805160e08301906138c68482613971565b5060208201516138d96020850182613971565b5060408201516138ec6040850182613971565b5060608201516138ff6060850182613971565b5060808201516139126080850182613971565b5060a082015161392560a0850182613971565b5060c08201516137a860c085018261397a565b805161022083019061394a84826137ae565b50602082015161395d60c08501826138b5565b5060408201516137a86101a085018261375e565b612c5281612890565b612c5281613df7565b604081016139918285612c58565b6120a46020830184613971565b604081016139918285612c49565b61014081016139bb828d612c58565b6139c8602083018c612c58565b6139d5604083018b612c58565b6139e2606083018a612c58565b6139ef6080830189613971565b6139fc60a0830188613971565b613a0960c0830187613971565b613a1660e0830186613971565b613a24610100830185612cb8565b6108b8610120830184612cb8565b60608101613a408286612c58565b613a4d6020830185612c58565b61208a6040830184613971565b60608101613a688286612c58565b613a4d6020830185613971565b602080825281016120a48184612c61565b602081016105118284612cb8565b6020808252810161051181612cca565b6020808252810161051181612cfa565b6020808252810161051181612d2a565b6020808252810161051181612d5a565b6020808252810161051181612db0565b6020808252810161051181612e06565b6020808252810161051181612e36565b6020808252810161051181612e66565b6020808252810161051181612ebc565b6020808252810161051181612eec565b6020808252810161051181612f42565b6020808252810161051181612f72565b6020808252810161051181612fc8565b602080825281016105118161301e565b6020808252810161051181613074565b60208082528101610511816130ca565b6020808252810161051181613120565b6020808252810161051181613150565b60208082528101610511816131a6565b60208082528101610511816131fc565b602080825281016105118161322c565b602080825281016105118161325c565b602080825281016105118161328c565b60208082528101610511816132bc565b60208082528101610511816132ec565b6020808252810161051181613342565b6020808252810161051181613398565b60208082528101610511816133c8565b60208082528101610511816133f8565b6020808252810161051181613428565b602080825281016105118161347e565b60208082528101610511816134d4565b602080825281016105118161352a565b6020808252810161051181613580565b60208082528101610511816135d6565b602080825281016105118161362c565b60208082528101610511816136a8565b60208082528101610511816136fe565b602080825281016105118161372e565b6101008101610511828461381e565b61022081016105118284613938565b602081016105118284613971565b60408101613d3e8285613971565b6120a46020830184612c58565b60408101613d598285613971565b6120a46020830184612cb8565b60608101613d748286613971565b613a4d6020830185612cc1565b60608101613a688286613971565b60a08101613d9d8288613971565b613daa6020830187613971565b613db76040830186613971565b613dc46060830185613971565b6118f96080830184613971565b60200190565b5190565b600061051182613deb565b151590565b600160a060020a031690565b60ff1690565b7fffffffff000000000000000000000000000000000000000000000000000000001690565b600061051182613e38565b600061051182612890565b600061051182613ddb56fea265627a7a72305820a505ae629d671c7661683a617574cce35efd11259d3e071b5b8a6304c67aa4416c6578706572696d656e74616cf50037", + "sourceMap": "1368:33218:4:-;;;4888:119;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;639:39:0;658:19;639:18;;;;:39;:::i;:::-;4945:5:4;:18;;-1:-1:-1;;;;;;4945:18:4;4953:10;4945:18;;;1368:33218;;988:158:0;1063:25;;;;;;1055:34;;;;;;1099:33;;:20;:33;;;;;;;;;;:40;;-1:-1:-1;;1099:40:0;1135:4;1099:40;;;988:158::o;1368:33218:4:-;;;;;;;", + "deployedSourceMap": "1368:33218:4:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1368:33218:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;776:133:0;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;1460:22:4;;;:::i;:::-;;;;;;;;32125:755;;;;;;;;;:::i;12435:251::-;;;;;;;;;:::i;:::-;;12222:209;;;;;;;;;:::i;8452:2176::-;;;;;;;;;:::i;30350:1636::-;;;;;;;;;:::i;34491:93::-;;;:::i;15588:892::-;;;;;;;;;:::i;26190:1449::-;;;;;;;;;:::i;13529:1947::-;;;;;;;;;:::i;12025:193::-;;;;;;;;;:::i;:::-;;;;;;;;28138:693;;;;;;;;;:::i;11309:122::-;;;;;;;;;:::i;:::-;;;;;;;;19131:1006;;;;;;;;;:::i;17052:2075::-;;;;;;;;;:::i;11499:138::-;;;;;;;;;:::i;:::-;;;;;;;;21032:3643;;;;;;;;;:::i;776:133:0:-;869:33;;;846:4;869:33;;;;;;;;;;;;;776:133;;;;:::o;1460:22:4:-;;;;:::o;32125:755::-;32257:10;32210:4;32243:25;;;:13;:25;;;;;;;;-1:-1:-1;;;;;32243:40:4;;;;;;;;;;32232:51;;;32224:107;;;;-1:-1:-1;;;;;32224:107:4;;;;;;;;;;;;;;;;;32394:10;32380:25;;;;:13;:25;;;;;;;;-1:-1:-1;;;;;32380:40:4;;;;;;;;;;:53;;32425:7;32380:53;:44;:53;:::i;:::-;32351:10;32337:25;;;;:13;:25;;;;;;;;-1:-1:-1;;;;;32337:40:4;;;;;;;;;;:96;;;;32610:105;;32337:25;;:40;32610:105;;32700:7;;32610:105;;;;;;;;-1:-1:-1;;26:21;;;22:32;6:49;;32610:105:4;;;49:4:-1;25:18;;61:17;;32610:105:4;182:15:-1;32610:105:4;179:29:-1;160:49;;32561:160:4;;;;;;;;;;25:18:-1;36:153;66:2;58:11;;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;32561:160:4;;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;32542:179:4;;;32735:7;32727:47;;;;;;-1:-1:-1;;;;;32727:47:4;;;;;;;;;32786:71;;-1:-1:-1;;;;;32786:71:4;;;32823:7;;32805:10;;32786:71;;;;;32871:4;32864:11;;;32125:755;;;;;:::o;12435:251::-;12544:17;;;;:7;:17;;;;;:34;;;-1:-1:-1;;;;;12544:34:4;12530:10;:48;12522:88;;;;-1:-1:-1;;;;;12522:88:4;;;;;;;;;12642:39;12660:5;12667:3;12672:8;12642:17;:39::i;:::-;12435:251;;;:::o;12222:209::-;12312:7;-1:-1:-1;;;;;12337:20:4;;;;12329:55;;;;-1:-1:-1;;;;;12329:55:4;;;;;;;;;-1:-1:-1;;;;;;12397:21:4;;;;;;;:13;:21;;;;;;;;:29;;;;;;;;;;;;;12222:209::o;8452:2176::-;8757:4;-1:-1:-1;;;;;8783:28:4;;;;;;:62;;-1:-1:-1;;;;;;8820:25:4;;;;8783:62;:101;;;;-1:-1:-1;;;;;;8854:30:4;;;;8783:101;:145;;;;-1:-1:-1;;;;;;8893:35:4;;;;8783:145;8769:197;;;;;;-1:-1:-1;;;;;8769:197:4;;;;;;;;;8985:16;;;;;:38;;-1:-1:-1;9010:13:4;;;8985:38;:64;;;;-1:-1:-1;9032:17:4;;;8985:64;:85;;;;-1:-1:-1;9058:12:4;;;8985:85;8971:145;;;;;;-1:-1:-1;;;;;8971:145:4;;;;;;;;;9191:10;9190:11;9186:233;;;9210:12;9225:130;9256:14;9296:10;9323:4;9337:11;9225:22;:130::i;:::-;9210:145;;9370:7;9362:51;;;;;;-1:-1:-1;;;;;9362:51:4;;;;;;;;;9186:233;;9546:7;;:14;;9558:1;9546:14;:11;:14;:::i;:::-;9536:7;:24;;;;9627:15;9645:7;:16;9653:7;;9645:16;;;;;;;;;;;9627:34;;9687:10;9666:1;:11;;:18;;;:31;;;;;-1:-1:-1;;;;;9666:31:4;;;;;-1:-1:-1;;;;;9666:31:4;;;;;;9730:14;9702:1;:11;;:25;;;:42;;;;;-1:-1:-1;;;;;9702:42:4;;;;;-1:-1:-1;;;;;9702:42:4;;;;;;9774:11;9749:1;:11;;:22;;;:36;;;;;-1:-1:-1;;;;;9749:36:4;;;;;-1:-1:-1;;;;;9749:36:4;;;;;;9820:16;9790:1;:11;;:27;;;:46;;;;;-1:-1:-1;;;;;9790:46:4;;;;;-1:-1:-1;;;;;9790:46:4;;;;;;9876:21;9841:1;:11;;:32;;;:56;;;;;-1:-1:-1;;;;;9841:56:4;;;;;-1:-1:-1;;;;;9841:56:4;;;;;;9937:33;9955:14;9937:17;:33::i;:::-;9902:32;;;:68;;-1:-1:-1;;9902:68:4;;;;;;;;;;;;9975:21;;;:32;;;10012:25;;;:40;;;10080:25;:7;10092:12;10080:11;:25::i;:::-;10057:20;;;:48;10110:7;;;:24;;-1:-1:-1;;10110:24:4;;;;;;;-1:-1:-1;;10139:22:4;;;;;;;-1:-1:-1;;10166:30:4;;;;;;;;;;;;10268:165;;10291:27;;;:41;;;10268:165;;;10351:31;;-1:-1:-1;;10351:31:4;10372:10;10351:31;;;10389:13;;;:38;;;10268:165;10437:44;10461:10;10473:7;;10437:23;:44::i;:::-;10527:7;;10541:12;;10510:10;10492:115;10560:25;:7;10572:12;10560:25;:11;:25;:::i;:::-;10592:10;10492:115;;;;;;;;;;;;;;;;10620:4;10613:11;;;8452:2176;;;;;;;;;;;;;;:::o;30350:1636::-;30415:4;30439:10;:24;;30431:62;;;;-1:-1:-1;;;;;30431:62:4;;;;;;;;;30508:13;;;30500:48;;;;-1:-1:-1;;;;;30500:48:4;;;;;;;;;30563:17;;;;:7;:17;;;;;:23;;:38;;;;;;30555:89;;;;;;-1:-1:-1;;;;;30555:89:4;;;;;;;;;30652:14;30677:17;;;:7;:17;;;;;:23;;:30;;;;;;30674:152;;;30726:17;;;;:7;:17;;;;;:36;;;30766:12;-1:-1:-1;30726:52:4;30718:100;;;;-1:-1:-1;;;;;30718:100:4;;;;;;;;;30872:17;;;;:7;:17;;;;;:23;;;:29;30912:45;;;;30968:41;;;;31020:37;;;;31068:48;;;;;30841:282;;30872:29;;;;;;;;31020:37;;31068:48;30841:20;:282::i;:::-;31202:15;31220:17;;;:7;:17;;;;;;;;:34;;;31279;;;31345:41;;;;31407:29;;;;:40;30832:291;;-1:-1:-1;;;;;;31220:34:4;;;;31279;;;;31345:41;;;31398:49;;31394:121;;;31467:17;;;;:7;:17;;;;;;;;:29;:40;;-1:-1:-1;31394:121:4;-1:-1:-1;;;;;31562:22:4;;;;;;;:13;:22;;;;;;;;:38;;;;;;;;;;:50;;31605:6;31562:50;:42;:50;:::i;:::-;-1:-1:-1;;;;;31521:22:4;;;;;;;:13;:22;;;;;;;;:38;;;;;;;;;;;:91;;;;31660:17;;;:7;:17;;;;;:29;:40;:52;;31705:6;31660:52;:44;:52;:::i;:::-;-1:-1:-1;;;;;31619:22:4;;;;;;;:13;:22;;;;;;;;:38;;;;;;;;;;;:93;;;;31796:17;;;:7;:17;;;;;:29;:40;31781:6;;31764:8;;31745:10;;31725:130;;31796:52;;31781:6;31796:52;:44;:52;:::i;:::-;31725:130;;;;;;;;;;;;;;;31863:47;31892:7;31901:8;31863:28;:47::i;:::-;31941:21;31953:8;31941:11;:21::i;:::-;-1:-1:-1;31976:4:4;;30350:1636;-1:-1:-1;;;;;30350:1636:4:o;34491:93::-;34548:5;;-1:-1:-1;;;;;34548:5:4;34534:10;:19;34526:28;;;;;;34573:5;;-1:-1:-1;;;;;34573:5:4;34560:19;15588:892;15654:4;15690:17;;;:7;:17;;;;;:34;;;-1:-1:-1;;;;;15690:34:4;15676:10;:48;15668:94;;;;-1:-1:-1;;;;;15668:94:4;;;;;;;;;15777:18;;;;:8;:18;;;;;:32;;;;;15776:33;15768:89;;;;-1:-1:-1;;;;;15768:89:4;;;;;;;;;15868:17;;;;:7;:17;;;;;:23;;:33;;;15867:34;15863:324;;;15933:17;;;;:7;:17;;;;;:34;-1:-1:-1;;;;;15933:34:4;15919:10;:48;15911:102;;;;-1:-1:-1;;;;;15911:102:4;;;;;;;;;16075:17;;;;:7;:17;;;;;;;;;:41;;;;16139:29;;:40;16062:118;;;;;-1:-1:-1;;;;;16075:41:4;;;;16062:64;;:118;;16127:10;;16062:118;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16062:118:4;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;16062:118:4;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;16062:118:4;;;;;;;;;;15863:324;16234:17;;;;:7;:17;;;;;;:23;;:33;16197:71;;16234:33;;;;16197:71;;;16242:8;;16212:10;;16197:71;;;16338:17;;;;:7;:17;;;;;:34;;;16309:74;;-1:-1:-1;;;;;16338:34:4;16346:8;16309:28;:74::i;:::-;16437:21;16449:8;16437:11;:21::i;:::-;-1:-1:-1;16471:4:4;15588:892;;;:::o;26190:1449::-;26372:4;26394:10;:24;;26386:70;;;;-1:-1:-1;;;;;26386:70:4;;;;;;;;;26534:18;;;;:8;:18;;;;;:32;;;;;26533:33;26525:90;;;;-1:-1:-1;;;;;26525:90:4;;;;;;;;;26630:17;;;;:7;:17;;;;;:23;;:38;;;;;;26629:39;26621:82;;;;-1:-1:-1;;;;;26621:82:4;;;;;;;;;26783:13;;;26775:49;;;;-1:-1:-1;;;;;26775:49:4;;;;;;;;;26838:15;;;26830:53;;;;-1:-1:-1;;;;;26830:53:4;;;;;;;;;26927:17;;;;:7;:17;;;;;:23;;:30;;;;;;26923:112;;;26975:17;;;;:7;:17;;;;;:36;;;27015:12;-1:-1:-1;26975:52:4;26967:61;;;;;;27084:21;27115:17;;;:7;:17;;;;;:23;;:30;;;;;;;:87;;-1:-1:-1;27150:17:4;;;;:7;:17;;;;;:36;;;27189:12;-1:-1:-1;27115:87:4;27111:390;;;-1:-1:-1;27232:17:4;;;;:7;:17;;;;;:48;;;-1:-1:-1;;;;;27232:48:4;27111:390;;;27323:17;;;;:7;:17;;;;;:34;;;-1:-1:-1;;;;;27323:34:4;27309:10;:48;27301:126;;;;-1:-1:-1;;;;;27301:126:4;;;;;;;;;-1:-1:-1;27451:17:4;;;;:7;:17;;;;;:43;;;-1:-1:-1;;;;;27451:43:4;27111:390;27514:62;27528:13;27543:10;27555;27567:8;27514:13;:62::i;:::-;27506:111;;;;;;-1:-1:-1;;;;;27506:111:4;;;;;;;;;-1:-1:-1;27630:4:4;;26190:1449;-1:-1:-1;;;26190:1449:4:o;13529:1947::-;13894:4;13916:17;;;:7;:17;;;;;:34;;;-1:-1:-1;;;;;13916:34:4;13954:10;13916:48;13908:94;;;;-1:-1:-1;;;;;13908:94:4;;;;;;;;;14016:17;;;;:7;:17;;;;;:23;;:33;;;14008:72;;;;;;-1:-1:-1;;;;;14008:72:4;;;;;;;;;14086:19;-1:-1:-1;;;;;14115:28:4;;;14111:107;;14153:17;;;;:7;:17;;;;;:41;;:58;;-1:-1:-1;;14153:58:4;-1:-1:-1;;;;;14153:58:4;;;;;14111:107;-1:-1:-1;;;;;14227:25:4;;;14223:98;;14262:17;;;;:7;:17;;;;;:38;;:52;;-1:-1:-1;;14262:52:4;-1:-1:-1;;;;;14262:52:4;;;;;14223:98;-1:-1:-1;;;;;14330:30:4;;;14326:113;;14370:17;;;;:7;:17;;;;;:43;;:62;;-1:-1:-1;;14370:62:4;-1:-1:-1;;;;;14370:62:4;;;;;14326:113;-1:-1:-1;;;;;14448:35:4;;;14444:128;;14493:17;;;;:7;:17;;;;;:48;;:72;;-1:-1:-1;;14493:72:4;-1:-1:-1;;;;;14493:72:4;;;;;14444:128;14581:19;;14577:100;;14610:17;;;;:7;:17;;;;;:43;;:60;;;14577:100;14686:13;;14682:82;;14709:17;;;;:7;:17;;;;;:37;;:48;;;14682:82;14773:17;;14769:95;;14801:17;;;;:7;:17;;;;;:41;;:56;;;14769:95;14873:12;;14869:234;;15013:25;:7;15025:12;15013:25;:11;:25;:::i;:::-;15046:17;;;;:7;:17;;;;;:36;;:50;;;14999:39;-1:-1:-1;14869:234:4;15141:7;15108;:17;15116:8;15108:17;;;;;;;;;;;:23;;:30;;;:40;;;;;;;;;;;;;;;;;;15186:6;15154:7;:17;15162:8;15154:17;;;;;;;;;;;:23;;:29;;;:38;;;;;;;;;;;;;;;;;;15239:8;15221:10;-1:-1:-1;;;;;15204:249:4;;15255:14;15277:11;15296:16;15320:21;15349:14;15371:8;15387:12;15407:11;15426:7;15441:6;15204:249;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;15467:4:4;;13529:1947;-1:-1:-1;;;;;;;;;;;;13529:1947:4:o;12025:193::-;12099:16;-1:-1:-1;;;;;12133:20:4;;;;12125:55;;;;-1:-1:-1;;;;;12125:55:4;;;;;;;;;-1:-1:-1;;;;;12193:20:4;;;;;;:12;:20;;;;;;;;;12186:27;;;;;;;;;;;;;;;;;12193:20;;12186:27;;12193:20;12186:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12025:193;;;:::o;28138:693::-;28222:21;28253:17;;;:7;:17;;;;;:23;;:30;;;;;;;:87;;-1:-1:-1;28288:17:4;;;;:7;:17;;;;;:36;;;28327:12;-1:-1:-1;28253:87:4;28249:256;;;-1:-1:-1;28370:17:4;;;;:7;:17;;;;;:48;;;-1:-1:-1;;;;;28370:48:4;28249:256;;;-1:-1:-1;28455:17:4;;;;:7;:17;;;;;:43;;;-1:-1:-1;;;;;28455:43:4;28249:256;28518:10;-1:-1:-1;;;;;28518:27:4;;;28510:71;;;;-1:-1:-1;;;;;28510:71:4;;;;;;;;;28640:17;;;;:7;:17;;;;;;:45;;;:54;;;28700:23;;:45;;-1:-1:-1;;28700:45:4;;;;;28757:68;28688:6;;28648:8;;28779:10;;28757:68;;;28138:693;;;:::o;11309:122::-;11380:12;;:::i;:::-;-1:-1:-1;11409:17:4;;;;:7;:17;;;;;;;;;11402:24;;;;;;;;;-1:-1:-1;;;;;11402:24:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;11402:24:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;11402:24:4;;;;;11309:122::o;19131:1006::-;19193:4;19215:17;;;:7;:17;;;;;:34;;;-1:-1:-1;;;;;19215:34:4;19253:10;19215:48;19207:95;;;;-1:-1:-1;;;;;19207:95:4;;;;;;;;;19316:18;;;;:8;:18;;;;;:32;;;;;19308:80;;;;;;-1:-1:-1;;;;;19308:80:4;;;;;;;;;19403:18;;;;:8;:18;;;;;:36;;;;;;;;19402:37;19394:101;;;;-1:-1:-1;;;;;19394:101:4;;;;;;;;;19557:17;;;;:7;:17;;;;;:23;;:33;;;19553:449;;;19642:24;19669:18;;;:8;:18;;;;;;;;:31;;;;;19917:7;:17;;;;;;;:38;;;;19904:91;;;;;19669:31;;-1:-1:-1;;;;;19917:38:4;;19904:61;;:91;;19966:10;;19669:31;;19904:91;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;19904:91:4;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;19904:91:4;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;19904:91:4;;;;;;;;;;19553:449;;20007:30;20028:8;20007:20;:30::i;:::-;20081:17;;;;:7;:17;;;;;;:23;;:33;20048:67;;20081:33;;;;20048:67;;;20089:8;;20059:10;;20048:67;;;-1:-1:-1;20128:4:4;19131:1006;;;:::o;17052:2075::-;17253:4;;17292:32;:12;17309:14;17292:32;:16;:32;:::i;:::-;17338:17;;;;:7;:17;;;;;:34;;;17267:57;;-1:-1:-1;;;;;;17338:34:4;17376:10;17338:48;17330:95;;;;-1:-1:-1;;;;;17330:95:4;;;;;;;;;17439:17;;;;:7;:17;;;;;:36;;;17478:12;-1:-1:-1;17431:90:4;;;;-1:-1:-1;;;;;17431:90:4;;;;;;;;;17535:17;;;;:7;:17;;;;;:36;;;:53;-1:-1:-1;17527:104:4;;;;-1:-1:-1;;;;;17527:104:4;;;;;;;;;17646:17;;;;:7;:17;;;;;:23;;:38;;;;;;17645:39;17637:83;;;;-1:-1:-1;;;;;17637:83:4;;;;;;;;;17735:18;;;;:8;:18;;;;;:32;;;;;17734:33;17726:79;;;;-1:-1:-1;;;;;17726:79:4;;;;;;;;;18153:17;;;;:7;:17;;;;;:23;;:33;;;18149:359;;;18196:12;18243:17;;;:7;:17;;;;;:38;;;18211:230;;-1:-1:-1;;;;;18243:38:4;18291:10;18319:4;18334:13;18211:22;:230::i;:::-;18196:245;;18457:7;18449:52;;;;;;-1:-1:-1;;;;;18449:52:4;;;;;;;;;18149:359;;18607:18;;;;:8;:18;;;;;;;18639:12;18607:44;;18657:30;;;;:47;;;18710:29;;;:43;;;18759:31;;;:47;;;18812:27;;;:39;;;18857:28;;;:41;;;18904:32;;;;:39;;-1:-1:-1;;18904:39:4;;;;;;18955:149;18616:8;;18975:10;;18955:149;;;;18742:11;;18793:13;;19049:14;;18842:9;;18888:10;;18955:149;;;;;;;;;;19118:4;19111:11;;;17052:2075;;;;;;;;;:::o;11499:138::-;11577:20;;:::i;:::-;-1:-1:-1;11614:18:4;;;;:8;:18;;;;;;;;;11607:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11499:138::o;21032:3643::-;21098:4;21121:18;;;:8;:18;;;;;:36;;;;;;;;21120:37;21112:102;;;;-1:-1:-1;;;;;21112:102:4;;;;;;;;;21228:17;;;;:7;:17;;;;;:34;;;-1:-1:-1;;;;;21228:34:4;21266:10;21228:48;;21220:116;;;;-1:-1:-1;;;;;21220:116:4;;;;;;;;;21350:18;;;;:8;:18;;;;;:32;;;;;21342:81;;;;;;-1:-1:-1;;;;;21342:81:4;;;;;;;;;21512:18;;;;:8;:18;;;;;:30;;;21545:12;-1:-1:-1;21508:206:4;;;21657:30;21678:8;21657:20;:30::i;:::-;-1:-1:-1;21702:5:4;21695:12;;21508:206;21860:23;21886:25;21902:8;21886:15;:25::i;:::-;21935:18;;;;:8;:18;;;;;;;;:36;;;;:43;;-1:-1:-1;;21935:43:4;;;;;21988:17;;;;;:23;;:33;21860:51;;-1:-1:-1;21935:43:4;21988:33;21984:2538;;;22083:12;22130:17;;;:7;:17;;;;;:41;;;;22224:43;;;;;22098:177;;-1:-1:-1;;;;;22130:41:4;;22181:10;;22209:4;;22098:22;:177::i;:::-;22083:192;;22288:7;22287:8;22283:99;;;-1:-1:-1;;;22346:5:4;22307:18;;;:8;:18;;;;;:36;;:44;;-1:-1:-1;;22307:44:4;;;22361:12;;22283:99;22516:17;;;;:7;:17;;;;;;;;:43;;;;:29;;22473:86;;;;22762:8;:18;;;;:31;;;22721:15;;22748:45;;22744:198;;;-1:-1:-1;22819:18:4;;;;:8;:18;;;;;:31;;;22744:198;;;22885:18;;;;:8;:18;;;;;:31;;;:48;;22921:11;22885:48;:35;:48;:::i;:::-;22875:58;;22744:198;23063:17;;;;:7;:17;;;;;;;:38;;;23050:86;;;;;-1:-1:-1;;;;;23063:38:4;;;;23050:61;;:86;;23112:10;;23124:11;;23050:86;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;23050:86:4;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;23050:86:4;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;23050:86:4;;;;;;;;;;23206:1;23196:7;:11;23192:142;;;23232:17;;;;:7;:17;;;;;;;:38;;;;;23281:34;;;;23219:106;;;;;-1:-1:-1;;;;;23232:38:4;;;;23219:61;;:106;;23281:34;;;23317:7;;23219:106;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;23219:106:4;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;23219:106:4;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;23219:106:4;;;;;;;;;;23192:142;23410:5;23374:17;;;:7;:17;;;;;;;:23;;;:41;;-1:-1:-1;;23374:41:4;;;23458:47;;-1:-1:-1;;23458:47:4;23495:10;23458:47;;;;;;23519:123;;23382:8;;23495:10;23519:123;;;;23581:11;;23602:7;;23619:15;;23519:123;;;;;;;;;;21984:2538;;;;;;23726:19;23789:18;;;:8;:18;;;;;:31;;;23748:15;;23775:45;;23771:115;;;-1:-1:-1;23846:18:4;;;;:8;:18;;;;;:31;;;23771:115;23937:12;23984:17;;;:7;:17;;;;;:38;;;;;24052:34;;;;23952:207;;-1:-1:-1;;;;;23984:38:4;;;;24032:10;;24052:34;24140:11;23952:22;:207::i;:::-;23937:222;;24172:7;24171:8;24167:99;;;-1:-1:-1;;;24230:5:4;24191:18;;;:8;:18;;;;;:36;;:44;;-1:-1:-1;;24191:44:4;;;24230:5;-1:-1:-1;24245:12:4;;24167:99;24326:17;;;;:7;:17;;;;;:34;;;24308:75;;-1:-1:-1;;;;;24326:34:4;24362:10;24334:8;24308:17;:75::i;:::-;24441:8;24421:10;-1:-1:-1;;;;;24397:117:4;;24459:11;24480:1;24491:15;24397:117;;;;;;;;;;;;;;;;;21984:2538;;;24551:30;24572:8;24551:20;:30::i;:::-;-1:-1:-1;;24648:5:4;24609:18;;;:8;:18;;;;;:36;;:44;;-1:-1:-1;;24609:44:4;;;-1:-1:-1;;21032:3643:4:o;1211:145:3:-;1269:7;1296:6;;;;1288:15;;;;;;-1:-1:-1;1325:5:3;;;1211:145::o;12758:425:4:-;12869:17;;;;:7;:17;;;;;:34;;;-1:-1:-1;;;;;12860:43:4;;;12869:34;;12860:43;12852:85;;;;-1:-1:-1;;;;;12852:85:4;;;;;;;;;-1:-1:-1;;;;;12951:17:4;;;;12943:48;;;;-1:-1:-1;;;;;12943:48:4;;;;;;;;;12997:45;13026:5;13033:8;12997:28;:45::i;:::-;13048:38;13072:3;13077:8;13048:23;:38::i;:::-;13092:17;;;;:7;:17;;;;;;:34;;:40;;-1:-1:-1;;13092:40:4;-1:-1:-1;;;;;13092:40:4;;;;;;;;;13143:35;;13092:17;;13143:35;;;;;;;12758:425;;;:::o;5054:349::-;5172:4;5187:12;5226:6;-1:-1:-1;;;;;5205:34:4;5329:5;5344:3;5357:7;5247:125;;;;;;;;;;;;;;;-1:-1:-1;;26:21;;;22:32;6:49;;5247:125:4;;;49:4:-1;25:18;;61:17;;5247:125:4;182:15:-1;5247:125:4;179:29:-1;160:49;;5205:173:4;;;;;;;;;;25:18:-1;36:153;66:2;58:11;;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;5205:173:4;;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;-1:-1;5186:192:4;;-1:-1:-1;;;5054:349:4;;;;;;;:::o;1439:145:3:-;1497:7;1528:5;;;1551:6;;;;1543:15;;;;;;1576:1;1439:145;-1:-1:-1;;;1439:145:3:o;10705:521:4:-;10864:37;;;22:32:-1;6:49;;10864:37:4;;;;;49:4:-1;25:18;;61:17;;10864:37:4;182:15:-1;10864:37:4;179:29:-1;160:49;;10822:85:4;;;;10770:5;;;;10796:22;;-1:-1:-1;;;;;10822:34:4;;;10864:37;;10822:85;;;;25:18:-1;10822:85:4;;25:18:-1;36:153;66:2;58:11;;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;10822:85:4;;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;10781:126:4;;;;10920:7;10912:81;;;;;;-1:-1:-1;;;;;10912:81:4;;;;;;;;;11028:20;;11053:140;11074:9;:16;11070:1;:20;11053:140;;;11180:1;11182;11180:3;11162:9;:16;:22;11159:1;:26;11155:1;:31;11140:9;11150:1;11140:12;;;;;;;;;;;;;;;;;;;;;;11134:19;:53;;;11119:68;;;;;11092:3;;11053:140;;;-1:-1:-1;11210:12:4;10705:521;-1:-1:-1;;;;10705:521:4:o;32884:181::-;-1:-1:-1;;;;;32998:17:4;;;;;;;:12;:17;;;;;;;;:24;;32968:27;;;:17;:27;;;;;:54;;;33028:17;;;39:1:-1;23:18;;45:23;;33028:32:4;;;;;;;;32884:181::o;29320:520::-;29503:15;29532:6;:41;;;;;29558:14;29543:12;:29;29532:41;29528:104;;;29593:32;:12;29610:14;29593:32;:16;:32;:::i;:::-;29583:42;;29528:104;29642:6;29641:7;:42;;;;;29670:12;29653:14;:29;29641:42;29637:105;;;29703:32;:14;29722:12;29703:32;:18;:32;:::i;:::-;29693:42;;29637:105;29757:58;29811:3;29757:49;29797:8;29757:35;:7;29773:18;;;29769:2;:22;29757:35;:11;:35;:::i;:::-;:39;:49;:39;:49;:::i;:::-;:53;:58;:53;:58;:::i;33069:458::-;-1:-1:-1;;;;;33185:19:4;;33160:22;33185:19;;;:12;:19;;;;;:26;:33;;33216:1;33185:33;:30;:33;:::i;:::-;33224:18;33245:27;;;:17;:27;;;;;;33160:58;;-1:-1:-1;33283:28:4;;;33279:210;;-1:-1:-1;;;;;33343:19:4;;33321;33343;;;:12;:19;;;;;:35;;33363:14;;33343:35;;;;;;;;;;;;;;33321:57;;33420:11;33386:12;:19;33399:5;-1:-1:-1;;;;;33386:19:4;-1:-1:-1;;;;;33386:19:4;;;;;;;;;;;;33406:10;33386:31;;;;;;;;;;;;;;;;;;;;;:45;;;;33439:30;;;:17;:30;;;;;:43;;;33279:210;-1:-1:-1;;;;;33494:19:4;;;;;;:12;:19;;;;;:28;;;;;-1:-1:-1;;33494:28:4;;;:::i;:::-;;33069:458;;;;:::o;33531:956::-;33635:1;33590:17;;;:7;:17;;;;;;;:47;;-1:-1:-1;;33590:47:4;;;;;;33643:34;;:47;;;;;;33696:41;;;:54;;;;;;33756:38;;;:51;;;;;;33813:43;;;:56;;;;;;33875:48;;;:61;;;;;;;33942:29;;;:44;;;33992:37;;;:41;;;34039;;;:45;;;34090:36;;;:40;;;34136:45;;;:49;;;34191:43;;;:47;;;;34244:48;;;:52;;-1:-1:-1;;34244:52:4;;;34302:23;;:41;;-1:-1:-1;;34436:46:4;;;33531:956::o;27643:491::-;27772:4;27787:12;27813:13;-1:-1:-1;;;;;27805:27:4;27902:9;27913:10;27925:8;27840:94;;;;;;;;;;;;;;;-1:-1:-1;;26:21;;;22:32;6:49;;27840:94:4;;;49:4:-1;25:18;;61:17;;27840:94:4;182:15:-1;27840:94:4;179:29:-1;160:49;;27805:135:4;;;;;;;;;;25:18:-1;36:153;66:2;58:11;;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;27805:135:4;;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;27786:154:4;;;27954:7;27946:53;;;;;;-1:-1:-1;;;;;27946:53:4;;;;;;;;;28058:8;28041:9;-1:-1:-1;;;;;28011:100:4;;28074:10;28092:13;28011:100;;;;;;;;;;;;;;;;-1:-1:-1;28125:4:4;;27643:491;-1:-1:-1;;;;;27643:491:4:o;16484:564::-;16585:1;16553:18;;;:8;:18;;;;;:33;;;16592:30;;;:34;;;16632:29;;;:33;;;16671:31;;;:35;;;16712:27;;;:31;;;16749:28;;;:32;;;;16787;;:40;;-1:-1:-1;;16787:40:4;;;16484:564::o;20307:667::-;20385:7;20596:18;;;:8;:18;;;;;:29;;;;20805:27;;;;20771:28;;;;20736:29;;20596;;20385:7;;20717:116;;20805:27;20717:83;;:49;;20718:12;;20717:49;:18;:49;:::i;:116::-;20843:17;;;;:7;:17;;;;;:23;;:33;20699:134;;-1:-1:-1;20843:33:4;;20839:131;;;20893:20;:7;20905;20893:20;:11;:20;:::i;:::-;20886:27;;;;;;20839:131;20942:20;:7;20954;20942:20;:11;:20;:::i;231:421:3:-;289:7;529:6;;525:45;;;-1:-1:-1;558:1:3;551:8;;525:45;592:5;;;596:1;592;:5;615;;;;;;;;:10;607:19;;;;;782:296;840:7;933:5;;;925:14;;;;;;949:9;965:1;961;:5;;;;;;;;;782:296;-1:-1:-1;;;;782:296:3:o;1368:33218:4:-;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;1368:33218:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;-1:-1:-1;1368:33218:4;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;5:118:-1:-;;72:46;110:6;97:20;72:46;;130:112;;194:43;229:6;216:20;194:43;;249:116;;324:36;352:6;346:13;324:36;;372:116;;438:45;475:6;462:20;438:45;;495:118;;562:46;600:6;587:20;562:46;;620:241;;724:2;712:9;703:7;699:23;695:32;692:2;;;740:1;737;730:12;692:2;775:1;792:53;837:7;817:9;792:53;;868:366;;;989:2;977:9;968:7;964:23;960:32;957:2;;;1005:1;1002;995:12;957:2;1040:1;1057:53;1102:7;1082:9;1057:53;;;1047:63;;1019:97;1147:2;1165:53;1210:7;1201:6;1190:9;1186:22;1165:53;;;1155:63;;1126:98;951:283;;;;;;1241:1483;;;;;;;;;;;;1507:3;1495:9;1486:7;1482:23;1478:33;1475:2;;;1524:1;1521;1514:12;1475:2;1559:1;1576:53;1621:7;1601:9;1576:53;;;1566:63;;1538:97;1666:2;1684:53;1729:7;1720:6;1709:9;1705:22;1684:53;;;1674:63;;1645:98;1774:2;1792:53;1837:7;1828:6;1817:9;1813:22;1792:53;;;1782:63;;1753:98;1882:2;1900:53;1945:7;1936:6;1925:9;1921:22;1900:53;;;1890:63;;1861:98;1990:3;2009:53;2054:7;2045:6;2034:9;2030:22;2009:53;;;1999:63;;1969:99;2099:3;2118:53;2163:7;2154:6;2143:9;2139:22;2118:53;;;2108:63;;2078:99;2208:3;2227:53;2272:7;2263:6;2252:9;2248:22;2227:53;;;2217:63;;2187:99;2317:3;2336:53;2381:7;2372:6;2361:9;2357:22;2336:53;;;2326:63;;2296:99;2426:3;2445:50;2487:7;2478:6;2467:9;2463:22;2445:50;;;2435:60;;2405:96;2532:3;2551:50;2593:7;2584:6;2573:9;2569:22;2551:50;;;2541:60;;2511:96;2638:3;2658:50;2700:7;2691:6;2680:9;2676:22;2658:50;;;2647:61;;2617:97;1469:1255;;;;;;;;;;;;;;;2731:491;;;;2869:2;2857:9;2848:7;2844:23;2840:32;2837:2;;;2885:1;2882;2875:12;2837:2;2920:1;2937:53;2982:7;2962:9;2937:53;;;2927:63;;2899:97;3027:2;3045:53;3090:7;3081:6;3070:9;3066:22;3045:53;;;3035:63;;3006:98;3135:2;3153:53;3198:7;3189:6;3178:9;3174:22;3153:53;;;3143:63;;3114:98;2831:391;;;;;;3229:366;;;3350:2;3338:9;3329:7;3325:23;3321:32;3318:2;;;3366:1;3363;3356:12;3318:2;3401:1;3418:53;3463:7;3443:9;3418:53;;;3408:63;;3380:97;3508:2;3526:53;3571:7;3562:6;3551:9;3547:22;3526:53;;3602:257;;3714:2;3702:9;3693:7;3689:23;3685:32;3682:2;;;3730:1;3727;3720:12;3682:2;3765:1;3782:61;3835:7;3815:9;3782:61;;3866:239;;3969:2;3957:9;3948:7;3944:23;3940:32;3937:2;;;3985:1;3982;3975:12;3937:2;4020:1;4037:52;4081:7;4061:9;4037:52;;4112:241;;4216:2;4204:9;4195:7;4191:23;4187:32;4184:2;;;4232:1;4229;4222:12;4184:2;4267:1;4284:53;4329:7;4309:9;4284:53;;4360:1489;;;;;;;;;;;;4629:3;4617:9;4608:7;4604:23;4600:33;4597:2;;;4646:1;4643;4636:12;4597:2;4681:1;4698:53;4743:7;4723:9;4698:53;;;4688:63;;4660:97;4788:2;4806:53;4851:7;4842:6;4831:9;4827:22;4806:53;;;4796:63;;4767:98;4896:2;4914:53;4959:7;4950:6;4939:9;4935:22;4914:53;;;4904:63;;4875:98;5004:2;5022:53;5067:7;5058:6;5047:9;5043:22;5022:53;;;5012:63;;4983:98;5112:3;5131:53;5176:7;5167:6;5156:9;5152:22;5131:53;;;5121:63;;5091:99;5221:3;5240:53;5285:7;5276:6;5265:9;5261:22;5240:53;;;5230:63;;5200:99;5330:3;5349:53;5394:7;5385:6;5374:9;5370:22;5349:53;;;5339:63;;5309:99;5439:3;5458:53;5503:7;5494:6;5483:9;5479:22;5458:53;;;5448:63;;5418:99;5548:3;5567:53;5612:7;5603:6;5592:9;5588:22;5567:53;;5856:366;;;5977:2;5965:9;5956:7;5952:23;5948:32;5945:2;;;5993:1;5990;5983:12;5945:2;6028:1;6045:53;6090:7;6070:9;6045:53;;6229:869;;;;;;;6418:3;6406:9;6397:7;6393:23;6389:33;6386:2;;;6435:1;6432;6425:12;6386:2;6470:1;6487:53;6532:7;6512:9;6487:53;;;6477:63;;6449:97;6577:2;6595:53;6640:7;6631:6;6620:9;6616:22;6595:53;;;6585:63;;6556:98;6685:2;6703:53;6748:7;6739:6;6728:9;6724:22;6703:53;;;6693:63;;6664:98;6793:2;6811:53;6856:7;6847:6;6836:9;6832:22;6811:53;;;6801:63;;6772:98;6901:3;6920:53;6965:7;6956:6;6945:9;6941:22;6920:53;;;6910:63;;6880:99;7010:3;7029:53;7074:7;7065:6;7054:9;7050:22;7029:53;;;7019:63;;6989:99;6380:718;;;;;;;;;7105:132;7186:45;7225:5;7186:45;;;7181:3;7174:58;7168:69;;;7244:134;7333:39;7366:5;7333:39;;7533:590;;7668:54;7716:5;7668:54;;;7740:6;7735:3;7728:19;7764:4;7759:3;7755:14;7748:21;;7809:56;7859:5;7809:56;;;7886:1;7871:230;7896:6;7893:1;7890:13;7871:230;;;7936:53;7985:3;7976:6;7970:13;7936:53;;;8006:60;8059:6;8006:60;;;8089:4;8080:14;;;;;7996:70;-1:-1;7918:1;7911:9;7871:230;;;-1:-1;8114:3;;7647:476;-1:-1;;;;7647:476;8131:101;8198:28;8220:5;8198:28;;8239:132;8320:45;8359:5;8320:45;;8379:296;8534:2;8522:15;;8571:66;8566:2;8557:12;;8550:88;8666:2;8657:12;;8515:160;8684:296;8839:2;8827:15;;8876:66;8871:2;8862:12;;8855:88;8971:2;8962:12;;8820:160;8989:296;9144:2;9132:15;;9181:66;9176:2;9167:12;;9160:88;9276:2;9267:12;;9125:160;9294:397;9449:2;9437:15;;9486:66;9481:2;9472:12;;9465:88;9587:66;9582:2;9573:12;;9566:88;9682:2;9673:12;;9430:261;9700:397;9855:2;9843:15;;9892:66;9887:2;9878:12;;9871:88;9993:66;9988:2;9979:12;;9972:88;10088:2;10079:12;;9836:261;10106:296;10261:2;10249:15;;10298:66;10293:2;10284:12;;10277:88;10393:2;10384:12;;10242:160;10411:296;10566:2;10554:15;;10603:66;10598:2;10589:12;;10582:88;10698:2;10689:12;;10547:160;10716:397;10871:2;10859:15;;10908:66;10903:2;10894:12;;10887:88;11009:66;11004:2;10995:12;;10988:88;11104:2;11095:12;;10852:261;11122:296;11277:2;11265:15;;11314:66;11309:2;11300:12;;11293:88;11409:2;11400:12;;11258:160;11427:397;11582:2;11570:15;;11619:66;11614:2;11605:12;;11598:88;11720:66;11715:2;11706:12;;11699:88;11815:2;11806:12;;11563:261;11833:296;11988:2;11976:15;;;12025:66;12011:12;;;12004:88;12120:2;12111:12;;11969:160;12138:397;12293:2;12281:15;;12330:66;12325:2;12316:12;;12309:88;12431:66;12426:2;12417:12;;12410:88;12526:2;12517:12;;12274:261;12544:397;12699:2;12687:15;;12736:66;12731:2;12722:12;;12715:88;12837:66;12832:2;12823:12;;12816:88;12932:2;12923:12;;12680:261;12950:397;13105:2;13093:15;;13142:66;13137:2;13128:12;;13121:88;13243:66;13238:2;13229:12;;13222:88;13338:2;13329:12;;13086:261;13356:397;13511:2;13499:15;;13548:66;13543:2;13534:12;;13527:88;13649:66;13644:2;13635:12;;13628:88;13744:2;13735:12;;13492:261;13762:397;13917:2;13905:15;;13954:66;13949:2;13940:12;;13933:88;14055:66;14050:2;14041:12;;14034:88;14150:2;14141:12;;13898:261;14168:296;14323:2;14311:15;;14360:66;14355:2;14346:12;;14339:88;14455:2;14446:12;;14304:160;14473:397;14628:2;14616:15;;14665:66;14660:2;14651:12;;14644:88;14766:66;14761:2;14752:12;;14745:88;14861:2;14852:12;;14609:261;14879:397;15034:2;15022:15;;15071:66;15066:2;15057:12;;15050:88;15172:66;15167:2;15158:12;;15151:88;15267:2;15258:12;;15015:261;15285:296;15440:2;15428:15;;15477:66;15472:2;15463:12;;15456:88;15572:2;15563:12;;15421:160;15590:296;15745:2;15733:15;;15782:66;15777:2;15768:12;;15761:88;15877:2;15868:12;;15726:160;15895:296;16050:2;16038:15;;16087:66;16082:2;16073:12;;16066:88;16182:2;16173:12;;16031:160;16200:296;16355:2;16343:15;;16392:66;16387:2;16378:12;;16371:88;16487:2;16478:12;;16336:160;16505:296;16660:2;16648:15;;;16697:66;16683:12;;;16676:88;16792:2;16783:12;;16641:160;16810:397;16965:2;16953:15;;17002:66;16997:2;16988:12;;16981:88;17103:66;17098:2;17089:12;;17082:88;17198:2;17189:12;;16946:261;17216:397;17371:2;17359:15;;17408:66;17403:2;17394:12;;17387:88;17509:66;17504:2;17495:12;;17488:88;17604:2;17595:12;;17352:261;17622:296;17777:2;17765:15;;17814:66;17809:2;17800:12;;17793:88;17909:2;17900:12;;17758:160;17927:296;18082:2;18070:15;;18119:66;18114:2;18105:12;;18098:88;18214:2;18205:12;;18063:160;18232:296;18387:2;18375:15;;18424:66;18419:2;18410:12;;18403:88;18519:2;18510:12;;18368:160;18537:397;18692:2;18680:15;;18729:66;18724:2;18715:12;;18708:88;18830:66;18825:2;18816:12;;18809:88;18925:2;18916:12;;18673:261;18943:397;19098:2;19086:15;;19135:66;19130:2;19121:12;;19114:88;19236:66;19231:2;19222:12;;19215:88;19331:2;19322:12;;19079:261;19349:397;19504:2;19492:15;;19541:66;19536:2;19527:12;;19520:88;19642:66;19637:2;19628:12;;19621:88;19737:2;19728:12;;19485:261;19755:397;19910:2;19898:15;;19947:66;19942:2;19933:12;;19926:88;20048:66;20043:2;20034:12;;20027:88;20143:2;20134:12;;19891:261;20161:397;20316:2;20304:15;;20353:66;20348:2;20339:12;;20332:88;20454:66;20449:2;20440:12;;20433:88;20549:2;20540:12;;20297:261;20567:397;20722:2;20710:15;;20759:66;20754:2;20745:12;;20738:88;20860:66;20855:2;20846:12;;20839:88;20955:2;20946:12;;20703:261;20973:499;21128:2;21116:15;;21165:66;21160:2;21151:12;;21144:88;21266:66;21261:2;21252:12;;21245:88;21367:66;21362:2;21353:12;;21346:88;21462:3;21453:13;;21109:363;21481:397;21636:2;21624:15;;21673:66;21668:2;21659:12;;21652:88;21774:66;21769:2;21760:12;;21753:88;21869:2;21860:12;;21617:261;21887:296;22042:2;22030:15;;22079:66;22074:2;22065:12;;22058:88;22174:2;22165:12;;22023:160;22192:296;22347:2;22335:15;;22384:66;22379:2;22370:12;;22363:88;22479:2;22470:12;;22328:160;22565:820;22770:22;;22696:4;22687:14;;;22804:55;22691:3;22770:22;22804:55;;;22716:155;22949:4;22942:5;22938:16;22932:23;22967:56;23017:4;23012:3;23008:14;22995:11;22967:56;;;22881:154;23112:4;23105:5;23101:16;23095:23;23130:56;23180:4;23175:3;23171:14;23158:11;23130:56;;;23045:153;23284:4;23277:5;23273:16;23267:23;23302:56;23352:4;23347:3;23343:14;23330:11;23302:56;;;23208:162;22669:716;;;;23473:1220;23687:22;;23616:4;23607:14;;;23721:61;23611:3;23687:22;23721:61;;;23636:158;23872:4;23865:5;23861:16;23855:23;23890:62;23946:4;23941:3;23937:14;23924:11;23890:62;;;23804:160;24049:4;24042:5;24038:16;24032:23;24067:62;24123:4;24118:3;24114:14;24101:11;24067:62;;;23974:167;24223:4;24216:5;24212:16;24206:23;24241:62;24297:4;24292:3;24288:14;24275:11;24241:62;;;24151:164;24402:4;24395:5;24391:16;24385:23;24420:62;24476:4;24471:3;24467:14;24454:11;24420:62;;;24325:169;24586:4;24579:5;24575:16;24569:23;24604:62;24660:4;24655:3;24651:14;24638:11;24604:62;;24777:1557;24996:22;;24920:5;24911:15;;;25030:61;24915:3;24996:22;25030:61;;;24941:162;25186:4;25179:5;25175:16;25169:23;25204:62;25260:4;25255:3;25251:14;25238:11;25204:62;;;25113:165;25360:4;25353:5;25349:16;25343:23;25378:62;25434:4;25429:3;25425:14;25412:11;25378:62;;;25288:164;25536:4;25529:5;25525:16;25519:23;25554:62;25610:4;25605:3;25601:14;25588:11;25554:62;;;25462:166;25708:4;25701:5;25697:16;25691:23;25726:62;25782:4;25777:3;25773:14;25760:11;25726:62;;;25638:162;25881:4;25874:5;25870:16;25864:23;25899:62;25955:4;25950:3;25946:14;25933:11;25899:62;;;25810:163;26058:4;26051:5;26047:16;26041:23;26076:56;26126:4;26121:3;26117:14;26104:11;26076:56;;;25983:161;26233:4;26226:5;26222:16;26216:23;26251:56;26301:4;26296:3;26292:14;26279:11;26251:56;;26414:1382;26624:22;;26549:4;26540:14;;;26658:61;26544:3;26624:22;26658:61;;;26569:162;26810:4;26803:5;26799:16;26793:23;26828:62;26884:4;26879:3;26875:14;26862:11;26828:62;;;26741:161;26985:4;26978:5;26974:16;26968:23;27003:62;27059:4;27054:3;27050:14;27037:11;27003:62;;;26912:165;27155:4;27148:5;27144:16;27138:23;27173:62;27229:4;27224:3;27220:14;27207:11;27173:62;;;27087:160;27334:4;27327:5;27323:16;27317:23;27352:62;27408:4;27403:3;27399:14;27386:11;27352:62;;;27257:169;27511:4;27504:5;27500:16;27494:23;27529:62;27585:4;27580:3;27576:14;27563:11;27529:62;;;27436:167;27693:4;27686:5;27682:16;27676:23;27711:58;27763:4;27758:3;27754:14;27741:11;27711:58;;27864:829;28066:22;;27991:5;27982:15;;;28100:121;27986:3;28066:22;28100:121;;;28012:221;28316:4;28309:5;28305:16;28299:23;28334:114;28442:4;28437:3;28433:14;28420:11;28334:114;;;28243:217;28537:4;28530:5;28526:16;28520:23;28555:111;28659:5;28654:3;28650:15;28637:11;28555:111;;28700:110;28773:31;28798:5;28773:31;;28817:104;28886:29;28909:5;28886:29;;28928:326;29080:2;29065:18;;29094:77;29069:9;29144:6;29094:77;;;29182:62;29240:2;29229:9;29225:18;29216:6;29182:62;;29261:310;29405:2;29390:18;;29419:69;29394:9;29461:6;29419:69;;29578:1085;29926:3;29911:19;;29941:61;29915:9;29975:6;29941:61;;;30013:62;30071:2;30060:9;30056:18;30047:6;30013:62;;;30086;30144:2;30133:9;30129:18;30120:6;30086:62;;;30159;30217:2;30206:9;30202:18;30193:6;30159:62;;;30232:63;30290:3;30279:9;30275:19;30266:6;30232:63;;;30306;30364:3;30353:9;30349:19;30340:6;30306:63;;;30380;30438:3;30427:9;30423:19;30414:6;30380:63;;;30454;30512:3;30501:9;30497:19;30488:6;30454:63;;;30528:57;30580:3;30569:9;30565:19;30556:6;30528:57;;;30596;30648:3;30637:9;30633:19;30624:6;30596:57;;30670:395;30834:2;30819:18;;30848:61;30823:9;30882:6;30848:61;;;30920:62;30978:2;30967:9;30963:18;30954:6;30920:62;;;30993;31051:2;31040:9;31036:18;31027:6;30993:62;;31373:395;31537:2;31522:18;;31551:61;31526:9;31585:6;31551:61;;;31623:62;31681:2;31670:9;31666:18;31657:6;31623:62;;31775:341;31933:2;31947:47;;;31918:18;;32008:98;31918:18;32092:6;32008:98;;32123:181;32225:2;32210:18;;32239:55;32214:9;32267:6;32239:55;;32311:387;32492:2;32506:47;;;32477:18;;32567:121;32477:18;32567:121;;32705:387;32886:2;32900:47;;;32871:18;;32961:121;32871:18;32961:121;;33099:387;33280:2;33294:47;;;33265:18;;33355:121;33265:18;33355:121;;33493:387;33674:2;33688:47;;;33659:18;;33749:121;33659:18;33749:121;;33887:387;34068:2;34082:47;;;34053:18;;34143:121;34053:18;34143:121;;34281:387;34462:2;34476:47;;;34447:18;;34537:121;34447:18;34537:121;;34675:387;34856:2;34870:47;;;34841:18;;34931:121;34841:18;34931:121;;35069:387;35250:2;35264:47;;;35235:18;;35325:121;35235:18;35325:121;;35463:387;35644:2;35658:47;;;35629:18;;35719:121;35629:18;35719:121;;35857:387;36038:2;36052:47;;;36023:18;;36113:121;36023:18;36113:121;;36251:387;36432:2;36446:47;;;36417:18;;36507:121;36417:18;36507:121;;36645:387;36826:2;36840:47;;;36811:18;;36901:121;36811:18;36901:121;;37039:387;37220:2;37234:47;;;37205:18;;37295:121;37205:18;37295:121;;37433:387;37614:2;37628:47;;;37599:18;;37689:121;37599:18;37689:121;;37827:387;38008:2;38022:47;;;37993:18;;38083:121;37993:18;38083:121;;38221:387;38402:2;38416:47;;;38387:18;;38477:121;38387:18;38477:121;;38615:387;38796:2;38810:47;;;38781:18;;38871:121;38781:18;38871:121;;39009:387;39190:2;39204:47;;;39175:18;;39265:121;39175:18;39265:121;;39403:387;39584:2;39598:47;;;39569:18;;39659:121;39569:18;39659:121;;39797:387;39978:2;39992:47;;;39963:18;;40053:121;39963:18;40053:121;;40191:387;40372:2;40386:47;;;40357:18;;40447:121;40357:18;40447:121;;40585:387;40766:2;40780:47;;;40751:18;;40841:121;40751:18;40841:121;;40979:387;41160:2;41174:47;;;41145:18;;41235:121;41145:18;41235:121;;41373:387;41554:2;41568:47;;;41539:18;;41629:121;41539:18;41629:121;;41767:387;41948:2;41962:47;;;41933:18;;42023:121;41933:18;42023:121;;42161:387;42342:2;42356:47;;;42327:18;;42417:121;42327:18;42417:121;;42555:387;42736:2;42750:47;;;42721:18;;42811:121;42721:18;42811:121;;42949:387;43130:2;43144:47;;;43115:18;;43205:121;43115:18;43205:121;;43343:387;43524:2;43538:47;;;43509:18;;43599:121;43509:18;43599:121;;43737:387;43918:2;43932:47;;;43903:18;;43993:121;43903:18;43993:121;;44131:387;44312:2;44326:47;;;44297:18;;44387:121;44297:18;44387:121;;44525:387;44706:2;44720:47;;;44691:18;;44781:121;44691:18;44781:121;;44919:387;45100:2;45114:47;;;45085:18;;45175:121;45085:18;45175:121;;45313:387;45494:2;45508:47;;;45479:18;;45569:121;45479:18;45569:121;;45707:387;45888:2;45902:47;;;45873:18;;45963:121;45873:18;45963:121;;46101:387;46282:2;46296:47;;;46267:18;;46357:121;46267:18;46357:121;;46495:387;46676:2;46690:47;;;46661:18;;46751:121;46661:18;46751:121;;46889:387;47070:2;47084:47;;;47055:18;;47145:121;47055:18;47145:121;;47283:387;47464:2;47478:47;;;47449:18;;47539:121;47449:18;47539:121;;47677:314;47845:3;47830:19;;47860:121;47834:9;47954:6;47860:121;;47998:282;48150:3;48135:19;;48165:105;48139:9;48243:6;48165:105;;48287:193;48395:2;48380:18;;48409:61;48384:9;48443:6;48409:61;;48487:294;48623:2;48608:18;;48637:61;48612:9;48671:6;48637:61;;;48709:62;48767:2;48756:9;48752:18;48743:6;48709:62;;48788:282;48918:2;48903:18;;48932:61;48907:9;48966:6;48932:61;;;49004:56;49056:2;49045:9;49041:18;49032:6;49004:56;;49077:411;49249:2;49234:18;;49263:61;49238:9;49297:6;49263:61;;;49335:70;49401:2;49390:9;49386:18;49377:6;49335:70;;49495:395;49659:2;49644:18;;49673:61;49648:9;49707:6;49673:61;;49897:599;50117:3;50102:19;;50132:61;50106:9;50166:6;50132:61;;;50204:62;50262:2;50251:9;50247:18;50238:6;50204:62;;;50277;50335:2;50324:9;50320:18;50311:6;50277:62;;;50350;50408:2;50397:9;50393:18;50384:6;50350:62;;;50423:63;50481:3;50470:9;50466:19;50457:6;50423:63;;50505:121;50614:4;50602:17;;50583:43;50635:107;50725:12;;50709:33;50880:105;;50949:31;50974:5;50949:31;;51112:92;51185:13;51178:21;;51161:43;51211:128;-1:-1;;;;;51280:54;;51263:76;51432:88;51510:4;51499:16;;51482:38;51738:151;51817:66;51806:78;;51789:100;51982:129;;52069:37;52100:5;52069:37;;52118:123;;52205:31;52230:5;52205:31;;52248:121;;52327:37;52358:5;52327:37;", + "source": "/**\nSmartPiggies is an open source standard for\na free peer to peer global derivatives market\n\nCopyright (C) 2019, Arief, Algya, Lee\n\nThis program is free software: you can redistribute it and/or modify\nit under the terms of the GNU General Public License as published by\nthe Free Software Foundation, either version 3 of the License, or\n(at your option) any later version.\n\nThis program is distributed in the hope that it will be useful,\nbut WITHOUT ANY WARRANTY; without even the implied warranty of\nMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\nGNU General Public License for more details.\n\nYou should have received a copy of the GNU General Public License\nalong with this program. If not, see .\n**/\npragma solidity >=0.4.24 <0.6.0;\npragma experimental ABIEncoderV2;\n\n// massive thanks to ERC-721 spec for this D:\n\n// references to \"oracles\" could use a different / more general term\n// so that the spec could use signed data directly from \"source\" w/ same interface\n\ninterface PaymentToken {\n function transferFrom(address from, address to, uint256 value) external returns (bool);\n function transfer(address to, uint256 value) external returns (bool);\n function decimals() external returns (uint8);\n}\n\nimport \"./ERC165.sol\";\nimport \"./SafeMath.sol\";\n\n/** @title ERC-59 (subject to change) Smart Option Standard\n*/\ncontract SmartPiggies is ERC165 {\n using SafeMath for uint256;\n\n address payable owner;\n uint256 public tokenId;\n\n struct DetailAddresses {\n address writer;\n address holder;\n address collateralERC;\n address premiumERC;\n address dataResolverNow;\n address dataResolverAtExpiry;\n }\n\n struct DetailUints {\n uint256 collateral;\n uint256 lotSize;\n uint256 strikePrice;\n uint256 expiry;\n uint256 settlementPrice;\n uint256 reqCollateral;\n uint8 collateralDecimals; // to store decimals from ERC-20 contract\n }\n\n struct BoolFlags {\n bool isRequest;\n bool isEuro;\n bool isPut;\n bool hasBeenCleared; // to flag whether the oracle returned a callback w/ price\n }\n\n struct DetailAuction {\n uint256 startBlock;\n uint256 expiryBlock;\n uint256 startPrice;\n uint256 reservePrice;\n uint256 timeStep;\n uint256 priceStep;\n bool auctionActive;\n bool satisfyInProgress; // mutex guard to disallow ending an auction if a transaction to satisfy is in progress\n }\n\n struct Piggy {\n DetailAddresses addresses; //address details\n DetailUints uintDetails; //number details\n BoolFlags flags; //parameter switches\n }\n\n mapping (address => mapping(address => uint256)) private ERC20balances;\n mapping (address => uint256[]) private ownedPiggies; //again, public?\n mapping (uint256 => uint256) private ownedPiggiesIndex;\n mapping (uint256 => Piggy) private piggies;\n mapping (uint256 => DetailAuction) private auctions;\n\n /*\n add events\n */\n\n event CreatePiggy(\n address indexed from,\n uint256 indexed tokenId,\n uint256 indexed strike,\n uint256 expiryBlock,\n bool RFP\n );\n\n event TransferPiggy(\n address indexed from,\n address indexed to,\n uint256 indexed tokenId\n );\n\n event UpdateRFP(\n address indexed from,\n uint256 indexed tokenId,\n address collateralERC,\n address premiumERC,\n address dataResolverNow,\n address dataResolverAtExpiry,\n uint256 reqCollateral,\n uint256 lotSize,\n uint256 strikePrice,\n uint256 expiry,\n bool isEuro,\n bool isPut\n );\n\n event ReclaimAndBurn(\n address indexed from,\n uint256 indexed tokenId,\n bool indexed RFP\n );\n\n event StartAuction(\n address indexed from,\n uint256 indexed tokenId,\n uint256 startPrice,\n uint256 reservePrice,\n uint256 auctionLength,\n uint256 timeStep,\n uint256 priceStep\n );\n\n event EndAuction(\n address indexed from,\n uint256 indexed tokenId,\n bool indexed RFP\n );\n\n event SatisfyAuction(\n address indexed from,\n uint256 indexed tokenId,\n uint256 paidPremium,\n uint256 change,\n uint256 auctionPremium\n );\n\n event RequestSettlementPrice(\n address indexed feePayer,\n uint256 indexed tokenId,\n uint256 oracleFee,\n address dataResolver\n );\n\n event OracleReturned(\n address indexed resolver,\n uint256 indexed tokenId,\n uint256 indexed price\n );\n\n event SettlePiggy(\n address indexed from,\n uint256 indexed tokenId,\n uint256 indexed holderPayout,\n uint256 writerPayout\n );\n\n event ClaimPayout(\n address indexed from,\n uint256 indexed amount,\n address indexed paymentToken\n );\n\n /**\n constructor should throw if various things aren't properly set\n also should throw if the contract is not delegated an amount of collateral designated\n in the reference ERC-20 which is >= the collateral value of the piggy\n */\n constructor()\n public\n {\n //declarations here\n owner = msg.sender; //so we can delete if from the testnet\n }\n\n // abstract ERC-20 TransferFrom attepmts\n function attemptPaymentTransfer(address _ERC20, address _from, address _to, uint256 _amount)\n private\n returns (bool)\n {\n (bool success, ) = address(PaymentToken(_ERC20)).call(\n abi.encodeWithSignature(\n \"transferFrom(address,address,uint256)\",\n _from,\n _to,\n _amount\n )\n );\n return success;\n }\n\n // token should capture claim fields --> \"getSellerClaim()\" / \"getOwnerClaim()\" ?\n // the oracle has to do a lot of heavy lifting in the current design, and the token needs\n // to be created with extreme care wrt the oracle metadata\n // if we want to do \"capped\" options as traditional, need more metadata re: endpoints i guess\n /** @notice Create a new ERC-59 token\n @dev Throws if `_collateralERC` is not a valid Ethereum (ERC-20) address.\n Throws if `_premiumERC` is not a valid Ethereum (ERC-20) address (may be same\n as `_collateralERC`).\n Throws if `_oracle` is not a valid Ethereum address.\n Throws if `_expiry` < block.number.\n If `_asRequest` is true, throws if `_reqCollateral` == 0.\n If `_asRequest` is false, throws if msg.sender has not delegated at least `_collateral`\n in the ERC-20 token whose contract is `_collateralERC` to the ERC-59 contract.\n When a new token is created, msg.sender should be recorded as the creator and owner.\n If `_asRequest` is true, the zero address should be recorded as the seller.\n If `_asRequest` is false, msg.sender should be recorded as the seller.\n If `_asRequest` is false, `_reqCollateral` will be irrelevant and should be captured as 0.\n If `_asRequest` is false, the ERC-59 contract must take ownership of `_collateral` amount\n of ERC-20 tokens governed by the `_collateralERC` contract.\n @param _collateralERC The address of the reference ERC-20 token to be used as collateral\n @param _premiumERC The address of the reference ERC-20 token to be used to pay the premium\n param _oracle The address of a service contract which will return the settlement price\n param _asRequest If true, will create the token as an \"RFP\" / request for a particular option\n param _underlyingNow An identifier for the reference underlying which the contract at `_oracle`\n is able to parse to return the current price of the underlying\n param _underlyingExpiry An identifier for the reference underlying which the contract at\n `_oracle` is able to parse to return the price of the underlying at `_expiry`\n @param _collateral The amount of collateral for the option, denominated in units of the token\n at the `_collateralERC` address\n @param _lotSize A multiplier on the settlement price used to determine settlement claims\n @param _strikePrice The strike value of the option, in the same units as the settlement price\n @param _expiry The block height at which the option will expire\n param _reqCollateral The amount of collateral desired in the option, if creating with\n `_asRequest` == true, denominated in units of the token at the `_collateralERC` address\n @param _isEuro If true, the option can only be settled at or after `_expiry` is reached, else\n it can be settled at any time\n @param _isPut If true, the settlement claims will be calculated for a put option; else they\n will be calculated for a call option\n */\n function createPiggy(\n address _collateralERC,\n address _premiumERC,\n address _dataResolverNow,\n address _dataResolverAtExpiry,\n uint256 _collateral,\n uint256 _lotSize,\n uint256 _strikePrice,\n uint256 _expiry,\n bool _isEuro,\n bool _isPut,\n bool _isRequest\n )\n public\n returns (bool)\n {\n require(\n _collateralERC != address(0) &&\n _premiumERC != address(0) &&\n _dataResolverNow != address(0) &&\n _dataResolverAtExpiry != address(0),\n \"addresses cannot be zero\"\n );\n require(\n _collateral != 0 &&\n _lotSize != 0 &&\n _strikePrice != 0 &&\n _expiry != 0,\n \"option parameters cannot be zero\"\n );\n // if not an RFP, make sure the collateral can be transferred\n if (!_isRequest) {\n bool success = attemptPaymentTransfer(\n _collateralERC, //_collateralERC\n msg.sender,\n address(this),\n _collateral\n );\n require(success, \"Token transfer did not complete\");\n }\n // any other checks that need to be performed specifically for RFPs ?\n\n // assuming all checks have passed:\n tokenId = tokenId.add(1);\n\n // write the values to storage, including _isRequest flag\n Piggy storage p = piggies[tokenId];\n p.addresses.holder = msg.sender;\n p.addresses.collateralERC = _collateralERC;\n p.addresses.premiumERC = _premiumERC;\n p.addresses.dataResolverNow = _dataResolverNow;\n p.addresses.dataResolverAtExpiry = _dataResolverAtExpiry;\n p.uintDetails.collateralDecimals = _getERC20Decimals(_collateralERC);\n p.uintDetails.lotSize = _lotSize;\n p.uintDetails.strikePrice = _strikePrice;\n p.uintDetails.expiry = _expiry.add(block.number);\n p.flags.isEuro = _isEuro;\n p.flags.isPut = _isPut;\n p.flags.isRequest = _isRequest;\n\n // conditional state variable assignments based on _isRequest:\n if (_isRequest) {\n p.uintDetails.reqCollateral = _collateral;\n } else {\n p.addresses.writer = msg.sender;\n p.uintDetails.collateral = _collateral;\n }\n _addTokenToOwnedPiggies(msg.sender, tokenId);\n\n emit CreatePiggy(\n msg.sender,\n tokenId,\n _strikePrice,\n _expiry.add(block.number),\n _isRequest\n );\n\n return true;\n }\n\n// make sure the ERC-20 contract for collateral correctly reports decimals\nfunction _getERC20Decimals(address _ERC20)\n internal\n returns (uint8)\n{\n (bool success, bytes memory _decBytes) = address(PaymentToken(_ERC20)).call(\n abi.encodeWithSignature(\"decimals()\")\n );\n require(success, \"collateral ERC-20 contract does not properly specify decimals\");\n // convert bytes to uint8:\n uint256 _ERCdecimals;\n for(uint256 i=0; i < _decBytes.length; i++) {\n _ERCdecimals = _ERCdecimals + uint8(_decBytes[i])*(2**(8*(_decBytes.length-(i+1))));\n }\n return uint8(_ERCdecimals);\n}\n\n // helper function to view info from about the piggy outside of the contract\n function getDetails(uint256 _tokenId)\n public\n view\n returns (Piggy memory)\n {\n return piggies[_tokenId];\n }\n\n // this is a helper function to allow view of auction details\n function getAuctionDetails(uint256 _tokenId)\n public\n view\n returns (DetailAuction memory)\n {\n return auctions[_tokenId];\n }\n\n /** @notice Count the number of ERC-59 tokens owned by a particular address\n @dev ERC-59 tokens assigned to the zero address are considered invalid, and this\n function throws for queries about the zero address.\n @param _owner An address for which to query the balance of ERC-59 tokens\n @return The number of ERC-59 tokens owned by `_owner`, possibly zero\n */\n function getOwnedPiggies(address _owner)\n public\n view\n returns (uint256[] memory)\n {\n require(_owner != address(0), \"address cannot be zero\");\n return ownedPiggies[_owner];\n }\n\n function getERC20balance(address _owner, address _erc20)\n public\n view\n returns (uint256)\n {\n require(_owner != address(0), \"address cannot be zero\");\n return ERC20balances[_owner][_erc20];\n }\n\n function transferFrom(address _from, address _to, uint256 _tokenId)\n public\n {\n require(msg.sender == piggies[_tokenId].addresses.holder, \"msg.sender is not the owner\"); //openzep doesn't do this\n _internalTransfer(_from, _to, _tokenId);\n }\n\n // internal transfer for transfers made on behalf of the contract\n function _internalTransfer(address _from, address _to, uint256 _tokenId)\n internal\n {\n require(_from == piggies[_tokenId].addresses.holder, \"from address is not the owner\");\n require(_to != address(0), \"to address is zero\");\n _removeTokenFromOwnedPiggies(_from, _tokenId);\n _addTokenToOwnedPiggies(_to, _tokenId);\n piggies[_tokenId].addresses.holder = _to;\n emit TransferPiggy(_from, _to, _tokenId);\n }\n\n // possibly add function to update reqCollateral if token is an RFP and hasn't been successfully fulfilled\n // maybe allow all fields of an RFP to be updated ?\n // this may be more trouble than it is worth. could allow this function to accept a struct, and check if any keys matching fields of Piggy are nonzero, if so, update those ones\n function updateRFP(\n uint256 _tokenId,\n address _collateralERC,\n address _premiumERC,\n address _dataResolverNow,\n address _dataResolverAtExpiry,\n uint256 _reqCollateral,\n uint256 _lotSize,\n uint256 _strikePrice,\n uint256 _expiry,\n bool _isEuro, // MUST be specified\n bool _isPut // MUST be specified\n )\n public\n returns (bool)\n {\n require(piggies[_tokenId].addresses.holder == msg.sender, \"you must own the RFP to update it\");\n require(piggies[_tokenId].flags.isRequest, \"you can only update an RFP\");\n uint256 expiryBlock;\n if (_collateralERC != address(0)) {\n piggies[_tokenId].addresses.collateralERC = _collateralERC;\n }\n if (_premiumERC != address(0)) {\n piggies[_tokenId].addresses.premiumERC = _premiumERC;\n }\n if (_dataResolverNow != address(0)) {\n piggies[_tokenId].addresses.dataResolverNow = _dataResolverNow;\n }\n if (_dataResolverAtExpiry != address(0)) {\n piggies[_tokenId].addresses.dataResolverAtExpiry = _dataResolverAtExpiry;\n }\n if (_reqCollateral != 0) {\n piggies[_tokenId].uintDetails.reqCollateral = _reqCollateral;\n }\n if (_lotSize != 0) {\n piggies[_tokenId].uintDetails.lotSize = _lotSize;\n }\n if (_strikePrice != 0 ) {\n piggies[_tokenId].uintDetails.strikePrice = _strikePrice;\n }\n if (_expiry != 0) {\n // should this redo the expiry calculation? to be consistent w/ how the creation function works ?\n expiryBlock = _expiry.add(block.number);\n piggies[_tokenId].uintDetails.expiry = expiryBlock;\n }\n piggies[_tokenId].flags.isEuro = _isEuro;\n piggies[_tokenId].flags.isPut = _isPut;\n\n emit UpdateRFP(\n msg.sender,\n _tokenId,\n _collateralERC,\n _premiumERC,\n _dataResolverNow,\n _dataResolverAtExpiry,\n _reqCollateral,\n _lotSize,\n _strikePrice,\n expiryBlock,\n _isEuro,\n _isPut\n );\n\n return true;\n }\n\n // this function can be used to burn any token; if it is an option, will return collateral before burning\n function reclaimAndBurn(uint256 _tokenId)\n public\n returns (bool)\n {\n require(msg.sender == piggies[_tokenId].addresses.holder, \"you must own the token to burn it\");\n require(!auctions[_tokenId].auctionActive, \"you cannot burn a token which is on auction\");\n if (!piggies[_tokenId].flags.isRequest) {\n require(msg.sender == piggies[_tokenId].addresses.writer, \"you must own the collateral to reclaim it\");\n // return the collateral to sender\n PaymentToken(piggies[_tokenId].addresses.collateralERC).transfer(msg.sender, piggies[_tokenId].uintDetails.collateral);\n }\n emit ReclaimAndBurn(msg.sender, _tokenId, piggies[_tokenId].flags.isRequest);\n //remove id from index mapping\n _removeTokenFromOwnedPiggies(piggies[_tokenId].addresses.holder, _tokenId);\n // burn the token (zero out storage fields)\n _resetPiggy(_tokenId);\n return true;\n }\n\n function _clearAuctionDetails(uint256 _tokenId)\n internal\n {\n auctions[_tokenId].startBlock = 0;\n auctions[_tokenId].expiryBlock = 0;\n auctions[_tokenId].startPrice = 0;\n auctions[_tokenId].reservePrice = 0;\n auctions[_tokenId].timeStep = 0;\n auctions[_tokenId].priceStep = 0;\n auctions[_tokenId].auctionActive = false;\n // I don't think we want this one to touch the two state flags; handle those on a per-function basis in the order that makes sense probably\n // MIGHT be ok to set auctionActive = false here though actually...\n }\n\n function startAuction(\n uint256 _tokenId,\n uint256 _startPrice,\n uint256 _reservePrice,\n uint256 _auctionLength,\n uint256 _timeStep,\n uint256 _priceStep\n )\n external\n returns (bool)\n {\n uint256 _auctionExpiry = block.number.add(_auctionLength);\n require(piggies[_tokenId].addresses.holder == msg.sender, \"you must own a token to auction it\");\n require(piggies[_tokenId].uintDetails.expiry > block.number, \"option must not be expired\");\n require(piggies[_tokenId].uintDetails.expiry > _auctionExpiry, \"auction cannot expire after the option\");\n require(!piggies[_tokenId].flags.hasBeenCleared, \"option cannot have been cleared\");\n require(!auctions[_tokenId].auctionActive, \"auction cannot already be running\");\n // as specified below, this is not needed if we change the function (as I have done) to accept an _auctionLength rather than a direct _auctionExpiry value\n //require(_auctionExpiry > block.number, \"auction must expire in the future\"); // DO WE WANT TO ALSO ADD A BUFFER HERE? LIKE IT MUST EXPIRE AT LEAST XX BLOCKS IN THE FUTURE?\n if (piggies[_tokenId].flags.isRequest) {\n bool success = attemptPaymentTransfer(\n piggies[_tokenId].addresses.premiumERC,\n msg.sender,\n address(this),\n _reservePrice // this should be the max the requestor is willing to pay in a reverse dutch auction\n );\n require(success, \"transferFrom did not return true\");\n }\n // if we made it past the various checks, set the auction metadata up in auctions mapping\n auctions[_tokenId].startBlock = block.number;\n auctions[_tokenId].expiryBlock = _auctionExpiry;\n auctions[_tokenId].startPrice = _startPrice;\n auctions[_tokenId].reservePrice = _reservePrice;\n auctions[_tokenId].timeStep = _timeStep;\n auctions[_tokenId].priceStep = _priceStep;\n auctions[_tokenId].auctionActive = true;\n\n emit StartAuction(\n msg.sender,\n _tokenId,\n _startPrice,\n _reservePrice,\n _auctionLength,\n _timeStep,\n _priceStep\n );\n\n return true;\n }\n\n function endAuction(uint256 _tokenId)\n public\n returns (bool)\n {\n require(piggies[_tokenId].addresses.holder == msg.sender, \"you must own a token to auction it\");\n require(auctions[_tokenId].auctionActive, \"auction must be active to cancel it\");\n require(!auctions[_tokenId].satisfyInProgress, \"auction cannot be in the process of being satisfied\"); // this should be added to other functions as well\n if (piggies[_tokenId].flags.isRequest) {\n // refund the _reservePrice premium\n uint256 _premiumToReturn = auctions[_tokenId].reservePrice;\n //auctions[_tokenId].reservePrice = 0; // this sort of offends my sensibilities because we only zero out one auction param, but it is the only one required to change for this logic to work\n PaymentToken(piggies[_tokenId].addresses.premiumERC).transfer(msg.sender, _premiumToReturn);\n }\n _clearAuctionDetails(_tokenId);\n emit EndAuction(msg.sender, _tokenId, piggies[_tokenId].flags.isRequest);\n return true;\n }\n\n // calculate the price for satisfaction of an auction\n // this is an interpolated linear price based on the supplied auction parameters at a resolution of 1 block\n function getAuctionPrice(uint256 _tokenId)\n internal\n view\n returns (uint256)\n {\n // I think we can skip various checks here since they will be in the satisfyAuction function instead\n // (e.g. making sure auction is active and not expired, etc. etc.)\n uint256 _pStart = auctions[_tokenId].startPrice;\n // price delta is (time elapsed) * (price change per time step)\n uint256 _pDelta = (block.number).sub(auctions[_tokenId].startBlock).mul(auctions[_tokenId].priceStep).div(auctions[_tokenId].timeStep);\n if (piggies[_tokenId].flags.isRequest) {\n return _pStart.add(_pDelta);\n } else {\n return (_pStart.sub(_pDelta));\n }\n }\n\n // consider possible attacks and refactor if needed\n function satisfyAuction(uint256 _tokenId)\n public\n returns (bool)\n {\n require(!auctions[_tokenId].satisfyInProgress, \"cannot reenter this function while it is in progress\");\n require(piggies[_tokenId].addresses.holder != msg.sender, \"cannot satisfy your own auction; use endAuction instead\");\n require(auctions[_tokenId].auctionActive, \"auction must be active to satisfy it\");\n // if auction is \"active\" according to state but has expired, change state\n if (auctions[_tokenId].expiryBlock < block.number) {\n //auctions[_tokenId].auctionActive = false; // handled by _clearAuctionDetails now\n _clearAuctionDetails(_tokenId);\n return false;\n }\n // get linear auction premium; reserve price should be a ceiling or floor depending on whether this is an RFP or an option, respectively\n uint256 _auctionPremium = getAuctionPrice(_tokenId);\n // lock mutex\n auctions[_tokenId].satisfyInProgress = true;\n if (piggies[_tokenId].flags.isRequest) {\n // msg.sender needs to delegate reqCollateral\n bool success = attemptPaymentTransfer(\n piggies[_tokenId].addresses.collateralERC,\n msg.sender,\n address(this),\n piggies[_tokenId].uintDetails.reqCollateral\n );\n if (!success) {\n auctions[_tokenId].satisfyInProgress = false;\n return false;\n }\n // if the collateral transfer succeeded, collateral gets set to reqCollateral\n piggies[_tokenId].uintDetails.collateral = piggies[_tokenId].uintDetails.reqCollateral;\n // calculate adjusted premium (based on reservePrice) + possible change due back to current holder\n uint256 _change = 0;\n uint256 _adjPremium = _auctionPremium;\n if (_adjPremium > auctions[_tokenId].reservePrice) {\n _adjPremium = auctions[_tokenId].reservePrice;\n } else {\n _change = auctions[_tokenId].reservePrice.sub(_adjPremium);\n }\n // current holder pays premium (via amount already delegated to this contract in startAuction)\n PaymentToken(piggies[_tokenId].addresses.premiumERC).transfer(msg.sender, _adjPremium);\n // current holder receives any change due\n if (_change > 0) {\n PaymentToken(piggies[_tokenId].addresses.premiumERC).transfer(piggies[_tokenId].addresses.holder, _change);\n }\n // isRequest becomes false\n piggies[_tokenId].flags.isRequest = false;\n // msg.sender becomes writer\n piggies[_tokenId].addresses.writer = msg.sender;\n\n emit SatisfyAuction(\n msg.sender,\n _tokenId,\n _adjPremium,\n _change,\n _auctionPremium\n );\n\n } else {\n // calculate the adjusted premium based on reservePrice\n uint256 _adjPremium = _auctionPremium;\n if (_adjPremium < auctions[_tokenId].reservePrice) {\n _adjPremium = auctions[_tokenId].reservePrice;\n }\n // msg.sender pays (adjusted) premium\n bool success = attemptPaymentTransfer(\n piggies[_tokenId].addresses.premiumERC,\n msg.sender,\n piggies[_tokenId].addresses.holder, // should the SP contract escrow it first?\n _adjPremium\n );\n if (!success) {\n auctions[_tokenId].satisfyInProgress = false;\n return false;\n }\n // msg.sender becomes holder\n _internalTransfer(piggies[_tokenId].addresses.holder, msg.sender, _tokenId);\n\n emit SatisfyAuction(\n msg.sender,\n _tokenId,\n _adjPremium,\n 0,\n _auctionPremium\n );\n\n }\n // auction is ended\n _clearAuctionDetails(_tokenId);\n // mutex released\n auctions[_tokenId].satisfyInProgress = false;\n return true;\n }\n\n /** @notice Call the oracle to fetch the settlement price\n @dev Throws if `_tokenId` is not a valid ERC-59 token.\n Throws if `_oracle` is not a valid contract address.\n Throws if `onMarket(_tokenId)` is true.\n If `isEuro` is true for the specified token, throws if `_expiry` > block.number.\n If `isEuro` is true for the specified token, throws if `_priceNow` is true. [OR specify that it flips that to false always (?)]\n If `priceNow` is true, throws if block.number > `_expiry` for the specified token.\n If `priceNow` is false, throws if block.number < `_expiry` for the specified token.\n If `priceNow` is true, calls the oracle to request the `_underlyingNow` value for the token.\n If `priceNow` is false, calls the oracle to request the `_underlyingExpiry` value for the token.\n Depending on the oracle service implemented, additional state will need to be referenced in\n order to call the oracle, e.g. an endpoint to fetch. This state handling will need to be\n managed on an implementation basis for specific oracle services.\n @param _tokenId The identifier of the specific ERC-59 token for which to fetch a settlement price\n _oracle The address of the oracle contract used to fetch the external settlement price\n _priceNow A boolean for specifying whether to fetch a \"live\" price or a fixed price at\n expiry of the option\n @return The settlement price from the oracle to be used in `settleOption()`\n */\n function requestSettlementPrice(uint256 _tokenId, uint256 _oracleFee) // this should be renamed perhaps, s.t. it is obvious that this is the \"clearing phase\"\n public\n returns (bool)\n {\n require(msg.sender != address(0), \"sender cannot be the zero address\");\n //what check should be done to check that piggy is active?\n require(!auctions[_tokenId].auctionActive, \"cannot clear a token while auction is active\");\n require(!piggies[_tokenId].flags.hasBeenCleared, \"token has already been cleared\"); // this is potentially problematic in the case of \"garbage data\"\n require(_tokenId != 0, \"_tokenId cannot be zero\");\n require(_oracleFee != 0, \"oracle fee cannot be zero\");\n //if Euro require past expiry\n if (piggies[_tokenId].flags.isEuro) {\n require(piggies[_tokenId].uintDetails.expiry <= block.number);\n }\n //fetch data from dataResolver contract\n address _dataResolver;\n if (piggies[_tokenId].flags.isEuro || (piggies[_tokenId].uintDetails.expiry < block.number))\n {\n _dataResolver = piggies[_tokenId].addresses.dataResolverAtExpiry;\n } else {\n require(msg.sender == piggies[_tokenId].addresses.holder, \"only the holder can settle an American style option before expiry\");\n _dataResolver = piggies[_tokenId].addresses.dataResolverNow;\n }\n require(_callResolver(_dataResolver, msg.sender, _oracleFee, _tokenId), \"call to resolver did not return true\");\n return true;\n }\n\n function _callResolver(address _dataResolver, address _feePayer, uint256 _oracleFee, uint256 _tokenId)\n internal\n returns (bool)\n {\n (bool success, ) = address(_dataResolver).call(\n abi.encodeWithSignature(\"fetchData(address,uint256,uint256)\", _feePayer, _oracleFee, _tokenId)\n );\n require(success, \"fetch success did not return true\");\n\n emit RequestSettlementPrice(\n _feePayer,\n _tokenId,\n _oracleFee,\n _dataResolver\n );\n\n return true;\n }\n\n function _callback(\n uint256 _tokenId,\n uint256 _price\n )\n public\n {\n address _dataResolver;\n if (piggies[_tokenId].flags.isEuro || (piggies[_tokenId].uintDetails.expiry < block.number))\n {\n _dataResolver = piggies[_tokenId].addresses.dataResolverAtExpiry;\n } else {\n _dataResolver = piggies[_tokenId].addresses.dataResolverNow;\n }\n require(msg.sender == _dataResolver, \"resolve address was not correct\"); // MUST restrict a call to only the resolver address\n piggies[_tokenId].uintDetails.settlementPrice = _price;\n piggies[_tokenId].flags.hasBeenCleared = true;\n\n emit OracleReturned(\n msg.sender,\n _tokenId,\n _price\n );\n\n }\n\n // this appears to basically be redundant w/ requestSettlementPrice\n // function clearOption(uint256 _tokenId)\n // public\n // returns (bool)\n // {\n // require(msg.sender != address(0));\n // //require(ownerOf(_piggyId) == msg.sender);\n // //what check should be done to check that piggy is active?\n // require(_tokenId != 0);\n\n // //Get a price from the oracle\n // piggies[_tokenId].requestId = requestSettlementPrice(_tokenId);\n\n // return true;\n // }\n\n function _calculateLongPayout(\n bool _isPut,\n uint256 _exercisePrice,\n uint256 _strikePrice,\n uint256 _lotSize,\n uint8 _decimals\n )\n internal\n pure\n returns (uint256 _payout)\n {\n if (_isPut && (_strikePrice > _exercisePrice)) {\n _payout = _strikePrice.sub(_exercisePrice);\n }\n if (!_isPut && (_exercisePrice > _strikePrice)) {\n _payout = _exercisePrice.sub(_strikePrice);\n }\n _payout = _payout.mul(10**uint256(_decimals)).mul(_lotSize).div(100);\n return _payout;\n }\n\n // calculate settlement using oracle's callback data\n // needs to have _settlementPrice from oracle\n // options math goes here -- conditionals based on call/put\n /** @notice Calculate the settlement of ownership of option collateral\n @dev Throws if `_tokenId` is not a valid ERC-59 token.\n Throws if msg.sender is not one of: seller, owner of `_tokenId`.\n Throws if `hasSettlementPrice(_tokenId)` is false.\n\n [Option settlement math goes here for call / put situations]\n\n */\n function settlePiggy(uint256 _tokenId)\n public\n returns (bool)\n {\n require(msg.sender != address(0), \"msg.sender cannot be zero\");\n require(_tokenId != 0, \"tokenId cannot be zero\");\n require(piggies[_tokenId].flags.hasBeenCleared, \"piggy has not received an oracle price\");\n\n uint256 payout;\n\n if(piggies[_tokenId].flags.isEuro) {\n require(piggies[_tokenId].uintDetails.expiry <= block.number, \"European option needs to be expired\");\n }\n payout = _calculateLongPayout(\n piggies[_tokenId].flags.isPut,\n piggies[_tokenId].uintDetails.settlementPrice,\n piggies[_tokenId].uintDetails.strikePrice,\n piggies[_tokenId].uintDetails.lotSize,\n piggies[_tokenId].uintDetails.collateralDecimals\n );\n\n // set the balances of the two counterparties based on the payout\n address _writer = piggies[_tokenId].addresses.writer;\n address _holder = piggies[_tokenId].addresses.holder;\n address _collateralERC = piggies[_tokenId].addresses.collateralERC;\n\n if (payout > piggies[_tokenId].uintDetails.collateral) {\n payout = piggies[_tokenId].uintDetails.collateral;\n }\n ERC20balances[_holder][_collateralERC] = ERC20balances[_holder][_collateralERC].add(payout);\n ERC20balances[_writer][_collateralERC] = piggies[_tokenId].uintDetails.collateral.sub(payout);\n\n emit SettlePiggy(\n msg.sender,\n _tokenId,\n payout,\n piggies[_tokenId].uintDetails.collateral.sub(payout)\n );\n\n _removeTokenFromOwnedPiggies(_holder, _tokenId);\n //clean up piggyId\n _resetPiggy(_tokenId);\n return true;\n }\n\n // claim payout - pull payment\n // sends any reference ERC-20 which the _claimant is owed (as a result of an auction or settlement)\n function claimPayout(address _paymentToken, uint256 _amount)\n public\n returns (bool)\n {\n require(_amount <= ERC20balances[msg.sender][_paymentToken], \"ERC20 balance is less than requested amount\");\n ERC20balances[msg.sender][_paymentToken] = ERC20balances[msg.sender][_paymentToken].sub(_amount);\n //require(token(_stableToken).transfer(msg.sender, balanceOf(msg.sender))), \"Unable to transfer\");\n (bool success, ) = address(PaymentToken(_paymentToken)).call(\n abi.encodeWithSignature(\n \"transfer(address,uint256)\",\n msg.sender,\n _amount\n )\n );\n require(success, \"ERC20 token transfer failed\");\n\n emit ClaimPayout(\n msg.sender,\n _amount,\n _paymentToken\n );\n\n return true;\n }\n\n function _addTokenToOwnedPiggies(address _to, uint256 _tokenId)\n private\n {\n ownedPiggiesIndex[_tokenId] = ownedPiggies[_to].length;\n ownedPiggies[_to].push(_tokenId);\n }\n\n function _removeTokenFromOwnedPiggies(address _from, uint256 _tokenId)\n private\n {\n uint256 lastTokenIndex = ownedPiggies[_from].length.sub(1);\n uint256 tokenIndex = ownedPiggiesIndex[_tokenId];\n\n if (tokenIndex != lastTokenIndex) {\n uint256 lastTokenId = ownedPiggies[_from][lastTokenIndex];\n ownedPiggies[_from][tokenIndex] = lastTokenId;\n ownedPiggiesIndex[lastTokenId] = tokenIndex;\n }\n ownedPiggies[_from].length--;\n }\n\n function _resetPiggy(uint256 _tokenId)\n private\n {\n piggies[_tokenId].addresses.writer = address(0);\n piggies[_tokenId].addresses.holder = address(0);\n piggies[_tokenId].addresses.collateralERC = address(0);\n piggies[_tokenId].addresses.premiumERC = address(0);\n piggies[_tokenId].addresses.dataResolverNow = address(0);\n piggies[_tokenId].addresses.dataResolverAtExpiry = address(0);\n piggies[_tokenId].uintDetails.collateral = 0;\n piggies[_tokenId].uintDetails.lotSize = 0;\n piggies[_tokenId].uintDetails.strikePrice = 0;\n piggies[_tokenId].uintDetails.expiry = 0;\n piggies[_tokenId].uintDetails.settlementPrice = 0;\n piggies[_tokenId].uintDetails.reqCollateral = 0;\n piggies[_tokenId].uintDetails.collateralDecimals = 0;\n piggies[_tokenId].flags.isRequest = false;\n piggies[_tokenId].flags.isEuro = false;\n piggies[_tokenId].flags.isPut = false;\n piggies[_tokenId].flags.hasBeenCleared = false;\n }\n\n function kill()\n public\n {\n require(msg.sender == owner);\n selfdestruct(owner);\n }\n}\n", + "sourcePath": "/home/vagrant/DAPPS/smartpiggiesGithub/amerigo/explorer/contracts/SmartPiggies.sol", + "ast": { + "absolutePath": "/home/vagrant/DAPPS/smartpiggiesGithub/amerigo/explorer/contracts/SmartPiggies.sol", + "exportedSymbols": { + "PaymentToken": [ + 274 + ], + "SmartPiggies": [ + 2805 + ] + }, + "id": 2806, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 247, + "literals": [ + "solidity", + ">=", + "0.4", + ".24", + "<", + "0.6", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "750:32:4" + }, + { + "id": 248, + "literals": [ + "experimental", + "ABIEncoderV2" + ], + "nodeType": "PragmaDirective", + "src": "783:33:4" + }, + { + "baseContracts": [], + "contractDependencies": [], + "contractKind": "interface", + "documentation": null, + "fullyImplemented": false, + "id": 274, + "linearizedBaseContracts": [ + 274 + ], + "name": "PaymentToken", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": null, + "documentation": null, + "id": 259, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "transferFrom", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 255, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 250, + "name": "from", + "nodeType": "VariableDeclaration", + "scope": 259, + "src": "1067:12:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 249, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1067:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 252, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 259, + "src": "1081:10:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 251, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1081:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 254, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 259, + "src": "1093:13:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 253, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1093:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1066:41:4" + }, + "returnParameters": { + "id": 258, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 257, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 259, + "src": "1126:4:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 256, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1126:4:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1125:6:4" + }, + "scope": 274, + "src": "1045:87:4", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "external" + }, + { + "body": null, + "documentation": null, + "id": 268, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "transfer", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 264, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 261, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 268, + "src": "1153:10:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 260, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1153:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 263, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 268, + "src": "1165:13:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 262, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1165:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1152:27:4" + }, + "returnParameters": { + "id": 267, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 266, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 268, + "src": "1198:4:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 265, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1198:4:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1197:6:4" + }, + "scope": 274, + "src": "1135:69:4", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "external" + }, + { + "body": null, + "documentation": null, + "id": 273, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "decimals", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 269, + "nodeType": "ParameterList", + "parameters": [], + "src": "1224:2:4" + }, + "returnParameters": { + "id": 272, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 271, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 273, + "src": "1245:5:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 270, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "1245:5:4", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1244:7:4" + }, + "scope": 274, + "src": "1207:45:4", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "external" + } + ], + "scope": 2806, + "src": "1018:236:4" + }, + { + "absolutePath": "/home/vagrant/DAPPS/smartpiggiesGithub/amerigo/explorer/contracts/ERC165.sol", + "file": "./ERC165.sol", + "id": 275, + "nodeType": "ImportDirective", + "scope": 2806, + "sourceUnit": 51, + "src": "1256:22:4", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "/home/vagrant/DAPPS/smartpiggiesGithub/amerigo/explorer/contracts/SafeMath.sol", + "file": "./SafeMath.sol", + "id": 276, + "nodeType": "ImportDirective", + "scope": 2806, + "sourceUnit": 246, + "src": "1279:24:4", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 277, + "name": "ERC165", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 50, + "src": "1393:6:4", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC165_$50", + "typeString": "contract ERC165" + } + }, + "id": 278, + "nodeType": "InheritanceSpecifier", + "src": "1393:6:4" + } + ], + "contractDependencies": [ + 50, + 60 + ], + "contractKind": "contract", + "documentation": "@title ERC-59 (subject to change) Smart Option Standard", + "fullyImplemented": true, + "id": 2805, + "linearizedBaseContracts": [ + 2805, + 50, + 60 + ], + "name": "SmartPiggies", + "nodeType": "ContractDefinition", + "nodes": [ + { + "id": 281, + "libraryName": { + "contractScope": null, + "id": 279, + "name": "SafeMath", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 245, + "src": "1410:8:4", + "typeDescriptions": { + "typeIdentifier": "t_contract$_SafeMath_$245", + "typeString": "library SafeMath" + } + }, + "nodeType": "UsingForDirective", + "src": "1404:27:4", + "typeName": { + "id": 280, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1423:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + { + "constant": false, + "id": 283, + "name": "owner", + "nodeType": "VariableDeclaration", + "scope": 2805, + "src": "1435:21:4", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + "typeName": { + "id": 282, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1435:15:4", + "stateMutability": "payable", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 285, + "name": "tokenId", + "nodeType": "VariableDeclaration", + "scope": 2805, + "src": "1460:22:4", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 284, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1460:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "public" + }, + { + "canonicalName": "SmartPiggies.DetailAddresses", + "id": 298, + "members": [ + { + "constant": false, + "id": 287, + "name": "writer", + "nodeType": "VariableDeclaration", + "scope": 298, + "src": "1516:14:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 286, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1516:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 289, + "name": "holder", + "nodeType": "VariableDeclaration", + "scope": 298, + "src": "1536:14:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 288, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1536:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 291, + "name": "collateralERC", + "nodeType": "VariableDeclaration", + "scope": 298, + "src": "1556:21:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 290, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1556:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 293, + "name": "premiumERC", + "nodeType": "VariableDeclaration", + "scope": 298, + "src": "1583:18:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 292, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1583:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 295, + "name": "dataResolverNow", + "nodeType": "VariableDeclaration", + "scope": 298, + "src": "1607:23:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 294, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1607:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 297, + "name": "dataResolverAtExpiry", + "nodeType": "VariableDeclaration", + "scope": 298, + "src": "1636:28:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 296, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1636:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "name": "DetailAddresses", + "nodeType": "StructDefinition", + "scope": 2805, + "src": "1487:182:4", + "visibility": "public" + }, + { + "canonicalName": "SmartPiggies.DetailUints", + "id": 313, + "members": [ + { + "constant": false, + "id": 300, + "name": "collateral", + "nodeType": "VariableDeclaration", + "scope": 313, + "src": "1698:18:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 299, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1698:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 302, + "name": "lotSize", + "nodeType": "VariableDeclaration", + "scope": 313, + "src": "1722:15:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 301, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1722:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 304, + "name": "strikePrice", + "nodeType": "VariableDeclaration", + "scope": 313, + "src": "1743:19:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 303, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1743:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 306, + "name": "expiry", + "nodeType": "VariableDeclaration", + "scope": 313, + "src": "1768:14:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 305, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1768:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 308, + "name": "settlementPrice", + "nodeType": "VariableDeclaration", + "scope": 313, + "src": "1788:23:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 307, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1788:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 310, + "name": "reqCollateral", + "nodeType": "VariableDeclaration", + "scope": 313, + "src": "1817:21:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 309, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1817:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 312, + "name": "collateralDecimals", + "nodeType": "VariableDeclaration", + "scope": 313, + "src": "1844:24:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 311, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "1844:5:4", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": null, + "visibility": "internal" + } + ], + "name": "DetailUints", + "nodeType": "StructDefinition", + "scope": 2805, + "src": "1673:243:4", + "visibility": "public" + }, + { + "canonicalName": "SmartPiggies.BoolFlags", + "id": 322, + "members": [ + { + "constant": false, + "id": 315, + "name": "isRequest", + "nodeType": "VariableDeclaration", + "scope": 322, + "src": "1943:14:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 314, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1943:4:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 317, + "name": "isEuro", + "nodeType": "VariableDeclaration", + "scope": 322, + "src": "1963:11:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 316, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1963:4:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 319, + "name": "isPut", + "nodeType": "VariableDeclaration", + "scope": 322, + "src": "1980:10:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 318, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1980:4:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 321, + "name": "hasBeenCleared", + "nodeType": "VariableDeclaration", + "scope": 322, + "src": "1996:19:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 320, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1996:4:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "name": "BoolFlags", + "nodeType": "StructDefinition", + "scope": 2805, + "src": "1920:160:4", + "visibility": "public" + }, + { + "canonicalName": "SmartPiggies.DetailAuction", + "id": 339, + "members": [ + { + "constant": false, + "id": 324, + "name": "startBlock", + "nodeType": "VariableDeclaration", + "scope": 339, + "src": "2111:18:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 323, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2111:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 326, + "name": "expiryBlock", + "nodeType": "VariableDeclaration", + "scope": 339, + "src": "2135:19:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 325, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2135:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 328, + "name": "startPrice", + "nodeType": "VariableDeclaration", + "scope": 339, + "src": "2160:18:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 327, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2160:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 330, + "name": "reservePrice", + "nodeType": "VariableDeclaration", + "scope": 339, + "src": "2184:20:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 329, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2184:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 332, + "name": "timeStep", + "nodeType": "VariableDeclaration", + "scope": 339, + "src": "2210:16:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 331, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2210:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 334, + "name": "priceStep", + "nodeType": "VariableDeclaration", + "scope": 339, + "src": "2232:17:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 333, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2232:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 336, + "name": "auctionActive", + "nodeType": "VariableDeclaration", + "scope": 339, + "src": "2255:18:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 335, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "2255:4:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 338, + "name": "satisfyInProgress", + "nodeType": "VariableDeclaration", + "scope": 339, + "src": "2279:22:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 337, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "2279:4:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "name": "DetailAuction", + "nodeType": "StructDefinition", + "scope": 2805, + "src": "2084:311:4", + "visibility": "public" + }, + { + "canonicalName": "SmartPiggies.Piggy", + "id": 346, + "members": [ + { + "constant": false, + "id": 341, + "name": "addresses", + "nodeType": "VariableDeclaration", + "scope": 346, + "src": "2418:25:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAddresses_$298_storage_ptr", + "typeString": "struct SmartPiggies.DetailAddresses" + }, + "typeName": { + "contractScope": null, + "id": 340, + "name": "DetailAddresses", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 298, + "src": "2418:15:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAddresses_$298_storage_ptr", + "typeString": "struct SmartPiggies.DetailAddresses" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 343, + "name": "uintDetails", + "nodeType": "VariableDeclaration", + "scope": 346, + "src": "2467:23:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailUints_$313_storage_ptr", + "typeString": "struct SmartPiggies.DetailUints" + }, + "typeName": { + "contractScope": null, + "id": 342, + "name": "DetailUints", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 313, + "src": "2467:11:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailUints_$313_storage_ptr", + "typeString": "struct SmartPiggies.DetailUints" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 345, + "name": "flags", + "nodeType": "VariableDeclaration", + "scope": 346, + "src": "2513:15:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BoolFlags_$322_storage_ptr", + "typeString": "struct SmartPiggies.BoolFlags" + }, + "typeName": { + "contractScope": null, + "id": 344, + "name": "BoolFlags", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 322, + "src": "2513:9:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BoolFlags_$322_storage_ptr", + "typeString": "struct SmartPiggies.BoolFlags" + } + }, + "value": null, + "visibility": "internal" + } + ], + "name": "Piggy", + "nodeType": "StructDefinition", + "scope": 2805, + "src": "2399:155:4", + "visibility": "public" + }, + { + "constant": false, + "id": 352, + "name": "ERC20balances", + "nodeType": "VariableDeclaration", + "scope": 2805, + "src": "2558:70:4", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + }, + "typeName": { + "id": 351, + "keyType": { + "id": 347, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2567:7:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "2558:48:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + }, + "valueType": { + "id": 350, + "keyType": { + "id": 348, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2586:7:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "2578:27:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + }, + "valueType": { + "id": 349, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2597:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + } + }, + "value": null, + "visibility": "private" + }, + { + "constant": false, + "id": 357, + "name": "ownedPiggies", + "nodeType": "VariableDeclaration", + "scope": 2805, + "src": "2632:51:4", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_uint256_$dyn_storage_$", + "typeString": "mapping(address => uint256[])" + }, + "typeName": { + "id": 356, + "keyType": { + "id": 353, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2641:7:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "2632:30:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_uint256_$dyn_storage_$", + "typeString": "mapping(address => uint256[])" + }, + "valueType": { + "baseType": { + "id": 354, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2652:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 355, + "length": null, + "nodeType": "ArrayTypeName", + "src": "2652:9:4", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + } + }, + "value": null, + "visibility": "private" + }, + { + "constant": false, + "id": 361, + "name": "ownedPiggiesIndex", + "nodeType": "VariableDeclaration", + "scope": 2805, + "src": "2704:54:4", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$", + "typeString": "mapping(uint256 => uint256)" + }, + "typeName": { + "id": 360, + "keyType": { + "id": 358, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2713:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Mapping", + "src": "2704:28:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$", + "typeString": "mapping(uint256 => uint256)" + }, + "valueType": { + "id": 359, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2724:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "value": null, + "visibility": "private" + }, + { + "constant": false, + "id": 365, + "name": "piggies", + "nodeType": "VariableDeclaration", + "scope": 2805, + "src": "2762:42:4", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy)" + }, + "typeName": { + "id": 364, + "keyType": { + "id": 362, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2771:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Mapping", + "src": "2762:26:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy)" + }, + "valueType": { + "contractScope": null, + "id": 363, + "name": "Piggy", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 346, + "src": "2782:5:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage_ptr", + "typeString": "struct SmartPiggies.Piggy" + } + } + }, + "value": null, + "visibility": "private" + }, + { + "constant": false, + "id": 369, + "name": "auctions", + "nodeType": "VariableDeclaration", + "scope": 2805, + "src": "2808:51:4", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_DetailAuction_$339_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.DetailAuction)" + }, + "typeName": { + "id": 368, + "keyType": { + "id": 366, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2817:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Mapping", + "src": "2808:34:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_DetailAuction_$339_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.DetailAuction)" + }, + "valueType": { + "contractScope": null, + "id": 367, + "name": "DetailAuction", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 339, + "src": "2828:13:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAuction_$339_storage_ptr", + "typeString": "struct SmartPiggies.DetailAuction" + } + } + }, + "value": null, + "visibility": "private" + }, + { + "anonymous": false, + "documentation": null, + "id": 381, + "name": "CreatePiggy", + "nodeType": "EventDefinition", + "parameters": { + "id": 380, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 371, + "indexed": true, + "name": "from", + "nodeType": "VariableDeclaration", + "scope": 381, + "src": "2913:20:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 370, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2913:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 373, + "indexed": true, + "name": "tokenId", + "nodeType": "VariableDeclaration", + "scope": 381, + "src": "2941:23:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 372, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2941:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 375, + "indexed": true, + "name": "strike", + "nodeType": "VariableDeclaration", + "scope": 381, + "src": "2972:22:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 374, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2972:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 377, + "indexed": false, + "name": "expiryBlock", + "nodeType": "VariableDeclaration", + "scope": 381, + "src": "3002:19:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 376, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3002:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 379, + "indexed": false, + "name": "RFP", + "nodeType": "VariableDeclaration", + "scope": 381, + "src": "3029:8:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 378, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "3029:4:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2905:136:4" + }, + "src": "2888:154:4" + }, + { + "anonymous": false, + "documentation": null, + "id": 389, + "name": "TransferPiggy", + "nodeType": "EventDefinition", + "parameters": { + "id": 388, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 383, + "indexed": true, + "name": "from", + "nodeType": "VariableDeclaration", + "scope": 389, + "src": "3073:20:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 382, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3073:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 385, + "indexed": true, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 389, + "src": "3101:18:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 384, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3101:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 387, + "indexed": true, + "name": "tokenId", + "nodeType": "VariableDeclaration", + "scope": 389, + "src": "3127:23:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 386, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3127:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3065:89:4" + }, + "src": "3046:109:4" + }, + { + "anonymous": false, + "documentation": null, + "id": 415, + "name": "UpdateRFP", + "nodeType": "EventDefinition", + "parameters": { + "id": 414, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 391, + "indexed": true, + "name": "from", + "nodeType": "VariableDeclaration", + "scope": 415, + "src": "3182:20:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 390, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3182:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 393, + "indexed": true, + "name": "tokenId", + "nodeType": "VariableDeclaration", + "scope": 415, + "src": "3210:23:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 392, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3210:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 395, + "indexed": false, + "name": "collateralERC", + "nodeType": "VariableDeclaration", + "scope": 415, + "src": "3241:21:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 394, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3241:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 397, + "indexed": false, + "name": "premiumERC", + "nodeType": "VariableDeclaration", + "scope": 415, + "src": "3270:18:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 396, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3270:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 399, + "indexed": false, + "name": "dataResolverNow", + "nodeType": "VariableDeclaration", + "scope": 415, + "src": "3296:23:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 398, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3296:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 401, + "indexed": false, + "name": "dataResolverAtExpiry", + "nodeType": "VariableDeclaration", + "scope": 415, + "src": "3327:28:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 400, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3327:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 403, + "indexed": false, + "name": "reqCollateral", + "nodeType": "VariableDeclaration", + "scope": 415, + "src": "3363:21:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 402, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3363:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 405, + "indexed": false, + "name": "lotSize", + "nodeType": "VariableDeclaration", + "scope": 415, + "src": "3392:15:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 404, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3392:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 407, + "indexed": false, + "name": "strikePrice", + "nodeType": "VariableDeclaration", + "scope": 415, + "src": "3415:19:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 406, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3415:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 409, + "indexed": false, + "name": "expiry", + "nodeType": "VariableDeclaration", + "scope": 415, + "src": "3442:14:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 408, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3442:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 411, + "indexed": false, + "name": "isEuro", + "nodeType": "VariableDeclaration", + "scope": 415, + "src": "3464:11:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 410, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "3464:4:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 413, + "indexed": false, + "name": "isPut", + "nodeType": "VariableDeclaration", + "scope": 415, + "src": "3483:10:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 412, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "3483:4:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3174:323:4" + }, + "src": "3159:339:4" + }, + { + "anonymous": false, + "documentation": null, + "id": 423, + "name": "ReclaimAndBurn", + "nodeType": "EventDefinition", + "parameters": { + "id": 422, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 417, + "indexed": true, + "name": "from", + "nodeType": "VariableDeclaration", + "scope": 423, + "src": "3530:20:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 416, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3530:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 419, + "indexed": true, + "name": "tokenId", + "nodeType": "VariableDeclaration", + "scope": 423, + "src": "3558:23:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 418, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3558:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 421, + "indexed": true, + "name": "RFP", + "nodeType": "VariableDeclaration", + "scope": 423, + "src": "3589:16:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 420, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "3589:4:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3522:87:4" + }, + "src": "3502:108:4" + }, + { + "anonymous": false, + "documentation": null, + "id": 439, + "name": "StartAuction", + "nodeType": "EventDefinition", + "parameters": { + "id": 438, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 425, + "indexed": true, + "name": "from", + "nodeType": "VariableDeclaration", + "scope": 439, + "src": "3640:20:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 424, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3640:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 427, + "indexed": true, + "name": "tokenId", + "nodeType": "VariableDeclaration", + "scope": 439, + "src": "3668:23:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 426, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3668:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 429, + "indexed": false, + "name": "startPrice", + "nodeType": "VariableDeclaration", + "scope": 439, + "src": "3699:18:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 428, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3699:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 431, + "indexed": false, + "name": "reservePrice", + "nodeType": "VariableDeclaration", + "scope": 439, + "src": "3725:20:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 430, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3725:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 433, + "indexed": false, + "name": "auctionLength", + "nodeType": "VariableDeclaration", + "scope": 439, + "src": "3753:21:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 432, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3753:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 435, + "indexed": false, + "name": "timeStep", + "nodeType": "VariableDeclaration", + "scope": 439, + "src": "3782:16:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 434, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3782:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 437, + "indexed": false, + "name": "priceStep", + "nodeType": "VariableDeclaration", + "scope": 439, + "src": "3806:17:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 436, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3806:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3632:195:4" + }, + "src": "3614:214:4" + }, + { + "anonymous": false, + "documentation": null, + "id": 447, + "name": "EndAuction", + "nodeType": "EventDefinition", + "parameters": { + "id": 446, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 441, + "indexed": true, + "name": "from", + "nodeType": "VariableDeclaration", + "scope": 447, + "src": "3856:20:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 440, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3856:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 443, + "indexed": true, + "name": "tokenId", + "nodeType": "VariableDeclaration", + "scope": 447, + "src": "3884:23:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 442, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3884:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 445, + "indexed": true, + "name": "RFP", + "nodeType": "VariableDeclaration", + "scope": 447, + "src": "3915:16:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 444, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "3915:4:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3848:87:4" + }, + "src": "3832:104:4" + }, + { + "anonymous": false, + "documentation": null, + "id": 459, + "name": "SatisfyAuction", + "nodeType": "EventDefinition", + "parameters": { + "id": 458, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 449, + "indexed": true, + "name": "from", + "nodeType": "VariableDeclaration", + "scope": 459, + "src": "3968:20:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 448, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3968:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 451, + "indexed": true, + "name": "tokenId", + "nodeType": "VariableDeclaration", + "scope": 459, + "src": "3996:23:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 450, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3996:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 453, + "indexed": false, + "name": "paidPremium", + "nodeType": "VariableDeclaration", + "scope": 459, + "src": "4027:19:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 452, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4027:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 455, + "indexed": false, + "name": "change", + "nodeType": "VariableDeclaration", + "scope": 459, + "src": "4054:14:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 454, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4054:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 457, + "indexed": false, + "name": "auctionPremium", + "nodeType": "VariableDeclaration", + "scope": 459, + "src": "4076:22:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 456, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4076:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3960:142:4" + }, + "src": "3940:163:4" + }, + { + "anonymous": false, + "documentation": null, + "id": 469, + "name": "RequestSettlementPrice", + "nodeType": "EventDefinition", + "parameters": { + "id": 468, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 461, + "indexed": true, + "name": "feePayer", + "nodeType": "VariableDeclaration", + "scope": 469, + "src": "4143:24:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 460, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4143:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 463, + "indexed": true, + "name": "tokenId", + "nodeType": "VariableDeclaration", + "scope": 469, + "src": "4175:23:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 462, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4175:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 465, + "indexed": false, + "name": "oracleFee", + "nodeType": "VariableDeclaration", + "scope": 469, + "src": "4206:17:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 464, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4206:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 467, + "indexed": false, + "name": "dataResolver", + "nodeType": "VariableDeclaration", + "scope": 469, + "src": "4231:20:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 466, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4231:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4135:120:4" + }, + "src": "4107:149:4" + }, + { + "anonymous": false, + "documentation": null, + "id": 477, + "name": "OracleReturned", + "nodeType": "EventDefinition", + "parameters": { + "id": 476, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 471, + "indexed": true, + "name": "resolver", + "nodeType": "VariableDeclaration", + "scope": 477, + "src": "4288:24:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 470, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4288:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 473, + "indexed": true, + "name": "tokenId", + "nodeType": "VariableDeclaration", + "scope": 477, + "src": "4320:23:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 472, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4320:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 475, + "indexed": true, + "name": "price", + "nodeType": "VariableDeclaration", + "scope": 477, + "src": "4351:21:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 474, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4351:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4280:96:4" + }, + "src": "4260:117:4" + }, + { + "anonymous": false, + "documentation": null, + "id": 487, + "name": "SettlePiggy", + "nodeType": "EventDefinition", + "parameters": { + "id": 486, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 479, + "indexed": true, + "name": "from", + "nodeType": "VariableDeclaration", + "scope": 487, + "src": "4405:20:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 478, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4405:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 481, + "indexed": true, + "name": "tokenId", + "nodeType": "VariableDeclaration", + "scope": 487, + "src": "4432:23:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 480, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4432:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 483, + "indexed": true, + "name": "holderPayout", + "nodeType": "VariableDeclaration", + "scope": 487, + "src": "4462:28:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 482, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4462:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 485, + "indexed": false, + "name": "writerPayout", + "nodeType": "VariableDeclaration", + "scope": 487, + "src": "4497:20:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 484, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4497:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4398:123:4" + }, + "src": "4381:141:4" + }, + { + "anonymous": false, + "documentation": null, + "id": 495, + "name": "ClaimPayout", + "nodeType": "EventDefinition", + "parameters": { + "id": 494, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 489, + "indexed": true, + "name": "from", + "nodeType": "VariableDeclaration", + "scope": 495, + "src": "4551:20:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 488, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4551:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 491, + "indexed": true, + "name": "amount", + "nodeType": "VariableDeclaration", + "scope": 495, + "src": "4579:22:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 490, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4579:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 493, + "indexed": true, + "name": "paymentToken", + "nodeType": "VariableDeclaration", + "scope": 495, + "src": "4609:28:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 492, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4609:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4543:98:4" + }, + "src": "4526:116:4" + }, + { + "body": { + "id": 503, + "nodeType": "Block", + "src": "4915:92:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 501, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 498, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 283, + "src": "4945:5:4", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 499, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2820, + "src": "4953:3:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 500, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "4953:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "4945:18:4", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "id": 502, + "nodeType": "ExpressionStatement", + "src": "4945:18:4" + } + ] + }, + "documentation": "constructor should throw if various things aren't properly set\nalso should throw if the contract is not delegated an amount of collateral designated\nin the reference ERC-20 which is >= the collateral value of the piggy", + "id": 504, + "implemented": true, + "kind": "constructor", + "modifiers": [], + "name": "", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 496, + "nodeType": "ParameterList", + "parameters": [], + "src": "4899:2:4" + }, + "returnParameters": { + "id": 497, + "nodeType": "ParameterList", + "parameters": [], + "src": "4915:0:4" + }, + "scope": 2805, + "src": "4888:119:4", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 536, + "nodeType": "Block", + "src": "5180:223:4", + "statements": [ + { + "assignments": [ + 518, + null + ], + "declarations": [ + { + "constant": false, + "id": 518, + "name": "success", + "nodeType": "VariableDeclaration", + "scope": 536, + "src": "5187:12:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 517, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "5187:4:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + }, + null + ], + "id": 533, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "7472616e7366657246726f6d28616464726573732c616464726573732c75696e7432353629", + "id": 527, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5280:39:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_23b872dd7302113369cda2901243429419bec145408fa8b352b3dd92b66c680b", + "typeString": "literal_string \"transferFrom(address,address,uint256)\"" + }, + "value": "transferFrom(address,address,uint256)" + }, + { + "argumentTypes": null, + "id": 528, + "name": "_from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 508, + "src": "5329:5:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 529, + "name": "_to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 510, + "src": "5344:3:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 530, + "name": "_amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 512, + "src": "5357:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_23b872dd7302113369cda2901243429419bec145408fa8b352b3dd92b66c680b", + "typeString": "literal_string \"transferFrom(address,address,uint256)\"" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 525, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2807, + "src": "5247:3:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 526, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "encodeWithSignature", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "5247:23:4", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$", + "typeString": "function (string memory) pure returns (bytes memory)" + } + }, + "id": 531, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5247:125:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 521, + "name": "_ERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 506, + "src": "5226:6:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 520, + "name": "PaymentToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 274, + "src": "5213:12:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_PaymentToken_$274_$", + "typeString": "type(contract PaymentToken)" + } + }, + "id": 522, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5213:20:4", + "typeDescriptions": { + "typeIdentifier": "t_contract$_PaymentToken_$274", + "typeString": "contract PaymentToken" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_PaymentToken_$274", + "typeString": "contract PaymentToken" + } + ], + "id": 519, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "5205:7:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 523, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5205:29:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 524, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "call", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "5205:34:4", + "typeDescriptions": { + "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$", + "typeString": "function (bytes memory) payable returns (bool,bytes memory)" + } + }, + "id": 532, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5205:173:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$", + "typeString": "tuple(bool,bytes memory)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "5186:192:4" + }, + { + "expression": { + "argumentTypes": null, + "id": 534, + "name": "success", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 518, + "src": "5391:7:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 516, + "id": 535, + "nodeType": "Return", + "src": "5384:14:4" + } + ] + }, + "documentation": null, + "id": 537, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "attemptPaymentTransfer", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 513, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 506, + "name": "_ERC20", + "nodeType": "VariableDeclaration", + "scope": 537, + "src": "5086:14:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 505, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5086:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 508, + "name": "_from", + "nodeType": "VariableDeclaration", + "scope": 537, + "src": "5102:13:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 507, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5102:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 510, + "name": "_to", + "nodeType": "VariableDeclaration", + "scope": 537, + "src": "5117:11:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 509, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5117:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 512, + "name": "_amount", + "nodeType": "VariableDeclaration", + "scope": 537, + "src": "5130:15:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 511, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5130:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "5085:61:4" + }, + "returnParameters": { + "id": 516, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 515, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 537, + "src": "5172:4:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 514, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "5172:4:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "5171:6:4" + }, + "scope": 2805, + "src": "5054:349:4", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "private" + }, + { + "body": { + "id": 797, + "nodeType": "Block", + "src": "8764:1864:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 587, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 581, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 575, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 569, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 565, + "name": "_collateralERC", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 539, + "src": "8783:14:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 567, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8809: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": 566, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "8801:7:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 568, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8801:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "8783:28:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 574, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 570, + "name": "_premiumERC", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 541, + "src": "8820:11:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 572, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8843: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": 571, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "8835:7:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 573, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8835:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "8820:25:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "8783:62:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 580, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 576, + "name": "_dataResolverNow", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 543, + "src": "8854:16:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 578, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8882: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": 577, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "8874:7:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 579, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8874:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "8854:30:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "8783:101:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 586, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 582, + "name": "_dataResolverAtExpiry", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 545, + "src": "8893:21:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 584, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8926: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": 583, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "8918:7:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 585, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8918:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "8893:35:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "8783:145:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "6164647265737365732063616e6e6f74206265207a65726f", + "id": 588, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8935:26:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_04b4803be6c06d5f35b7b540ae4bce56518da084f117a7525381eb79fdf75203", + "typeString": "literal_string \"addresses cannot be zero\"" + }, + "value": "addresses cannot be zero" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_04b4803be6c06d5f35b7b540ae4bce56518da084f117a7525381eb79fdf75203", + "typeString": "literal_string \"addresses cannot be zero\"" + } + ], + "id": 564, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2823, + 2824 + ], + "referencedDeclaration": 2824, + "src": "8769:7:4", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 589, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8769:197:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 590, + "nodeType": "ExpressionStatement", + "src": "8769:197:4" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 606, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 602, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 598, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 594, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 592, + "name": "_collateral", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 547, + "src": "8985:11:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 593, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9000:1:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "8985:16:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 597, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 595, + "name": "_lotSize", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 549, + "src": "9010:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 596, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9022:1:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "9010:13:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "8985:38:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 601, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 599, + "name": "_strikePrice", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 551, + "src": "9032:12:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 600, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9048:1:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "9032:17:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "8985:64:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 605, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 603, + "name": "_expiry", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 553, + "src": "9058:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 604, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9069:1:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "9058:12:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "8985:85:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "6f7074696f6e20706172616d65746572732063616e6e6f74206265207a65726f", + "id": 607, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9077:34:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_ac99e164bea37b648bac329df7c0cdace8a6038fe5232a0b7866c4984b85edf8", + "typeString": "literal_string \"option parameters cannot be zero\"" + }, + "value": "option parameters cannot be zero" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_ac99e164bea37b648bac329df7c0cdace8a6038fe5232a0b7866c4984b85edf8", + "typeString": "literal_string \"option parameters cannot be zero\"" + } + ], + "id": 591, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2823, + 2824 + ], + "referencedDeclaration": 2824, + "src": "8971:7:4", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 608, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8971:145:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 609, + "nodeType": "ExpressionStatement", + "src": "8971:145:4" + }, + { + "condition": { + "argumentTypes": null, + "id": 611, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "9190:11:4", + "subExpression": { + "argumentTypes": null, + "id": 610, + "name": "_isRequest", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 559, + "src": "9191:10:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 630, + "nodeType": "IfStatement", + "src": "9186:233:4", + "trueBody": { + "id": 629, + "nodeType": "Block", + "src": "9203:216:4", + "statements": [ + { + "assignments": [ + 613 + ], + "declarations": [ + { + "constant": false, + "id": 613, + "name": "success", + "nodeType": "VariableDeclaration", + "scope": 629, + "src": "9210:12:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 612, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "9210:4:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 623, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 615, + "name": "_collateralERC", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 539, + "src": "9256:14:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 616, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2820, + "src": "9296:3:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 617, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "9296:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 619, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2843, + "src": "9323:4:4", + "typeDescriptions": { + "typeIdentifier": "t_contract$_SmartPiggies_$2805", + "typeString": "contract SmartPiggies" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_SmartPiggies_$2805", + "typeString": "contract SmartPiggies" + } + ], + "id": 618, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "9315:7:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 620, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9315:13:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 621, + "name": "_collateral", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 547, + "src": "9337:11:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 614, + "name": "attemptPaymentTransfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 537, + "src": "9225:22:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,address,address,uint256) returns (bool)" + } + }, + "id": 622, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9225:130:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "9210:145:4" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 625, + "name": "success", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 613, + "src": "9370:7:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "546f6b656e207472616e7366657220646964206e6f7420636f6d706c657465", + "id": 626, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9379:33:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_7dfd8cf2b3edad113675466e31dce9cad239a317a5d8a68bee6c9cb579f1bea2", + "typeString": "literal_string \"Token transfer did not complete\"" + }, + "value": "Token transfer did not complete" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_7dfd8cf2b3edad113675466e31dce9cad239a317a5d8a68bee6c9cb579f1bea2", + "typeString": "literal_string \"Token transfer did not complete\"" + } + ], + "id": 624, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2823, + 2824 + ], + "referencedDeclaration": 2824, + "src": "9362:7:4", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 627, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9362:51:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 628, + "nodeType": "ExpressionStatement", + "src": "9362:51:4" + } + ] + } + }, + { + "expression": { + "argumentTypes": null, + "id": 636, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 631, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 285, + "src": "9536:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "31", + "id": 634, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9558:1:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + } + ], + "expression": { + "argumentTypes": null, + "id": 632, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 285, + "src": "9546:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 633, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 224, + "src": "9546:11:4", + "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": 635, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9546:14:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "9536:24:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 637, + "nodeType": "ExpressionStatement", + "src": "9536:24:4" + }, + { + "assignments": [ + 639 + ], + "declarations": [ + { + "constant": false, + "id": 639, + "name": "p", + "nodeType": "VariableDeclaration", + "scope": 797, + "src": "9627:15:4", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage_ptr", + "typeString": "struct SmartPiggies.Piggy" + }, + "typeName": { + "contractScope": null, + "id": 638, + "name": "Piggy", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 346, + "src": "9627:5:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage_ptr", + "typeString": "struct SmartPiggies.Piggy" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 643, + "initialValue": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 640, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "9645:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 642, + "indexExpression": { + "argumentTypes": null, + "id": 641, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 285, + "src": "9653:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "9645:16:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "9627:34:4" + }, + { + "expression": { + "argumentTypes": null, + "id": 651, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 644, + "name": "p", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 639, + "src": "9666:1:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage_ptr", + "typeString": "struct SmartPiggies.Piggy storage pointer" + } + }, + "id": 647, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "addresses", + "nodeType": "MemberAccess", + "referencedDeclaration": 341, + "src": "9666:11:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAddresses_$298_storage", + "typeString": "struct SmartPiggies.DetailAddresses storage ref" + } + }, + "id": 648, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "holder", + "nodeType": "MemberAccess", + "referencedDeclaration": 289, + "src": "9666:18:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 649, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2820, + "src": "9687:3:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 650, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "9687:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "9666:31:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 652, + "nodeType": "ExpressionStatement", + "src": "9666:31:4" + }, + { + "expression": { + "argumentTypes": null, + "id": 659, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 653, + "name": "p", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 639, + "src": "9702:1:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage_ptr", + "typeString": "struct SmartPiggies.Piggy storage pointer" + } + }, + "id": 656, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "addresses", + "nodeType": "MemberAccess", + "referencedDeclaration": 341, + "src": "9702:11:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAddresses_$298_storage", + "typeString": "struct SmartPiggies.DetailAddresses storage ref" + } + }, + "id": 657, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "collateralERC", + "nodeType": "MemberAccess", + "referencedDeclaration": 291, + "src": "9702:25:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 658, + "name": "_collateralERC", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 539, + "src": "9730:14:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "9702:42:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 660, + "nodeType": "ExpressionStatement", + "src": "9702:42:4" + }, + { + "expression": { + "argumentTypes": null, + "id": 667, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 661, + "name": "p", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 639, + "src": "9749:1:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage_ptr", + "typeString": "struct SmartPiggies.Piggy storage pointer" + } + }, + "id": 664, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "addresses", + "nodeType": "MemberAccess", + "referencedDeclaration": 341, + "src": "9749:11:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAddresses_$298_storage", + "typeString": "struct SmartPiggies.DetailAddresses storage ref" + } + }, + "id": 665, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "premiumERC", + "nodeType": "MemberAccess", + "referencedDeclaration": 293, + "src": "9749:22:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 666, + "name": "_premiumERC", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 541, + "src": "9774:11:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "9749:36:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 668, + "nodeType": "ExpressionStatement", + "src": "9749:36:4" + }, + { + "expression": { + "argumentTypes": null, + "id": 675, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 669, + "name": "p", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 639, + "src": "9790:1:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage_ptr", + "typeString": "struct SmartPiggies.Piggy storage pointer" + } + }, + "id": 672, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "addresses", + "nodeType": "MemberAccess", + "referencedDeclaration": 341, + "src": "9790:11:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAddresses_$298_storage", + "typeString": "struct SmartPiggies.DetailAddresses storage ref" + } + }, + "id": 673, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "dataResolverNow", + "nodeType": "MemberAccess", + "referencedDeclaration": 295, + "src": "9790:27:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 674, + "name": "_dataResolverNow", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 543, + "src": "9820:16:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "9790:46:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 676, + "nodeType": "ExpressionStatement", + "src": "9790:46:4" + }, + { + "expression": { + "argumentTypes": null, + "id": 683, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 677, + "name": "p", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 639, + "src": "9841:1:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage_ptr", + "typeString": "struct SmartPiggies.Piggy storage pointer" + } + }, + "id": 680, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "addresses", + "nodeType": "MemberAccess", + "referencedDeclaration": 341, + "src": "9841:11:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAddresses_$298_storage", + "typeString": "struct SmartPiggies.DetailAddresses storage ref" + } + }, + "id": 681, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "dataResolverAtExpiry", + "nodeType": "MemberAccess", + "referencedDeclaration": 297, + "src": "9841:32:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 682, + "name": "_dataResolverAtExpiry", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 545, + "src": "9876:21:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "9841:56:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 684, + "nodeType": "ExpressionStatement", + "src": "9841:56:4" + }, + { + "expression": { + "argumentTypes": null, + "id": 693, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 685, + "name": "p", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 639, + "src": "9902:1:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage_ptr", + "typeString": "struct SmartPiggies.Piggy storage pointer" + } + }, + "id": 688, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "uintDetails", + "nodeType": "MemberAccess", + "referencedDeclaration": 343, + "src": "9902:13:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailUints_$313_storage", + "typeString": "struct SmartPiggies.DetailUints storage ref" + } + }, + "id": 689, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "collateralDecimals", + "nodeType": "MemberAccess", + "referencedDeclaration": 312, + "src": "9902:32:4", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 691, + "name": "_collateralERC", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 539, + "src": "9955:14:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 690, + "name": "_getERC20Decimals", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 872, + "src": "9937:17:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$_t_uint8_$", + "typeString": "function (address) returns (uint8)" + } + }, + "id": 692, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9937:33:4", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "src": "9902:68:4", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "id": 694, + "nodeType": "ExpressionStatement", + "src": "9902:68:4" + }, + { + "expression": { + "argumentTypes": null, + "id": 701, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 695, + "name": "p", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 639, + "src": "9975:1:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage_ptr", + "typeString": "struct SmartPiggies.Piggy storage pointer" + } + }, + "id": 698, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "uintDetails", + "nodeType": "MemberAccess", + "referencedDeclaration": 343, + "src": "9975:13:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailUints_$313_storage", + "typeString": "struct SmartPiggies.DetailUints storage ref" + } + }, + "id": 699, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "lotSize", + "nodeType": "MemberAccess", + "referencedDeclaration": 302, + "src": "9975:21:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 700, + "name": "_lotSize", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 549, + "src": "9999:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "9975:32:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 702, + "nodeType": "ExpressionStatement", + "src": "9975:32:4" + }, + { + "expression": { + "argumentTypes": null, + "id": 709, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 703, + "name": "p", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 639, + "src": "10012:1:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage_ptr", + "typeString": "struct SmartPiggies.Piggy storage pointer" + } + }, + "id": 706, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "uintDetails", + "nodeType": "MemberAccess", + "referencedDeclaration": 343, + "src": "10012:13:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailUints_$313_storage", + "typeString": "struct SmartPiggies.DetailUints storage ref" + } + }, + "id": 707, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "strikePrice", + "nodeType": "MemberAccess", + "referencedDeclaration": 304, + "src": "10012:25:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 708, + "name": "_strikePrice", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 551, + "src": "10040:12:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "10012:40:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 710, + "nodeType": "ExpressionStatement", + "src": "10012:40:4" + }, + { + "expression": { + "argumentTypes": null, + "id": 721, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 711, + "name": "p", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 639, + "src": "10057:1:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage_ptr", + "typeString": "struct SmartPiggies.Piggy storage pointer" + } + }, + "id": 714, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "uintDetails", + "nodeType": "MemberAccess", + "referencedDeclaration": 343, + "src": "10057:13:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailUints_$313_storage", + "typeString": "struct SmartPiggies.DetailUints storage ref" + } + }, + "id": 715, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "expiry", + "nodeType": "MemberAccess", + "referencedDeclaration": 306, + "src": "10057:20:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 718, + "name": "block", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2810, + "src": "10092:5:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_block", + "typeString": "block" + } + }, + "id": 719, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "number", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "10092:12:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 716, + "name": "_expiry", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 553, + "src": "10080:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 717, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 224, + "src": "10080:11:4", + "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": 720, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10080:25:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "10057:48:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 722, + "nodeType": "ExpressionStatement", + "src": "10057:48:4" + }, + { + "expression": { + "argumentTypes": null, + "id": 729, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 723, + "name": "p", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 639, + "src": "10110:1:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage_ptr", + "typeString": "struct SmartPiggies.Piggy storage pointer" + } + }, + "id": 726, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "flags", + "nodeType": "MemberAccess", + "referencedDeclaration": 345, + "src": "10110:7:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BoolFlags_$322_storage", + "typeString": "struct SmartPiggies.BoolFlags storage ref" + } + }, + "id": 727, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "isEuro", + "nodeType": "MemberAccess", + "referencedDeclaration": 317, + "src": "10110:14:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 728, + "name": "_isEuro", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 555, + "src": "10127:7:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "10110:24:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 730, + "nodeType": "ExpressionStatement", + "src": "10110:24:4" + }, + { + "expression": { + "argumentTypes": null, + "id": 737, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 731, + "name": "p", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 639, + "src": "10139:1:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage_ptr", + "typeString": "struct SmartPiggies.Piggy storage pointer" + } + }, + "id": 734, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "flags", + "nodeType": "MemberAccess", + "referencedDeclaration": 345, + "src": "10139:7:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BoolFlags_$322_storage", + "typeString": "struct SmartPiggies.BoolFlags storage ref" + } + }, + "id": 735, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "isPut", + "nodeType": "MemberAccess", + "referencedDeclaration": 319, + "src": "10139:13:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 736, + "name": "_isPut", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 557, + "src": "10155:6:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "10139:22:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 738, + "nodeType": "ExpressionStatement", + "src": "10139:22:4" + }, + { + "expression": { + "argumentTypes": null, + "id": 745, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 739, + "name": "p", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 639, + "src": "10166:1:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage_ptr", + "typeString": "struct SmartPiggies.Piggy storage pointer" + } + }, + "id": 742, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "flags", + "nodeType": "MemberAccess", + "referencedDeclaration": 345, + "src": "10166:7:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BoolFlags_$322_storage", + "typeString": "struct SmartPiggies.BoolFlags storage ref" + } + }, + "id": 743, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "isRequest", + "nodeType": "MemberAccess", + "referencedDeclaration": 315, + "src": "10166:17:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 744, + "name": "_isRequest", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 559, + "src": "10186:10:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "10166:30:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 746, + "nodeType": "ExpressionStatement", + "src": "10166:30:4" + }, + { + "condition": { + "argumentTypes": null, + "id": 747, + "name": "_isRequest", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 559, + "src": "10272:10:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 774, + "nodeType": "Block", + "src": "10344:89:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 764, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 757, + "name": "p", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 639, + "src": "10351:1:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage_ptr", + "typeString": "struct SmartPiggies.Piggy storage pointer" + } + }, + "id": 760, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "addresses", + "nodeType": "MemberAccess", + "referencedDeclaration": 341, + "src": "10351:11:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAddresses_$298_storage", + "typeString": "struct SmartPiggies.DetailAddresses storage ref" + } + }, + "id": 761, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "writer", + "nodeType": "MemberAccess", + "referencedDeclaration": 287, + "src": "10351:18:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 762, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2820, + "src": "10372:3:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 763, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "10372:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "10351:31:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 765, + "nodeType": "ExpressionStatement", + "src": "10351:31:4" + }, + { + "expression": { + "argumentTypes": null, + "id": 772, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 766, + "name": "p", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 639, + "src": "10389:1:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage_ptr", + "typeString": "struct SmartPiggies.Piggy storage pointer" + } + }, + "id": 769, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "uintDetails", + "nodeType": "MemberAccess", + "referencedDeclaration": 343, + "src": "10389:13:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailUints_$313_storage", + "typeString": "struct SmartPiggies.DetailUints storage ref" + } + }, + "id": 770, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "collateral", + "nodeType": "MemberAccess", + "referencedDeclaration": 300, + "src": "10389:24:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 771, + "name": "_collateral", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 547, + "src": "10416:11:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "10389:38:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 773, + "nodeType": "ExpressionStatement", + "src": "10389:38:4" + } + ] + }, + "id": 775, + "nodeType": "IfStatement", + "src": "10268:165:4", + "trueBody": { + "id": 756, + "nodeType": "Block", + "src": "10284:54:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 754, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 748, + "name": "p", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 639, + "src": "10291:1:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage_ptr", + "typeString": "struct SmartPiggies.Piggy storage pointer" + } + }, + "id": 751, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "uintDetails", + "nodeType": "MemberAccess", + "referencedDeclaration": 343, + "src": "10291:13:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailUints_$313_storage", + "typeString": "struct SmartPiggies.DetailUints storage ref" + } + }, + "id": 752, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "reqCollateral", + "nodeType": "MemberAccess", + "referencedDeclaration": 310, + "src": "10291:27:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 753, + "name": "_collateral", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 547, + "src": "10321:11:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "10291:41:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 755, + "nodeType": "ExpressionStatement", + "src": "10291:41:4" + } + ] + } + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 777, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2820, + "src": "10461:3:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 778, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "10461:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 779, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 285, + "src": "10473:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 776, + "name": "_addTokenToOwnedPiggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2578, + "src": "10437:23:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 780, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10437:44:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 781, + "nodeType": "ExpressionStatement", + "src": "10437:44:4" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 783, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2820, + "src": "10510:3:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 784, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "10510:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 785, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 285, + "src": "10527:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 786, + "name": "_strikePrice", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 551, + "src": "10541:12:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 789, + "name": "block", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2810, + "src": "10572:5:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_block", + "typeString": "block" + } + }, + "id": 790, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "number", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "10572:12:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 787, + "name": "_expiry", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 553, + "src": "10560:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 788, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 224, + "src": "10560:11:4", + "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": 791, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10560:25:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 792, + "name": "_isRequest", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 559, + "src": "10592:10:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 782, + "name": "CreatePiggy", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 381, + "src": "10492:11:4", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_bool_$returns$__$", + "typeString": "function (address,uint256,uint256,uint256,bool)" + } + }, + "id": 793, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10492:115:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 794, + "nodeType": "EmitStatement", + "src": "10487:120:4" + }, + { + "expression": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 795, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10620:4:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 563, + "id": 796, + "nodeType": "Return", + "src": "10613:11:4" + } + ] + }, + "documentation": "@notice Create a new ERC-59 token\n@dev Throws if `_collateralERC` is not a valid Ethereum (ERC-20) address.\nThrows if `_premiumERC` is not a valid Ethereum (ERC-20) address (may be same\nas `_collateralERC`).\nThrows if `_oracle` is not a valid Ethereum address.\nThrows if `_expiry` < block.number.\nIf `_asRequest` is true, throws if `_reqCollateral` == 0.\nIf `_asRequest` is false, throws if msg.sender has not delegated at least `_collateral`\nin the ERC-20 token whose contract is `_collateralERC` to the ERC-59 contract.\nWhen a new token is created, msg.sender should be recorded as the creator and owner.\nIf `_asRequest` is true, the zero address should be recorded as the seller.\nIf `_asRequest` is false, msg.sender should be recorded as the seller.\nIf `_asRequest` is false, `_reqCollateral` will be irrelevant and should be captured as 0.\nIf `_asRequest` is false, the ERC-59 contract must take ownership of `_collateral` amount\nof ERC-20 tokens governed by the `_collateralERC` contract.\n@param _collateralERC The address of the reference ERC-20 token to be used as collateral\n@param _premiumERC The address of the reference ERC-20 token to be used to pay the premium\nparam _oracle The address of a service contract which will return the settlement price\nparam _asRequest If true, will create the token as an \"RFP\" / request for a particular option\nparam _underlyingNow An identifier for the reference underlying which the contract at `_oracle`\nis able to parse to return the current price of the underlying\nparam _underlyingExpiry An identifier for the reference underlying which the contract at\n`_oracle` is able to parse to return the price of the underlying at `_expiry`\n@param _collateral The amount of collateral for the option, denominated in units of the token\nat the `_collateralERC` address\n@param _lotSize A multiplier on the settlement price used to determine settlement claims\n@param _strikePrice The strike value of the option, in the same units as the settlement price\n@param _expiry The block height at which the option will expire\nparam _reqCollateral The amount of collateral desired in the option, if creating with\n`_asRequest` == true, denominated in units of the token at the `_collateralERC` address\n@param _isEuro If true, the option can only be settled at or after `_expiry` is reached, else\nit can be settled at any time\n@param _isPut If true, the settlement claims will be calculated for a put option; else they\nwill be calculated for a call option", + "id": 798, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "createPiggy", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 560, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 539, + "name": "_collateralERC", + "nodeType": "VariableDeclaration", + "scope": 798, + "src": "8477:22:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 538, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8477:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 541, + "name": "_premiumERC", + "nodeType": "VariableDeclaration", + "scope": 798, + "src": "8504:19:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 540, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8504:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 543, + "name": "_dataResolverNow", + "nodeType": "VariableDeclaration", + "scope": 798, + "src": "8528:24:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 542, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8528:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 545, + "name": "_dataResolverAtExpiry", + "nodeType": "VariableDeclaration", + "scope": 798, + "src": "8557:29:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 544, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8557:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 547, + "name": "_collateral", + "nodeType": "VariableDeclaration", + "scope": 798, + "src": "8591:19:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 546, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8591:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 549, + "name": "_lotSize", + "nodeType": "VariableDeclaration", + "scope": 798, + "src": "8615:16:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 548, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8615:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 551, + "name": "_strikePrice", + "nodeType": "VariableDeclaration", + "scope": 798, + "src": "8636:20:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 550, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8636:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 553, + "name": "_expiry", + "nodeType": "VariableDeclaration", + "scope": 798, + "src": "8661:15:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 552, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8661:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 555, + "name": "_isEuro", + "nodeType": "VariableDeclaration", + "scope": 798, + "src": "8681:12:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 554, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "8681:4:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 557, + "name": "_isPut", + "nodeType": "VariableDeclaration", + "scope": 798, + "src": "8698:11:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 556, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "8698:4:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 559, + "name": "_isRequest", + "nodeType": "VariableDeclaration", + "scope": 798, + "src": "8714:15:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 558, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "8714:4:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "8472:262:4" + }, + "returnParameters": { + "id": 563, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 562, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 798, + "src": "8757:4:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 561, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "8757:4:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "8756:6:4" + }, + "scope": 2805, + "src": "8452:2176:4", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 871, + "nodeType": "Block", + "src": "10777:449:4", + "statements": [ + { + "assignments": [ + 806, + 808 + ], + "declarations": [ + { + "constant": false, + "id": 806, + "name": "success", + "nodeType": "VariableDeclaration", + "scope": 871, + "src": "10782:12:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 805, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "10782:4:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 808, + "name": "_decBytes", + "nodeType": "VariableDeclaration", + "scope": 871, + "src": "10796:22:4", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 807, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "10796:5:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 820, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "646563696d616c732829", + "id": 817, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10888:12:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_313ce567add4d438edf58b94ff345d7d38c45b17dfc0f947988d7819dca364f9", + "typeString": "literal_string \"decimals()\"" + }, + "value": "decimals()" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_313ce567add4d438edf58b94ff345d7d38c45b17dfc0f947988d7819dca364f9", + "typeString": "literal_string \"decimals()\"" + } + ], + "expression": { + "argumentTypes": null, + "id": 815, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2807, + "src": "10864:3:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 816, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "encodeWithSignature", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "10864:23:4", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$", + "typeString": "function (string memory) pure returns (bytes memory)" + } + }, + "id": 818, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10864:37:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 811, + "name": "_ERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 800, + "src": "10843:6:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 810, + "name": "PaymentToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 274, + "src": "10830:12:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_PaymentToken_$274_$", + "typeString": "type(contract PaymentToken)" + } + }, + "id": 812, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10830:20:4", + "typeDescriptions": { + "typeIdentifier": "t_contract$_PaymentToken_$274", + "typeString": "contract PaymentToken" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_PaymentToken_$274", + "typeString": "contract PaymentToken" + } + ], + "id": 809, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "10822:7:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 813, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10822:29:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 814, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "call", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "10822:34:4", + "typeDescriptions": { + "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$", + "typeString": "function (bytes memory) payable returns (bool,bytes memory)" + } + }, + "id": 819, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10822:85:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$", + "typeString": "tuple(bool,bytes memory)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "10781:126:4" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 822, + "name": "success", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 806, + "src": "10920:7:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "636f6c6c61746572616c204552432d323020636f6e747261637420646f6573206e6f742070726f7065726c79207370656369667920646563696d616c73", + "id": 823, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10929:63:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_e3d386bf715f6ade1ba03d3571c7bd8099823592469a72ba820b6c3855a0c7b7", + "typeString": "literal_string \"collateral ERC-20 contract does not properly specify decimals\"" + }, + "value": "collateral ERC-20 contract does not properly specify decimals" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_e3d386bf715f6ade1ba03d3571c7bd8099823592469a72ba820b6c3855a0c7b7", + "typeString": "literal_string \"collateral ERC-20 contract does not properly specify decimals\"" + } + ], + "id": 821, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2823, + 2824 + ], + "referencedDeclaration": 2824, + "src": "10912:7:4", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 824, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10912:81:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 825, + "nodeType": "ExpressionStatement", + "src": "10912:81:4" + }, + { + "assignments": [ + 827 + ], + "declarations": [ + { + "constant": false, + "id": 827, + "name": "_ERCdecimals", + "nodeType": "VariableDeclaration", + "scope": 871, + "src": "11028:20:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 826, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "11028:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 828, + "initialValue": null, + "nodeType": "VariableDeclarationStatement", + "src": "11028:20:4" + }, + { + "body": { + "id": 865, + "nodeType": "Block", + "src": "11097:96:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 863, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 840, + "name": "_ERCdecimals", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 827, + "src": "11104:12:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 862, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 841, + "name": "_ERCdecimals", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 827, + "src": "11119:12:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 861, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 843, + "name": "_decBytes", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 808, + "src": "11140:9:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 845, + "indexExpression": { + "argumentTypes": null, + "id": 844, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 830, + "src": "11150:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "11140:12:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + } + ], + "id": 842, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "11134:5:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint8_$", + "typeString": "type(uint8)" + }, + "typeName": "uint8" + }, + "id": 846, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "11134:19:4", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 859, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "hexValue": "32", + "id": 847, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "11155:1:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + }, + "nodeType": "BinaryOperation", + "operator": "**", + "rightExpression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 857, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "hexValue": "38", + "id": 848, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "11159:1:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_8_by_1", + "typeString": "int_const 8" + }, + "value": "8" + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 855, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 849, + "name": "_decBytes", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 808, + "src": "11162:9:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 850, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "11162:16:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 853, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 851, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 830, + "src": "11180:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "argumentTypes": null, + "hexValue": "31", + "id": 852, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "11182:1:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "11180:3:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 854, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "11179:5:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "11162:22:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 856, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "11161:24:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "11159:26:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 858, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "11158:28:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "11155:31:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 860, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "11154:33:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "11134:53:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "11119:68:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "11104:83:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 864, + "nodeType": "ExpressionStatement", + "src": "11104:83:4" + } + ] + }, + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 836, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 833, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 830, + "src": "11070:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 834, + "name": "_decBytes", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 808, + "src": "11074:9:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 835, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "11074:16:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "11070:20:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 866, + "initializationExpression": { + "assignments": [ + 830 + ], + "declarations": [ + { + "constant": false, + "id": 830, + "name": "i", + "nodeType": "VariableDeclaration", + "scope": 866, + "src": "11057:9:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 829, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "11057:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 832, + "initialValue": { + "argumentTypes": null, + "hexValue": "30", + "id": 831, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "11067:1:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "11057:11:4" + }, + "loopExpression": { + "expression": { + "argumentTypes": null, + "id": 838, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "11092:3:4", + "subExpression": { + "argumentTypes": null, + "id": 837, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 830, + "src": "11092:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 839, + "nodeType": "ExpressionStatement", + "src": "11092:3:4" + }, + "nodeType": "ForStatement", + "src": "11053:140:4" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 868, + "name": "_ERCdecimals", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 827, + "src": "11210:12:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 867, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "11204:5:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint8_$", + "typeString": "type(uint8)" + }, + "typeName": "uint8" + }, + "id": 869, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "11204:19:4", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "functionReturnParameters": 804, + "id": 870, + "nodeType": "Return", + "src": "11197:26:4" + } + ] + }, + "documentation": null, + "id": 872, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_getERC20Decimals", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 801, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 800, + "name": "_ERC20", + "nodeType": "VariableDeclaration", + "scope": 872, + "src": "10732:14:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 799, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "10732:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "10731:16:4" + }, + "returnParameters": { + "id": 804, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 803, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 872, + "src": "10770:5:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 802, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "10770:5:4", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "10769:7:4" + }, + "scope": 2805, + "src": "10705:521:4", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 883, + "nodeType": "Block", + "src": "11396:35:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 879, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "11409:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 881, + "indexExpression": { + "argumentTypes": null, + "id": 880, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 874, + "src": "11417:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "11409:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "functionReturnParameters": 878, + "id": 882, + "nodeType": "Return", + "src": "11402:24:4" + } + ] + }, + "documentation": null, + "id": 884, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getDetails", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 875, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 874, + "name": "_tokenId", + "nodeType": "VariableDeclaration", + "scope": 884, + "src": "11329:16:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 873, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "11329:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "11328:18:4" + }, + "returnParameters": { + "id": 878, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 877, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 884, + "src": "11380:12:4", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_memory_ptr", + "typeString": "struct SmartPiggies.Piggy" + }, + "typeName": { + "contractScope": null, + "id": 876, + "name": "Piggy", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 346, + "src": "11380:5:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage_ptr", + "typeString": "struct SmartPiggies.Piggy" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "11379:14:4" + }, + "scope": 2805, + "src": "11309:122:4", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 895, + "nodeType": "Block", + "src": "11601:36:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 891, + "name": "auctions", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 369, + "src": "11614:8:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_DetailAuction_$339_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.DetailAuction storage ref)" + } + }, + "id": 893, + "indexExpression": { + "argumentTypes": null, + "id": 892, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 886, + "src": "11623:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "11614:18:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAuction_$339_storage", + "typeString": "struct SmartPiggies.DetailAuction storage ref" + } + }, + "functionReturnParameters": 890, + "id": 894, + "nodeType": "Return", + "src": "11607:25:4" + } + ] + }, + "documentation": null, + "id": 896, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getAuctionDetails", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 887, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 886, + "name": "_tokenId", + "nodeType": "VariableDeclaration", + "scope": 896, + "src": "11526:16:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 885, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "11526:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "11525:18:4" + }, + "returnParameters": { + "id": 890, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 889, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 896, + "src": "11577:20:4", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAuction_$339_memory_ptr", + "typeString": "struct SmartPiggies.DetailAuction" + }, + "typeName": { + "contractScope": null, + "id": 888, + "name": "DetailAuction", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 339, + "src": "11577:13:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAuction_$339_storage_ptr", + "typeString": "struct SmartPiggies.DetailAuction" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "11576:22:4" + }, + "scope": 2805, + "src": "11499:138:4", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 917, + "nodeType": "Block", + "src": "12119:99:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 909, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 905, + "name": "_owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 898, + "src": "12133:6:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 907, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "12151: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": 906, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "12143:7:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 908, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "12143:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "12133:20:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "616464726573732063616e6e6f74206265207a65726f", + "id": 910, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "12155:24:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_a9941ee6da268eebad354f3ad5eda2e3e27f59ae11bbb28a54fc77e5ab33eca9", + "typeString": "literal_string \"address cannot be zero\"" + }, + "value": "address cannot be zero" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_a9941ee6da268eebad354f3ad5eda2e3e27f59ae11bbb28a54fc77e5ab33eca9", + "typeString": "literal_string \"address cannot be zero\"" + } + ], + "id": 904, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2823, + 2824 + ], + "referencedDeclaration": 2824, + "src": "12125:7:4", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 911, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "12125:55:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 912, + "nodeType": "ExpressionStatement", + "src": "12125:55:4" + }, + { + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 913, + "name": "ownedPiggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 357, + "src": "12193:12:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_uint256_$dyn_storage_$", + "typeString": "mapping(address => uint256[] storage ref)" + } + }, + "id": 915, + "indexExpression": { + "argumentTypes": null, + "id": 914, + "name": "_owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 898, + "src": "12206:6:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "12193:20:4", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage", + "typeString": "uint256[] storage ref" + } + }, + "functionReturnParameters": 903, + "id": 916, + "nodeType": "Return", + "src": "12186:27:4" + } + ] + }, + "documentation": "@notice Count the number of ERC-59 tokens owned by a particular address\n@dev ERC-59 tokens assigned to the zero address are considered invalid, and this\nfunction throws for queries about the zero address.\n@param _owner An address for which to query the balance of ERC-59 tokens\n@return The number of ERC-59 tokens owned by `_owner`, possibly zero", + "id": 918, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getOwnedPiggies", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 899, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 898, + "name": "_owner", + "nodeType": "VariableDeclaration", + "scope": 918, + "src": "12050:14:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 897, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "12050:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "12049:16:4" + }, + "returnParameters": { + "id": 903, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 902, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 918, + "src": "12099:16:4", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 900, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "12099:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 901, + "length": null, + "nodeType": "ArrayTypeName", + "src": "12099:9:4", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "12098:18:4" + }, + "scope": 2805, + "src": "12025:193:4", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 942, + "nodeType": "Block", + "src": "12323:108:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 932, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 928, + "name": "_owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 920, + "src": "12337:6:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 930, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "12355: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": 929, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "12347:7:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 931, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "12347:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "12337:20:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "616464726573732063616e6e6f74206265207a65726f", + "id": 933, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "12359:24:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_a9941ee6da268eebad354f3ad5eda2e3e27f59ae11bbb28a54fc77e5ab33eca9", + "typeString": "literal_string \"address cannot be zero\"" + }, + "value": "address cannot be zero" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_a9941ee6da268eebad354f3ad5eda2e3e27f59ae11bbb28a54fc77e5ab33eca9", + "typeString": "literal_string \"address cannot be zero\"" + } + ], + "id": 927, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2823, + 2824 + ], + "referencedDeclaration": 2824, + "src": "12329:7:4", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 934, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "12329:55:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 935, + "nodeType": "ExpressionStatement", + "src": "12329:55:4" + }, + { + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 936, + "name": "ERC20balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 352, + "src": "12397:13:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + } + }, + "id": 938, + "indexExpression": { + "argumentTypes": null, + "id": 937, + "name": "_owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 920, + "src": "12411:6:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "12397:21:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 940, + "indexExpression": { + "argumentTypes": null, + "id": 939, + "name": "_erc20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 922, + "src": "12419:6:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "12397:29:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 926, + "id": 941, + "nodeType": "Return", + "src": "12390:36:4" + } + ] + }, + "documentation": null, + "id": 943, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getERC20balance", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 923, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 920, + "name": "_owner", + "nodeType": "VariableDeclaration", + "scope": 943, + "src": "12247:14:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 919, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "12247:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 922, + "name": "_erc20", + "nodeType": "VariableDeclaration", + "scope": 943, + "src": "12263:14:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 921, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "12263:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "12246:32:4" + }, + "returnParameters": { + "id": 926, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 925, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 943, + "src": "12312:7:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 924, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "12312:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "12311:9:4" + }, + "scope": 2805, + "src": "12222:209:4", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 970, + "nodeType": "Block", + "src": "12516:170:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 960, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 953, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2820, + "src": "12530:3:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 954, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "12530:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 955, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "12544:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 957, + "indexExpression": { + "argumentTypes": null, + "id": 956, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 949, + "src": "12552:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "12544:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 958, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "addresses", + "nodeType": "MemberAccess", + "referencedDeclaration": 341, + "src": "12544:27:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAddresses_$298_storage", + "typeString": "struct SmartPiggies.DetailAddresses storage ref" + } + }, + "id": 959, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "holder", + "nodeType": "MemberAccess", + "referencedDeclaration": 289, + "src": "12544:34:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "12530:48:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "6d73672e73656e646572206973206e6f7420746865206f776e6572", + "id": 961, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "12580:29:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_fe1f2fd5008784e7e36b999381f1742f307634673a00747c7e17263f99f9413f", + "typeString": "literal_string \"msg.sender is not the owner\"" + }, + "value": "msg.sender is not the owner" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_fe1f2fd5008784e7e36b999381f1742f307634673a00747c7e17263f99f9413f", + "typeString": "literal_string \"msg.sender is not the owner\"" + } + ], + "id": 952, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2823, + 2824 + ], + "referencedDeclaration": 2824, + "src": "12522:7:4", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 962, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "12522:88:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 963, + "nodeType": "ExpressionStatement", + "src": "12522:88:4" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 965, + "name": "_from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 945, + "src": "12660:5:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 966, + "name": "_to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 947, + "src": "12667:3:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 967, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 949, + "src": "12672:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 964, + "name": "_internalTransfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1025, + "src": "12642:17:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 968, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "12642:39:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 969, + "nodeType": "ExpressionStatement", + "src": "12642:39:4" + } + ] + }, + "documentation": null, + "id": 971, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "transferFrom", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 950, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 945, + "name": "_from", + "nodeType": "VariableDeclaration", + "scope": 971, + "src": "12457:13:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 944, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "12457:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 947, + "name": "_to", + "nodeType": "VariableDeclaration", + "scope": 971, + "src": "12472:11:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 946, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "12472:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 949, + "name": "_tokenId", + "nodeType": "VariableDeclaration", + "scope": 971, + "src": "12485:16:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 948, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "12485:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "12456:46:4" + }, + "returnParameters": { + "id": 951, + "nodeType": "ParameterList", + "parameters": [], + "src": "12516:0:4" + }, + "scope": 2805, + "src": "12435:251:4", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 1024, + "nodeType": "Block", + "src": "12846:337:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 987, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 981, + "name": "_from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 973, + "src": "12860:5:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 982, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "12869:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 984, + "indexExpression": { + "argumentTypes": null, + "id": 983, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 977, + "src": "12877:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "12869:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 985, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "addresses", + "nodeType": "MemberAccess", + "referencedDeclaration": 341, + "src": "12869:27:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAddresses_$298_storage", + "typeString": "struct SmartPiggies.DetailAddresses storage ref" + } + }, + "id": 986, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "holder", + "nodeType": "MemberAccess", + "referencedDeclaration": 289, + "src": "12869:34:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "12860:43:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "66726f6d2061646472657373206973206e6f7420746865206f776e6572", + "id": 988, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "12905:31:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_99843832e911c3c269d6e837b97801c2d642529f985a3b8389d66cfd6f915338", + "typeString": "literal_string \"from address is not the owner\"" + }, + "value": "from address is not the owner" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_99843832e911c3c269d6e837b97801c2d642529f985a3b8389d66cfd6f915338", + "typeString": "literal_string \"from address is not the owner\"" + } + ], + "id": 980, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2823, + 2824 + ], + "referencedDeclaration": 2824, + "src": "12852:7:4", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 989, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "12852:85:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 990, + "nodeType": "ExpressionStatement", + "src": "12852:85:4" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 996, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 992, + "name": "_to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 975, + "src": "12951:3:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 994, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "12966: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": 993, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "12958:7:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 995, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "12958:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "12951:17:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "746f2061646472657373206973207a65726f", + "id": 997, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "12970:20:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_ba95b908b4488c4477717d86e0713cc9cd35576f43001de482194a4df6630027", + "typeString": "literal_string \"to address is zero\"" + }, + "value": "to address is zero" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_ba95b908b4488c4477717d86e0713cc9cd35576f43001de482194a4df6630027", + "typeString": "literal_string \"to address is zero\"" + } + ], + "id": 991, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2823, + 2824 + ], + "referencedDeclaration": 2824, + "src": "12943:7:4", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 998, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "12943:48:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 999, + "nodeType": "ExpressionStatement", + "src": "12943:48:4" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1001, + "name": "_from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 973, + "src": "13026:5:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1002, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 977, + "src": "13033:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1000, + "name": "_removeTokenFromOwnedPiggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2635, + "src": "12997:28:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 1003, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "12997:45:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1004, + "nodeType": "ExpressionStatement", + "src": "12997:45:4" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1006, + "name": "_to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 975, + "src": "13072:3:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1007, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 977, + "src": "13077:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1005, + "name": "_addTokenToOwnedPiggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2578, + "src": "13048:23:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 1008, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "13048:38:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1009, + "nodeType": "ExpressionStatement", + "src": "13048:38:4" + }, + { + "expression": { + "argumentTypes": null, + "id": 1016, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1010, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "13092:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 1012, + "indexExpression": { + "argumentTypes": null, + "id": 1011, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 977, + "src": "13100:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "13092:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 1013, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "addresses", + "nodeType": "MemberAccess", + "referencedDeclaration": 341, + "src": "13092:27:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAddresses_$298_storage", + "typeString": "struct SmartPiggies.DetailAddresses storage ref" + } + }, + "id": 1014, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "holder", + "nodeType": "MemberAccess", + "referencedDeclaration": 289, + "src": "13092:34:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 1015, + "name": "_to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 975, + "src": "13129:3:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "13092:40:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 1017, + "nodeType": "ExpressionStatement", + "src": "13092:40:4" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1019, + "name": "_from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 973, + "src": "13157:5:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1020, + "name": "_to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 975, + "src": "13164:3:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1021, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 977, + "src": "13169:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1018, + "name": "TransferPiggy", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 389, + "src": "13143:13:4", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 1022, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "13143:35:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1023, + "nodeType": "EmitStatement", + "src": "13138:40:4" + } + ] + }, + "documentation": null, + "id": 1025, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_internalTransfer", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 978, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 973, + "name": "_from", + "nodeType": "VariableDeclaration", + "scope": 1025, + "src": "12785:13:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 972, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "12785:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 975, + "name": "_to", + "nodeType": "VariableDeclaration", + "scope": 1025, + "src": "12800:11:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 974, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "12800:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 977, + "name": "_tokenId", + "nodeType": "VariableDeclaration", + "scope": 1025, + "src": "12813:16:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 976, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "12813:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "12784:46:4" + }, + "returnParameters": { + "id": 979, + "nodeType": "ParameterList", + "parameters": [], + "src": "12846:0:4" + }, + "scope": 2805, + "src": "12758:425:4", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 1230, + "nodeType": "Block", + "src": "13902:1574:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 1060, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1053, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "13916:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 1055, + "indexExpression": { + "argumentTypes": null, + "id": 1054, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1027, + "src": "13924:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "13916:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 1056, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "addresses", + "nodeType": "MemberAccess", + "referencedDeclaration": 341, + "src": "13916:27:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAddresses_$298_storage", + "typeString": "struct SmartPiggies.DetailAddresses storage ref" + } + }, + "id": 1057, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "holder", + "nodeType": "MemberAccess", + "referencedDeclaration": 289, + "src": "13916:34:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1058, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2820, + "src": "13954:3:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1059, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "13954:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "13916:48:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "796f75206d757374206f776e207468652052465020746f20757064617465206974", + "id": 1061, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "13966:35:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_1e7bdd33272a5c5d01810a40a6212bfe78a37d0eecf21f79c5c83d78fb8884a2", + "typeString": "literal_string \"you must own the RFP to update it\"" + }, + "value": "you must own the RFP to update it" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_1e7bdd33272a5c5d01810a40a6212bfe78a37d0eecf21f79c5c83d78fb8884a2", + "typeString": "literal_string \"you must own the RFP to update it\"" + } + ], + "id": 1052, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2823, + 2824 + ], + "referencedDeclaration": 2824, + "src": "13908:7:4", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 1062, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "13908:94:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1063, + "nodeType": "ExpressionStatement", + "src": "13908:94:4" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1065, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "14016:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 1067, + "indexExpression": { + "argumentTypes": null, + "id": 1066, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1027, + "src": "14024:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "14016:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 1068, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "flags", + "nodeType": "MemberAccess", + "referencedDeclaration": 345, + "src": "14016:23:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BoolFlags_$322_storage", + "typeString": "struct SmartPiggies.BoolFlags storage ref" + } + }, + "id": 1069, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "isRequest", + "nodeType": "MemberAccess", + "referencedDeclaration": 315, + "src": "14016:33:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "796f752063616e206f6e6c792075706461746520616e20524650", + "id": 1070, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "14051:28:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_f6a873ed8c71059d518992e0b4cceea2bcfd7fa380403e709a78f342fbbb8a76", + "typeString": "literal_string \"you can only update an RFP\"" + }, + "value": "you can only update an RFP" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_f6a873ed8c71059d518992e0b4cceea2bcfd7fa380403e709a78f342fbbb8a76", + "typeString": "literal_string \"you can only update an RFP\"" + } + ], + "id": 1064, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2823, + 2824 + ], + "referencedDeclaration": 2824, + "src": "14008:7:4", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 1071, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "14008:72:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1072, + "nodeType": "ExpressionStatement", + "src": "14008:72:4" + }, + { + "assignments": [ + 1074 + ], + "declarations": [ + { + "constant": false, + "id": 1074, + "name": "expiryBlock", + "nodeType": "VariableDeclaration", + "scope": 1230, + "src": "14086:19:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1073, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "14086:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1075, + "initialValue": null, + "nodeType": "VariableDeclarationStatement", + "src": "14086:19:4" + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 1080, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1076, + "name": "_collateralERC", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1029, + "src": "14115:14:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 1078, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "14141: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": 1077, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "14133:7:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 1079, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "14133:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "14115:28:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 1090, + "nodeType": "IfStatement", + "src": "14111:107:4", + "trueBody": { + "id": 1089, + "nodeType": "Block", + "src": "14145:73:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 1087, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1081, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "14153:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 1083, + "indexExpression": { + "argumentTypes": null, + "id": 1082, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1027, + "src": "14161:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "14153:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 1084, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "addresses", + "nodeType": "MemberAccess", + "referencedDeclaration": 341, + "src": "14153:27:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAddresses_$298_storage", + "typeString": "struct SmartPiggies.DetailAddresses storage ref" + } + }, + "id": 1085, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "collateralERC", + "nodeType": "MemberAccess", + "referencedDeclaration": 291, + "src": "14153:41:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 1086, + "name": "_collateralERC", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1029, + "src": "14197:14:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "14153:58:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 1088, + "nodeType": "ExpressionStatement", + "src": "14153:58:4" + } + ] + } + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 1095, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1091, + "name": "_premiumERC", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1031, + "src": "14227:11:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 1093, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "14250: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": 1092, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "14242:7:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 1094, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "14242:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "14227:25:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 1105, + "nodeType": "IfStatement", + "src": "14223:98:4", + "trueBody": { + "id": 1104, + "nodeType": "Block", + "src": "14254:67:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 1102, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1096, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "14262:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 1098, + "indexExpression": { + "argumentTypes": null, + "id": 1097, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1027, + "src": "14270:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "14262:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 1099, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "addresses", + "nodeType": "MemberAccess", + "referencedDeclaration": 341, + "src": "14262:27:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAddresses_$298_storage", + "typeString": "struct SmartPiggies.DetailAddresses storage ref" + } + }, + "id": 1100, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "premiumERC", + "nodeType": "MemberAccess", + "referencedDeclaration": 293, + "src": "14262:38:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 1101, + "name": "_premiumERC", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1031, + "src": "14303:11:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "14262:52:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 1103, + "nodeType": "ExpressionStatement", + "src": "14262:52:4" + } + ] + } + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 1110, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1106, + "name": "_dataResolverNow", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1033, + "src": "14330:16:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 1108, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "14358: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": 1107, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "14350:7:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 1109, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "14350:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "14330:30:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 1120, + "nodeType": "IfStatement", + "src": "14326:113:4", + "trueBody": { + "id": 1119, + "nodeType": "Block", + "src": "14362:77:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 1117, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1111, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "14370:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 1113, + "indexExpression": { + "argumentTypes": null, + "id": 1112, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1027, + "src": "14378:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "14370:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 1114, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "addresses", + "nodeType": "MemberAccess", + "referencedDeclaration": 341, + "src": "14370:27:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAddresses_$298_storage", + "typeString": "struct SmartPiggies.DetailAddresses storage ref" + } + }, + "id": 1115, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "dataResolverNow", + "nodeType": "MemberAccess", + "referencedDeclaration": 295, + "src": "14370:43:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 1116, + "name": "_dataResolverNow", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1033, + "src": "14416:16:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "14370:62:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 1118, + "nodeType": "ExpressionStatement", + "src": "14370:62:4" + } + ] + } + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 1125, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1121, + "name": "_dataResolverAtExpiry", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1035, + "src": "14448:21:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 1123, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "14481: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": 1122, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "14473:7:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 1124, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "14473:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "14448:35:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 1135, + "nodeType": "IfStatement", + "src": "14444:128:4", + "trueBody": { + "id": 1134, + "nodeType": "Block", + "src": "14485:87:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 1132, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1126, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "14493:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 1128, + "indexExpression": { + "argumentTypes": null, + "id": 1127, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1027, + "src": "14501:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "14493:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 1129, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "addresses", + "nodeType": "MemberAccess", + "referencedDeclaration": 341, + "src": "14493:27:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAddresses_$298_storage", + "typeString": "struct SmartPiggies.DetailAddresses storage ref" + } + }, + "id": 1130, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "dataResolverAtExpiry", + "nodeType": "MemberAccess", + "referencedDeclaration": 297, + "src": "14493:48:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 1131, + "name": "_dataResolverAtExpiry", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1035, + "src": "14544:21:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "14493:72:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 1133, + "nodeType": "ExpressionStatement", + "src": "14493:72:4" + } + ] + } + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1138, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1136, + "name": "_reqCollateral", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1037, + "src": "14581:14:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 1137, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "14599:1:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "14581:19:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 1148, + "nodeType": "IfStatement", + "src": "14577:100:4", + "trueBody": { + "id": 1147, + "nodeType": "Block", + "src": "14602:75:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 1145, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1139, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "14610:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 1141, + "indexExpression": { + "argumentTypes": null, + "id": 1140, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1027, + "src": "14618:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "14610:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 1142, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "uintDetails", + "nodeType": "MemberAccess", + "referencedDeclaration": 343, + "src": "14610:29:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailUints_$313_storage", + "typeString": "struct SmartPiggies.DetailUints storage ref" + } + }, + "id": 1143, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "reqCollateral", + "nodeType": "MemberAccess", + "referencedDeclaration": 310, + "src": "14610:43:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 1144, + "name": "_reqCollateral", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1037, + "src": "14656:14:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "14610:60:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1146, + "nodeType": "ExpressionStatement", + "src": "14610:60:4" + } + ] + } + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1151, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1149, + "name": "_lotSize", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1039, + "src": "14686:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 1150, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "14698:1:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "14686:13:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 1161, + "nodeType": "IfStatement", + "src": "14682:82:4", + "trueBody": { + "id": 1160, + "nodeType": "Block", + "src": "14701:63:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 1158, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1152, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "14709:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 1154, + "indexExpression": { + "argumentTypes": null, + "id": 1153, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1027, + "src": "14717:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "14709:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 1155, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "uintDetails", + "nodeType": "MemberAccess", + "referencedDeclaration": 343, + "src": "14709:29:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailUints_$313_storage", + "typeString": "struct SmartPiggies.DetailUints storage ref" + } + }, + "id": 1156, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "lotSize", + "nodeType": "MemberAccess", + "referencedDeclaration": 302, + "src": "14709:37:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 1157, + "name": "_lotSize", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1039, + "src": "14749:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "14709:48:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1159, + "nodeType": "ExpressionStatement", + "src": "14709:48:4" + } + ] + } + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1164, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1162, + "name": "_strikePrice", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1041, + "src": "14773:12:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 1163, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "14789:1:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "14773:17:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 1174, + "nodeType": "IfStatement", + "src": "14769:95:4", + "trueBody": { + "id": 1173, + "nodeType": "Block", + "src": "14793:71:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 1171, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1165, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "14801:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 1167, + "indexExpression": { + "argumentTypes": null, + "id": 1166, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1027, + "src": "14809:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "14801:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 1168, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "uintDetails", + "nodeType": "MemberAccess", + "referencedDeclaration": 343, + "src": "14801:29:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailUints_$313_storage", + "typeString": "struct SmartPiggies.DetailUints storage ref" + } + }, + "id": 1169, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "strikePrice", + "nodeType": "MemberAccess", + "referencedDeclaration": 304, + "src": "14801:41:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 1170, + "name": "_strikePrice", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1041, + "src": "14845:12:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "14801:56:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1172, + "nodeType": "ExpressionStatement", + "src": "14801:56:4" + } + ] + } + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1177, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1175, + "name": "_expiry", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1043, + "src": "14873:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 1176, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "14884:1:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "14873:12:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 1195, + "nodeType": "IfStatement", + "src": "14869:234:4", + "trueBody": { + "id": 1194, + "nodeType": "Block", + "src": "14887:216:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 1184, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 1178, + "name": "expiryBlock", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1074, + "src": "14999:11:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1181, + "name": "block", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2810, + "src": "15025:5:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_block", + "typeString": "block" + } + }, + "id": 1182, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "number", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "15025:12:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 1179, + "name": "_expiry", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1043, + "src": "15013:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1180, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 224, + "src": "15013:11:4", + "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": 1183, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "15013:25:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "14999:39:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1185, + "nodeType": "ExpressionStatement", + "src": "14999:39:4" + }, + { + "expression": { + "argumentTypes": null, + "id": 1192, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1186, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "15046:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 1188, + "indexExpression": { + "argumentTypes": null, + "id": 1187, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1027, + "src": "15054:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "15046:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 1189, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "uintDetails", + "nodeType": "MemberAccess", + "referencedDeclaration": 343, + "src": "15046:29:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailUints_$313_storage", + "typeString": "struct SmartPiggies.DetailUints storage ref" + } + }, + "id": 1190, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "expiry", + "nodeType": "MemberAccess", + "referencedDeclaration": 306, + "src": "15046:36:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 1191, + "name": "expiryBlock", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1074, + "src": "15085:11:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "15046:50:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1193, + "nodeType": "ExpressionStatement", + "src": "15046:50:4" + } + ] + } + }, + { + "expression": { + "argumentTypes": null, + "id": 1202, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1196, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "15108:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 1198, + "indexExpression": { + "argumentTypes": null, + "id": 1197, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1027, + "src": "15116:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "15108:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 1199, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "flags", + "nodeType": "MemberAccess", + "referencedDeclaration": 345, + "src": "15108:23:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BoolFlags_$322_storage", + "typeString": "struct SmartPiggies.BoolFlags storage ref" + } + }, + "id": 1200, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "isEuro", + "nodeType": "MemberAccess", + "referencedDeclaration": 317, + "src": "15108:30:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 1201, + "name": "_isEuro", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1045, + "src": "15141:7:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "15108:40:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1203, + "nodeType": "ExpressionStatement", + "src": "15108:40:4" + }, + { + "expression": { + "argumentTypes": null, + "id": 1210, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1204, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "15154:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 1206, + "indexExpression": { + "argumentTypes": null, + "id": 1205, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1027, + "src": "15162:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "15154:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 1207, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "flags", + "nodeType": "MemberAccess", + "referencedDeclaration": 345, + "src": "15154:23:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BoolFlags_$322_storage", + "typeString": "struct SmartPiggies.BoolFlags storage ref" + } + }, + "id": 1208, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "isPut", + "nodeType": "MemberAccess", + "referencedDeclaration": 319, + "src": "15154:29:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 1209, + "name": "_isPut", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1047, + "src": "15186:6:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "15154:38:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1211, + "nodeType": "ExpressionStatement", + "src": "15154:38:4" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1213, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2820, + "src": "15221:3:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1214, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "15221:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 1215, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1027, + "src": "15239:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 1216, + "name": "_collateralERC", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1029, + "src": "15255:14:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1217, + "name": "_premiumERC", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1031, + "src": "15277:11:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1218, + "name": "_dataResolverNow", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1033, + "src": "15296:16:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1219, + "name": "_dataResolverAtExpiry", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1035, + "src": "15320:21:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1220, + "name": "_reqCollateral", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1037, + "src": "15349:14:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 1221, + "name": "_lotSize", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1039, + "src": "15371:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 1222, + "name": "_strikePrice", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1041, + "src": "15387:12:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 1223, + "name": "expiryBlock", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1074, + "src": "15407:11:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 1224, + "name": "_isEuro", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1045, + "src": "15426:7:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "id": 1225, + "name": "_isPut", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1047, + "src": "15441:6:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 1212, + "name": "UpdateRFP", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 415, + "src": "15204:9:4", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_address_$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_bool_$_t_bool_$returns$__$", + "typeString": "function (address,uint256,address,address,address,address,uint256,uint256,uint256,uint256,bool,bool)" + } + }, + "id": 1226, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "15204:249:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1227, + "nodeType": "EmitStatement", + "src": "15199:254:4" + }, + { + "expression": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 1228, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "15467:4:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 1051, + "id": 1229, + "nodeType": "Return", + "src": "15460:11:4" + } + ] + }, + "documentation": null, + "id": 1231, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "updateRFP", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1048, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1027, + "name": "_tokenId", + "nodeType": "VariableDeclaration", + "scope": 1231, + "src": "13553:16:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1026, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "13553:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1029, + "name": "_collateralERC", + "nodeType": "VariableDeclaration", + "scope": 1231, + "src": "13575:22:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1028, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "13575:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1031, + "name": "_premiumERC", + "nodeType": "VariableDeclaration", + "scope": 1231, + "src": "13603:19:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1030, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "13603:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1033, + "name": "_dataResolverNow", + "nodeType": "VariableDeclaration", + "scope": 1231, + "src": "13628:24:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1032, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "13628:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1035, + "name": "_dataResolverAtExpiry", + "nodeType": "VariableDeclaration", + "scope": 1231, + "src": "13658:29:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1034, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "13658:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1037, + "name": "_reqCollateral", + "nodeType": "VariableDeclaration", + "scope": 1231, + "src": "13693:22:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1036, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "13693:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1039, + "name": "_lotSize", + "nodeType": "VariableDeclaration", + "scope": 1231, + "src": "13721:16:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1038, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "13721:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1041, + "name": "_strikePrice", + "nodeType": "VariableDeclaration", + "scope": 1231, + "src": "13743:20:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1040, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "13743:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1043, + "name": "_expiry", + "nodeType": "VariableDeclaration", + "scope": 1231, + "src": "13769:15:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1042, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "13769:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1045, + "name": "_isEuro", + "nodeType": "VariableDeclaration", + "scope": 1231, + "src": "13790:12:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 1044, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "13790:4:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1047, + "name": "_isPut", + "nodeType": "VariableDeclaration", + "scope": 1231, + "src": "13830:11:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 1046, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "13830:4:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "13547:322:4" + }, + "returnParameters": { + "id": 1051, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1050, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 1231, + "src": "13894:4:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 1049, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "13894:4:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "13893:6:4" + }, + "scope": 2805, + "src": "13529:1947:4", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 1322, + "nodeType": "Block", + "src": "15662:818:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 1246, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1239, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2820, + "src": "15676:3:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1240, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "15676:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1241, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "15690:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 1243, + "indexExpression": { + "argumentTypes": null, + "id": 1242, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1233, + "src": "15698:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "15690:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 1244, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "addresses", + "nodeType": "MemberAccess", + "referencedDeclaration": 341, + "src": "15690:27:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAddresses_$298_storage", + "typeString": "struct SmartPiggies.DetailAddresses storage ref" + } + }, + "id": 1245, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "holder", + "nodeType": "MemberAccess", + "referencedDeclaration": 289, + "src": "15690:34:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "15676:48:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "796f75206d757374206f776e2074686520746f6b656e20746f206275726e206974", + "id": 1247, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "15726:35:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_ae5efd2f25cc052b288460f4af4064285c949a9fe14d0e09925196031bf6eb1c", + "typeString": "literal_string \"you must own the token to burn it\"" + }, + "value": "you must own the token to burn it" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_ae5efd2f25cc052b288460f4af4064285c949a9fe14d0e09925196031bf6eb1c", + "typeString": "literal_string \"you must own the token to burn it\"" + } + ], + "id": 1238, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2823, + 2824 + ], + "referencedDeclaration": 2824, + "src": "15668:7:4", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 1248, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "15668:94:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1249, + "nodeType": "ExpressionStatement", + "src": "15668:94:4" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1255, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "15776:33:4", + "subExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1251, + "name": "auctions", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 369, + "src": "15777:8:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_DetailAuction_$339_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.DetailAuction storage ref)" + } + }, + "id": 1253, + "indexExpression": { + "argumentTypes": null, + "id": 1252, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1233, + "src": "15786:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "15777:18:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAuction_$339_storage", + "typeString": "struct SmartPiggies.DetailAuction storage ref" + } + }, + "id": 1254, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "auctionActive", + "nodeType": "MemberAccess", + "referencedDeclaration": 336, + "src": "15777:32:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "796f752063616e6e6f74206275726e206120746f6b656e207768696368206973206f6e2061756374696f6e", + "id": 1256, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "15811:45:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_94906766d6c5f71acdbc2faad8a02da0c8731bc18b156d0371c37f687d0f8207", + "typeString": "literal_string \"you cannot burn a token which is on auction\"" + }, + "value": "you cannot burn a token which is on auction" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_94906766d6c5f71acdbc2faad8a02da0c8731bc18b156d0371c37f687d0f8207", + "typeString": "literal_string \"you cannot burn a token which is on auction\"" + } + ], + "id": 1250, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2823, + 2824 + ], + "referencedDeclaration": 2824, + "src": "15768:7:4", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 1257, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "15768:89:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1258, + "nodeType": "ExpressionStatement", + "src": "15768:89:4" + }, + { + "condition": { + "argumentTypes": null, + "id": 1264, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "15867:34:4", + "subExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1259, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "15868:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 1261, + "indexExpression": { + "argumentTypes": null, + "id": 1260, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1233, + "src": "15876:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "15868:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 1262, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "flags", + "nodeType": "MemberAccess", + "referencedDeclaration": 345, + "src": "15868:23:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BoolFlags_$322_storage", + "typeString": "struct SmartPiggies.BoolFlags storage ref" + } + }, + "id": 1263, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "isRequest", + "nodeType": "MemberAccess", + "referencedDeclaration": 315, + "src": "15868:33:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 1295, + "nodeType": "IfStatement", + "src": "15863:324:4", + "trueBody": { + "id": 1294, + "nodeType": "Block", + "src": "15903:284:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 1273, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1266, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2820, + "src": "15919:3:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1267, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "15919:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1268, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "15933:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 1270, + "indexExpression": { + "argumentTypes": null, + "id": 1269, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1233, + "src": "15941:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "15933:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 1271, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "addresses", + "nodeType": "MemberAccess", + "referencedDeclaration": 341, + "src": "15933:27:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAddresses_$298_storage", + "typeString": "struct SmartPiggies.DetailAddresses storage ref" + } + }, + "id": 1272, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "writer", + "nodeType": "MemberAccess", + "referencedDeclaration": 287, + "src": "15933:34:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "15919:48:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "796f75206d757374206f776e2074686520636f6c6c61746572616c20746f207265636c61696d206974", + "id": 1274, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "15969:43:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_e1a37be9c1372dff3a2267a67b092292ca46345df721c9020edbf06b5199d701", + "typeString": "literal_string \"you must own the collateral to reclaim it\"" + }, + "value": "you must own the collateral to reclaim it" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_e1a37be9c1372dff3a2267a67b092292ca46345df721c9020edbf06b5199d701", + "typeString": "literal_string \"you must own the collateral to reclaim it\"" + } + ], + "id": 1265, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2823, + 2824 + ], + "referencedDeclaration": 2824, + "src": "15911:7:4", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 1275, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "15911:102:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1276, + "nodeType": "ExpressionStatement", + "src": "15911:102:4" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1285, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2820, + "src": "16127:3:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1286, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "16127:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1287, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "16139:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 1289, + "indexExpression": { + "argumentTypes": null, + "id": 1288, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1233, + "src": "16147:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "16139:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 1290, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "uintDetails", + "nodeType": "MemberAccess", + "referencedDeclaration": 343, + "src": "16139:29:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailUints_$313_storage", + "typeString": "struct SmartPiggies.DetailUints storage ref" + } + }, + "id": 1291, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "collateral", + "nodeType": "MemberAccess", + "referencedDeclaration": 300, + "src": "16139:40:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1278, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "16075:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 1280, + "indexExpression": { + "argumentTypes": null, + "id": 1279, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1233, + "src": "16083:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "16075:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 1281, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "addresses", + "nodeType": "MemberAccess", + "referencedDeclaration": 341, + "src": "16075:27:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAddresses_$298_storage", + "typeString": "struct SmartPiggies.DetailAddresses storage ref" + } + }, + "id": 1282, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "collateralERC", + "nodeType": "MemberAccess", + "referencedDeclaration": 291, + "src": "16075:41:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1277, + "name": "PaymentToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 274, + "src": "16062:12:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_PaymentToken_$274_$", + "typeString": "type(contract PaymentToken)" + } + }, + "id": 1283, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "16062:55:4", + "typeDescriptions": { + "typeIdentifier": "t_contract$_PaymentToken_$274", + "typeString": "contract PaymentToken" + } + }, + "id": 1284, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "transfer", + "nodeType": "MemberAccess", + "referencedDeclaration": 268, + "src": "16062:64:4", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,uint256) external returns (bool)" + } + }, + "id": 1292, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "16062:118:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1293, + "nodeType": "ExpressionStatement", + "src": "16062:118:4" + } + ] + } + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1297, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2820, + "src": "16212:3:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1298, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "16212:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 1299, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1233, + "src": "16224:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1300, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "16234:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 1302, + "indexExpression": { + "argumentTypes": null, + "id": 1301, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1233, + "src": "16242:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "16234:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 1303, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "flags", + "nodeType": "MemberAccess", + "referencedDeclaration": 345, + "src": "16234:23:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BoolFlags_$322_storage", + "typeString": "struct SmartPiggies.BoolFlags storage ref" + } + }, + "id": 1304, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "isRequest", + "nodeType": "MemberAccess", + "referencedDeclaration": 315, + "src": "16234:33:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 1296, + "name": "ReclaimAndBurn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 423, + "src": "16197:14:4", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_bool_$returns$__$", + "typeString": "function (address,uint256,bool)" + } + }, + "id": 1305, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "16197:71:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1306, + "nodeType": "EmitStatement", + "src": "16192:76:4" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1308, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "16338:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 1310, + "indexExpression": { + "argumentTypes": null, + "id": 1309, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1233, + "src": "16346:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "16338:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 1311, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "addresses", + "nodeType": "MemberAccess", + "referencedDeclaration": 341, + "src": "16338:27:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAddresses_$298_storage", + "typeString": "struct SmartPiggies.DetailAddresses storage ref" + } + }, + "id": 1312, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "holder", + "nodeType": "MemberAccess", + "referencedDeclaration": 289, + "src": "16338:34:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1313, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1233, + "src": "16374:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1307, + "name": "_removeTokenFromOwnedPiggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2635, + "src": "16309:28:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 1314, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "16309:74:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1315, + "nodeType": "ExpressionStatement", + "src": "16309:74:4" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1317, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1233, + "src": "16449:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1316, + "name": "_resetPiggy", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2789, + "src": "16437:11:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$__$", + "typeString": "function (uint256)" + } + }, + "id": 1318, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "16437:21:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1319, + "nodeType": "ExpressionStatement", + "src": "16437:21:4" + }, + { + "expression": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 1320, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "16471:4:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 1237, + "id": 1321, + "nodeType": "Return", + "src": "16464:11:4" + } + ] + }, + "documentation": null, + "id": 1323, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "reclaimAndBurn", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1234, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1233, + "name": "_tokenId", + "nodeType": "VariableDeclaration", + "scope": 1323, + "src": "15612:16:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1232, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "15612:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "15611:18:4" + }, + "returnParameters": { + "id": 1237, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1236, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 1323, + "src": "15654:4:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 1235, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "15654:4:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "15653:6:4" + }, + "scope": 2805, + "src": "15588:892:4", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 1377, + "nodeType": "Block", + "src": "16547:501:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 1333, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1328, + "name": "auctions", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 369, + "src": "16553:8:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_DetailAuction_$339_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.DetailAuction storage ref)" + } + }, + "id": 1330, + "indexExpression": { + "argumentTypes": null, + "id": 1329, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1325, + "src": "16562:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "16553:18:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAuction_$339_storage", + "typeString": "struct SmartPiggies.DetailAuction storage ref" + } + }, + "id": 1331, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "startBlock", + "nodeType": "MemberAccess", + "referencedDeclaration": 324, + "src": "16553:29:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "30", + "id": 1332, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "16585:1:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "16553:33:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1334, + "nodeType": "ExpressionStatement", + "src": "16553:33:4" + }, + { + "expression": { + "argumentTypes": null, + "id": 1340, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1335, + "name": "auctions", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 369, + "src": "16592:8:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_DetailAuction_$339_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.DetailAuction storage ref)" + } + }, + "id": 1337, + "indexExpression": { + "argumentTypes": null, + "id": 1336, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1325, + "src": "16601:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "16592:18:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAuction_$339_storage", + "typeString": "struct SmartPiggies.DetailAuction storage ref" + } + }, + "id": 1338, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "expiryBlock", + "nodeType": "MemberAccess", + "referencedDeclaration": 326, + "src": "16592:30:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "30", + "id": 1339, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "16625:1:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "16592:34:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1341, + "nodeType": "ExpressionStatement", + "src": "16592:34:4" + }, + { + "expression": { + "argumentTypes": null, + "id": 1347, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1342, + "name": "auctions", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 369, + "src": "16632:8:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_DetailAuction_$339_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.DetailAuction storage ref)" + } + }, + "id": 1344, + "indexExpression": { + "argumentTypes": null, + "id": 1343, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1325, + "src": "16641:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "16632:18:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAuction_$339_storage", + "typeString": "struct SmartPiggies.DetailAuction storage ref" + } + }, + "id": 1345, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "startPrice", + "nodeType": "MemberAccess", + "referencedDeclaration": 328, + "src": "16632:29:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "30", + "id": 1346, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "16664:1:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "16632:33:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1348, + "nodeType": "ExpressionStatement", + "src": "16632:33:4" + }, + { + "expression": { + "argumentTypes": null, + "id": 1354, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1349, + "name": "auctions", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 369, + "src": "16671:8:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_DetailAuction_$339_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.DetailAuction storage ref)" + } + }, + "id": 1351, + "indexExpression": { + "argumentTypes": null, + "id": 1350, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1325, + "src": "16680:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "16671:18:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAuction_$339_storage", + "typeString": "struct SmartPiggies.DetailAuction storage ref" + } + }, + "id": 1352, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "reservePrice", + "nodeType": "MemberAccess", + "referencedDeclaration": 330, + "src": "16671:31:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "30", + "id": 1353, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "16705:1:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "16671:35:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1355, + "nodeType": "ExpressionStatement", + "src": "16671:35:4" + }, + { + "expression": { + "argumentTypes": null, + "id": 1361, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1356, + "name": "auctions", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 369, + "src": "16712:8:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_DetailAuction_$339_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.DetailAuction storage ref)" + } + }, + "id": 1358, + "indexExpression": { + "argumentTypes": null, + "id": 1357, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1325, + "src": "16721:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "16712:18:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAuction_$339_storage", + "typeString": "struct SmartPiggies.DetailAuction storage ref" + } + }, + "id": 1359, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "timeStep", + "nodeType": "MemberAccess", + "referencedDeclaration": 332, + "src": "16712:27:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "30", + "id": 1360, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "16742:1:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "16712:31:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1362, + "nodeType": "ExpressionStatement", + "src": "16712:31:4" + }, + { + "expression": { + "argumentTypes": null, + "id": 1368, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1363, + "name": "auctions", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 369, + "src": "16749:8:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_DetailAuction_$339_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.DetailAuction storage ref)" + } + }, + "id": 1365, + "indexExpression": { + "argumentTypes": null, + "id": 1364, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1325, + "src": "16758:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "16749:18:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAuction_$339_storage", + "typeString": "struct SmartPiggies.DetailAuction storage ref" + } + }, + "id": 1366, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "priceStep", + "nodeType": "MemberAccess", + "referencedDeclaration": 334, + "src": "16749:28:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "30", + "id": 1367, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "16780:1:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "16749:32:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1369, + "nodeType": "ExpressionStatement", + "src": "16749:32:4" + }, + { + "expression": { + "argumentTypes": null, + "id": 1375, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1370, + "name": "auctions", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 369, + "src": "16787:8:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_DetailAuction_$339_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.DetailAuction storage ref)" + } + }, + "id": 1372, + "indexExpression": { + "argumentTypes": null, + "id": 1371, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1325, + "src": "16796:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "16787:18:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAuction_$339_storage", + "typeString": "struct SmartPiggies.DetailAuction storage ref" + } + }, + "id": 1373, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "auctionActive", + "nodeType": "MemberAccess", + "referencedDeclaration": 336, + "src": "16787:32:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "66616c7365", + "id": 1374, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "16822:5:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "src": "16787:40:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1376, + "nodeType": "ExpressionStatement", + "src": "16787:40:4" + } + ] + }, + "documentation": null, + "id": 1378, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_clearAuctionDetails", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1326, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1325, + "name": "_tokenId", + "nodeType": "VariableDeclaration", + "scope": 1378, + "src": "16514:16:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1324, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "16514:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "16513:18:4" + }, + "returnParameters": { + "id": 1327, + "nodeType": "ParameterList", + "parameters": [], + "src": "16547:0:4" + }, + "scope": 2805, + "src": "16484:564:4", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 1548, + "nodeType": "Block", + "src": "17261:1866:4", + "statements": [ + { + "assignments": [ + 1396 + ], + "declarations": [ + { + "constant": false, + "id": 1396, + "name": "_auctionExpiry", + "nodeType": "VariableDeclaration", + "scope": 1548, + "src": "17267:22:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1395, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "17267:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1402, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1400, + "name": "_auctionLength", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1386, + "src": "17309:14:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1397, + "name": "block", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2810, + "src": "17292:5:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_block", + "typeString": "block" + } + }, + "id": 1398, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "number", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "17292:12:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1399, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 224, + "src": "17292:16:4", + "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": 1401, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "17292:32:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "17267:57:4" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 1411, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1404, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "17338:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 1406, + "indexExpression": { + "argumentTypes": null, + "id": 1405, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1380, + "src": "17346:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "17338:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 1407, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "addresses", + "nodeType": "MemberAccess", + "referencedDeclaration": 341, + "src": "17338:27:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAddresses_$298_storage", + "typeString": "struct SmartPiggies.DetailAddresses storage ref" + } + }, + "id": 1408, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "holder", + "nodeType": "MemberAccess", + "referencedDeclaration": 289, + "src": "17338:34:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1409, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2820, + "src": "17376:3:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1410, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "17376:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "17338:48:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "796f75206d757374206f776e206120746f6b656e20746f2061756374696f6e206974", + "id": 1412, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "17388:36:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_347b553f3479dd6198fdca821cd75f6d27d0336c41b4547759f0a4c4f21c9a92", + "typeString": "literal_string \"you must own a token to auction it\"" + }, + "value": "you must own a token to auction it" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_347b553f3479dd6198fdca821cd75f6d27d0336c41b4547759f0a4c4f21c9a92", + "typeString": "literal_string \"you must own a token to auction it\"" + } + ], + "id": 1403, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2823, + 2824 + ], + "referencedDeclaration": 2824, + "src": "17330:7:4", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 1413, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "17330:95:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1414, + "nodeType": "ExpressionStatement", + "src": "17330:95:4" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1423, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1416, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "17439:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 1418, + "indexExpression": { + "argumentTypes": null, + "id": 1417, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1380, + "src": "17447:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "17439:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 1419, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "uintDetails", + "nodeType": "MemberAccess", + "referencedDeclaration": 343, + "src": "17439:29:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailUints_$313_storage", + "typeString": "struct SmartPiggies.DetailUints storage ref" + } + }, + "id": 1420, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "expiry", + "nodeType": "MemberAccess", + "referencedDeclaration": 306, + "src": "17439:36:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1421, + "name": "block", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2810, + "src": "17478:5:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_block", + "typeString": "block" + } + }, + "id": 1422, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "number", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "17478:12:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "17439:51:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "6f7074696f6e206d757374206e6f742062652065787069726564", + "id": 1424, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "17492:28:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_ba126d0c204e17df1d0c888d9310fb1a71bf1e5ac964bdfd20946754b0eb84fe", + "typeString": "literal_string \"option must not be expired\"" + }, + "value": "option must not be expired" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_ba126d0c204e17df1d0c888d9310fb1a71bf1e5ac964bdfd20946754b0eb84fe", + "typeString": "literal_string \"option must not be expired\"" + } + ], + "id": 1415, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2823, + 2824 + ], + "referencedDeclaration": 2824, + "src": "17431:7:4", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 1425, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "17431:90:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1426, + "nodeType": "ExpressionStatement", + "src": "17431:90:4" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1434, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1428, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "17535:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 1430, + "indexExpression": { + "argumentTypes": null, + "id": 1429, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1380, + "src": "17543:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "17535:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 1431, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "uintDetails", + "nodeType": "MemberAccess", + "referencedDeclaration": 343, + "src": "17535:29:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailUints_$313_storage", + "typeString": "struct SmartPiggies.DetailUints storage ref" + } + }, + "id": 1432, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "expiry", + "nodeType": "MemberAccess", + "referencedDeclaration": 306, + "src": "17535:36:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "id": 1433, + "name": "_auctionExpiry", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1396, + "src": "17574:14:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "17535:53:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "61756374696f6e2063616e6e6f742065787069726520616674657220746865206f7074696f6e", + "id": 1435, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "17590:40:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_daf46ad355eb83d623c4a90b6054984c4a49e4edba5a28880e2c350c8e4a5235", + "typeString": "literal_string \"auction cannot expire after the option\"" + }, + "value": "auction cannot expire after the option" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_daf46ad355eb83d623c4a90b6054984c4a49e4edba5a28880e2c350c8e4a5235", + "typeString": "literal_string \"auction cannot expire after the option\"" + } + ], + "id": 1427, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2823, + 2824 + ], + "referencedDeclaration": 2824, + "src": "17527:7:4", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 1436, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "17527:104:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1437, + "nodeType": "ExpressionStatement", + "src": "17527:104:4" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1444, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "17645:39:4", + "subExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1439, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "17646:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 1441, + "indexExpression": { + "argumentTypes": null, + "id": 1440, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1380, + "src": "17654:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "17646:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 1442, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "flags", + "nodeType": "MemberAccess", + "referencedDeclaration": 345, + "src": "17646:23:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BoolFlags_$322_storage", + "typeString": "struct SmartPiggies.BoolFlags storage ref" + } + }, + "id": 1443, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "hasBeenCleared", + "nodeType": "MemberAccess", + "referencedDeclaration": 321, + "src": "17646:38:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "6f7074696f6e2063616e6e6f742068617665206265656e20636c6561726564", + "id": 1445, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "17686:33:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_27073f39ec9976896b20149ca5e815b73111f8a75112e9c5d8b9ee35967e8927", + "typeString": "literal_string \"option cannot have been cleared\"" + }, + "value": "option cannot have been cleared" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_27073f39ec9976896b20149ca5e815b73111f8a75112e9c5d8b9ee35967e8927", + "typeString": "literal_string \"option cannot have been cleared\"" + } + ], + "id": 1438, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2823, + 2824 + ], + "referencedDeclaration": 2824, + "src": "17637:7:4", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 1446, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "17637:83:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1447, + "nodeType": "ExpressionStatement", + "src": "17637:83:4" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1453, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "17734:33:4", + "subExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1449, + "name": "auctions", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 369, + "src": "17735:8:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_DetailAuction_$339_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.DetailAuction storage ref)" + } + }, + "id": 1451, + "indexExpression": { + "argumentTypes": null, + "id": 1450, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1380, + "src": "17744:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "17735:18:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAuction_$339_storage", + "typeString": "struct SmartPiggies.DetailAuction storage ref" + } + }, + "id": 1452, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "auctionActive", + "nodeType": "MemberAccess", + "referencedDeclaration": 336, + "src": "17735:32:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "61756374696f6e2063616e6e6f7420616c72656164792062652072756e6e696e67", + "id": 1454, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "17769:35:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_75e7be135ed90dd1a70249ea02e2cf969271d5c8707ac2d8fa92cff139cff01a", + "typeString": "literal_string \"auction cannot already be running\"" + }, + "value": "auction cannot already be running" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_75e7be135ed90dd1a70249ea02e2cf969271d5c8707ac2d8fa92cff139cff01a", + "typeString": "literal_string \"auction cannot already be running\"" + } + ], + "id": 1448, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2823, + 2824 + ], + "referencedDeclaration": 2824, + "src": "17726:7:4", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 1455, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "17726:79:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1456, + "nodeType": "ExpressionStatement", + "src": "17726:79:4" + }, + { + "condition": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1457, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "18153:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 1459, + "indexExpression": { + "argumentTypes": null, + "id": 1458, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1380, + "src": "18161:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "18153:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 1460, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "flags", + "nodeType": "MemberAccess", + "referencedDeclaration": 345, + "src": "18153:23:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BoolFlags_$322_storage", + "typeString": "struct SmartPiggies.BoolFlags storage ref" + } + }, + "id": 1461, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "isRequest", + "nodeType": "MemberAccess", + "referencedDeclaration": 315, + "src": "18153:33:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 1484, + "nodeType": "IfStatement", + "src": "18149:359:4", + "trueBody": { + "id": 1483, + "nodeType": "Block", + "src": "18188:320:4", + "statements": [ + { + "assignments": [ + 1463 + ], + "declarations": [ + { + "constant": false, + "id": 1463, + "name": "success", + "nodeType": "VariableDeclaration", + "scope": 1483, + "src": "18196:12:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 1462, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "18196:4:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1477, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1465, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "18243:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 1467, + "indexExpression": { + "argumentTypes": null, + "id": 1466, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1380, + "src": "18251:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "18243:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 1468, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "addresses", + "nodeType": "MemberAccess", + "referencedDeclaration": 341, + "src": "18243:27:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAddresses_$298_storage", + "typeString": "struct SmartPiggies.DetailAddresses storage ref" + } + }, + "id": 1469, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "premiumERC", + "nodeType": "MemberAccess", + "referencedDeclaration": 293, + "src": "18243:38:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1470, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2820, + "src": "18291:3:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1471, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "18291:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1473, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2843, + "src": "18319:4:4", + "typeDescriptions": { + "typeIdentifier": "t_contract$_SmartPiggies_$2805", + "typeString": "contract SmartPiggies" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_SmartPiggies_$2805", + "typeString": "contract SmartPiggies" + } + ], + "id": 1472, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "18311:7:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 1474, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "18311:13:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1475, + "name": "_reservePrice", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1384, + "src": "18334:13:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1464, + "name": "attemptPaymentTransfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 537, + "src": "18211:22:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,address,address,uint256) returns (bool)" + } + }, + "id": 1476, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "18211:230:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "18196:245:4" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1479, + "name": "success", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1463, + "src": "18457:7:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "7472616e7366657246726f6d20646964206e6f742072657475726e2074727565", + "id": 1480, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "18466:34:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_35b8e48e80d109dedabaecc36aa806b1e346b95a74c9bec1da46923b6d341700", + "typeString": "literal_string \"transferFrom did not return true\"" + }, + "value": "transferFrom did not return true" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_35b8e48e80d109dedabaecc36aa806b1e346b95a74c9bec1da46923b6d341700", + "typeString": "literal_string \"transferFrom did not return true\"" + } + ], + "id": 1478, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2823, + 2824 + ], + "referencedDeclaration": 2824, + "src": "18449:7:4", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 1481, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "18449:52:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1482, + "nodeType": "ExpressionStatement", + "src": "18449:52:4" + } + ] + } + }, + { + "expression": { + "argumentTypes": null, + "id": 1491, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1485, + "name": "auctions", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 369, + "src": "18607:8:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_DetailAuction_$339_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.DetailAuction storage ref)" + } + }, + "id": 1487, + "indexExpression": { + "argumentTypes": null, + "id": 1486, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1380, + "src": "18616:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "18607:18:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAuction_$339_storage", + "typeString": "struct SmartPiggies.DetailAuction storage ref" + } + }, + "id": 1488, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "startBlock", + "nodeType": "MemberAccess", + "referencedDeclaration": 324, + "src": "18607:29:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1489, + "name": "block", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2810, + "src": "18639:5:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_block", + "typeString": "block" + } + }, + "id": 1490, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "number", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "18639:12:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "18607:44:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1492, + "nodeType": "ExpressionStatement", + "src": "18607:44:4" + }, + { + "expression": { + "argumentTypes": null, + "id": 1498, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1493, + "name": "auctions", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 369, + "src": "18657:8:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_DetailAuction_$339_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.DetailAuction storage ref)" + } + }, + "id": 1495, + "indexExpression": { + "argumentTypes": null, + "id": 1494, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1380, + "src": "18666:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "18657:18:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAuction_$339_storage", + "typeString": "struct SmartPiggies.DetailAuction storage ref" + } + }, + "id": 1496, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "expiryBlock", + "nodeType": "MemberAccess", + "referencedDeclaration": 326, + "src": "18657:30:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 1497, + "name": "_auctionExpiry", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1396, + "src": "18690:14:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "18657:47:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1499, + "nodeType": "ExpressionStatement", + "src": "18657:47:4" + }, + { + "expression": { + "argumentTypes": null, + "id": 1505, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1500, + "name": "auctions", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 369, + "src": "18710:8:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_DetailAuction_$339_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.DetailAuction storage ref)" + } + }, + "id": 1502, + "indexExpression": { + "argumentTypes": null, + "id": 1501, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1380, + "src": "18719:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "18710:18:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAuction_$339_storage", + "typeString": "struct SmartPiggies.DetailAuction storage ref" + } + }, + "id": 1503, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "startPrice", + "nodeType": "MemberAccess", + "referencedDeclaration": 328, + "src": "18710:29:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 1504, + "name": "_startPrice", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1382, + "src": "18742:11:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "18710:43:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1506, + "nodeType": "ExpressionStatement", + "src": "18710:43:4" + }, + { + "expression": { + "argumentTypes": null, + "id": 1512, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1507, + "name": "auctions", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 369, + "src": "18759:8:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_DetailAuction_$339_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.DetailAuction storage ref)" + } + }, + "id": 1509, + "indexExpression": { + "argumentTypes": null, + "id": 1508, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1380, + "src": "18768:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "18759:18:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAuction_$339_storage", + "typeString": "struct SmartPiggies.DetailAuction storage ref" + } + }, + "id": 1510, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "reservePrice", + "nodeType": "MemberAccess", + "referencedDeclaration": 330, + "src": "18759:31:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 1511, + "name": "_reservePrice", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1384, + "src": "18793:13:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "18759:47:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1513, + "nodeType": "ExpressionStatement", + "src": "18759:47:4" + }, + { + "expression": { + "argumentTypes": null, + "id": 1519, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1514, + "name": "auctions", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 369, + "src": "18812:8:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_DetailAuction_$339_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.DetailAuction storage ref)" + } + }, + "id": 1516, + "indexExpression": { + "argumentTypes": null, + "id": 1515, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1380, + "src": "18821:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "18812:18:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAuction_$339_storage", + "typeString": "struct SmartPiggies.DetailAuction storage ref" + } + }, + "id": 1517, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "timeStep", + "nodeType": "MemberAccess", + "referencedDeclaration": 332, + "src": "18812:27:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 1518, + "name": "_timeStep", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1388, + "src": "18842:9:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "18812:39:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1520, + "nodeType": "ExpressionStatement", + "src": "18812:39:4" + }, + { + "expression": { + "argumentTypes": null, + "id": 1526, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1521, + "name": "auctions", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 369, + "src": "18857:8:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_DetailAuction_$339_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.DetailAuction storage ref)" + } + }, + "id": 1523, + "indexExpression": { + "argumentTypes": null, + "id": 1522, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1380, + "src": "18866:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "18857:18:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAuction_$339_storage", + "typeString": "struct SmartPiggies.DetailAuction storage ref" + } + }, + "id": 1524, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "priceStep", + "nodeType": "MemberAccess", + "referencedDeclaration": 334, + "src": "18857:28:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 1525, + "name": "_priceStep", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1390, + "src": "18888:10:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "18857:41:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1527, + "nodeType": "ExpressionStatement", + "src": "18857:41:4" + }, + { + "expression": { + "argumentTypes": null, + "id": 1533, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1528, + "name": "auctions", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 369, + "src": "18904:8:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_DetailAuction_$339_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.DetailAuction storage ref)" + } + }, + "id": 1530, + "indexExpression": { + "argumentTypes": null, + "id": 1529, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1380, + "src": "18913:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "18904:18:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAuction_$339_storage", + "typeString": "struct SmartPiggies.DetailAuction storage ref" + } + }, + "id": 1531, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "auctionActive", + "nodeType": "MemberAccess", + "referencedDeclaration": 336, + "src": "18904:32:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 1532, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "18939:4:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "src": "18904:39:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1534, + "nodeType": "ExpressionStatement", + "src": "18904:39:4" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1536, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2820, + "src": "18975:3:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1537, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "18975:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 1538, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1380, + "src": "18993:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 1539, + "name": "_startPrice", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1382, + "src": "19009:11:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 1540, + "name": "_reservePrice", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1384, + "src": "19028:13:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 1541, + "name": "_auctionLength", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1386, + "src": "19049:14:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 1542, + "name": "_timeStep", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1388, + "src": "19071:9:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 1543, + "name": "_priceStep", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1390, + "src": "19088:10:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1535, + "name": "StartAuction", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 439, + "src": "18955:12:4", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256,uint256,uint256,uint256,uint256,uint256)" + } + }, + "id": 1544, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "18955:149:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1545, + "nodeType": "EmitStatement", + "src": "18950:154:4" + }, + { + "expression": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 1546, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "19118:4:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 1394, + "id": 1547, + "nodeType": "Return", + "src": "19111:11:4" + } + ] + }, + "documentation": null, + "id": 1549, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "startAuction", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1391, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1380, + "name": "_tokenId", + "nodeType": "VariableDeclaration", + "scope": 1549, + "src": "17079:16:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1379, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "17079:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1382, + "name": "_startPrice", + "nodeType": "VariableDeclaration", + "scope": 1549, + "src": "17101:19:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1381, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "17101:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1384, + "name": "_reservePrice", + "nodeType": "VariableDeclaration", + "scope": 1549, + "src": "17126:21:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1383, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "17126:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1386, + "name": "_auctionLength", + "nodeType": "VariableDeclaration", + "scope": 1549, + "src": "17153:22:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1385, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "17153:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1388, + "name": "_timeStep", + "nodeType": "VariableDeclaration", + "scope": 1549, + "src": "17181:17:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1387, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "17181:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1390, + "name": "_priceStep", + "nodeType": "VariableDeclaration", + "scope": 1549, + "src": "17204:18:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1389, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "17204:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "17073:153:4" + }, + "returnParameters": { + "id": 1394, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1393, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 1549, + "src": "17253:4:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 1392, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "17253:4:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "17252:6:4" + }, + "scope": 2805, + "src": "17052:2075:4", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "external" + }, + { + "body": { + "id": 1629, + "nodeType": "Block", + "src": "19201:936:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 1564, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1557, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "19215:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 1559, + "indexExpression": { + "argumentTypes": null, + "id": 1558, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1551, + "src": "19223:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "19215:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 1560, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "addresses", + "nodeType": "MemberAccess", + "referencedDeclaration": 341, + "src": "19215:27:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAddresses_$298_storage", + "typeString": "struct SmartPiggies.DetailAddresses storage ref" + } + }, + "id": 1561, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "holder", + "nodeType": "MemberAccess", + "referencedDeclaration": 289, + "src": "19215:34:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1562, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2820, + "src": "19253:3:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1563, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "19253:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "19215:48:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "796f75206d757374206f776e206120746f6b656e20746f2061756374696f6e206974", + "id": 1565, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "19265:36:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_347b553f3479dd6198fdca821cd75f6d27d0336c41b4547759f0a4c4f21c9a92", + "typeString": "literal_string \"you must own a token to auction it\"" + }, + "value": "you must own a token to auction it" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_347b553f3479dd6198fdca821cd75f6d27d0336c41b4547759f0a4c4f21c9a92", + "typeString": "literal_string \"you must own a token to auction it\"" + } + ], + "id": 1556, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2823, + 2824 + ], + "referencedDeclaration": 2824, + "src": "19207:7:4", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 1566, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "19207:95:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1567, + "nodeType": "ExpressionStatement", + "src": "19207:95:4" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1569, + "name": "auctions", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 369, + "src": "19316:8:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_DetailAuction_$339_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.DetailAuction storage ref)" + } + }, + "id": 1571, + "indexExpression": { + "argumentTypes": null, + "id": 1570, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1551, + "src": "19325:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "19316:18:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAuction_$339_storage", + "typeString": "struct SmartPiggies.DetailAuction storage ref" + } + }, + "id": 1572, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "auctionActive", + "nodeType": "MemberAccess", + "referencedDeclaration": 336, + "src": "19316:32:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "61756374696f6e206d7573742062652061637469766520746f2063616e63656c206974", + "id": 1573, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "19350:37:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_d628b799737a92349c6ea16e9a2c5925f97e27b7f8836620f38d9e95dcb51daa", + "typeString": "literal_string \"auction must be active to cancel it\"" + }, + "value": "auction must be active to cancel it" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_d628b799737a92349c6ea16e9a2c5925f97e27b7f8836620f38d9e95dcb51daa", + "typeString": "literal_string \"auction must be active to cancel it\"" + } + ], + "id": 1568, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2823, + 2824 + ], + "referencedDeclaration": 2824, + "src": "19308:7:4", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 1574, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "19308:80:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1575, + "nodeType": "ExpressionStatement", + "src": "19308:80:4" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1581, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "19402:37:4", + "subExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1577, + "name": "auctions", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 369, + "src": "19403:8:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_DetailAuction_$339_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.DetailAuction storage ref)" + } + }, + "id": 1579, + "indexExpression": { + "argumentTypes": null, + "id": 1578, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1551, + "src": "19412:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "19403:18:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAuction_$339_storage", + "typeString": "struct SmartPiggies.DetailAuction storage ref" + } + }, + "id": 1580, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "satisfyInProgress", + "nodeType": "MemberAccess", + "referencedDeclaration": 338, + "src": "19403:36:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "61756374696f6e2063616e6e6f7420626520696e207468652070726f63657373206f66206265696e6720736174697366696564", + "id": 1582, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "19441:53:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_2e85065a51dd5ddc3b550cdcec6a89d37b41e2021606af9209014f7e9b3e3717", + "typeString": "literal_string \"auction cannot be in the process of being satisfied\"" + }, + "value": "auction cannot be in the process of being satisfied" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_2e85065a51dd5ddc3b550cdcec6a89d37b41e2021606af9209014f7e9b3e3717", + "typeString": "literal_string \"auction cannot be in the process of being satisfied\"" + } + ], + "id": 1576, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2823, + 2824 + ], + "referencedDeclaration": 2824, + "src": "19394:7:4", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 1583, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "19394:101:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1584, + "nodeType": "ExpressionStatement", + "src": "19394:101:4" + }, + { + "condition": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1585, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "19557:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 1587, + "indexExpression": { + "argumentTypes": null, + "id": 1586, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1551, + "src": "19565:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "19557:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 1588, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "flags", + "nodeType": "MemberAccess", + "referencedDeclaration": 345, + "src": "19557:23:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BoolFlags_$322_storage", + "typeString": "struct SmartPiggies.BoolFlags storage ref" + } + }, + "id": 1589, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "isRequest", + "nodeType": "MemberAccess", + "referencedDeclaration": 315, + "src": "19557:33:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 1611, + "nodeType": "IfStatement", + "src": "19553:449:4", + "trueBody": { + "id": 1610, + "nodeType": "Block", + "src": "19592:410:4", + "statements": [ + { + "assignments": [ + 1591 + ], + "declarations": [ + { + "constant": false, + "id": 1591, + "name": "_premiumToReturn", + "nodeType": "VariableDeclaration", + "scope": 1610, + "src": "19642:24:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1590, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "19642:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1596, + "initialValue": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1592, + "name": "auctions", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 369, + "src": "19669:8:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_DetailAuction_$339_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.DetailAuction storage ref)" + } + }, + "id": 1594, + "indexExpression": { + "argumentTypes": null, + "id": 1593, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1551, + "src": "19678:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "19669:18:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAuction_$339_storage", + "typeString": "struct SmartPiggies.DetailAuction storage ref" + } + }, + "id": 1595, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "reservePrice", + "nodeType": "MemberAccess", + "referencedDeclaration": 330, + "src": "19669:31:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "19642:58:4" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1605, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2820, + "src": "19966:3:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1606, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "19966:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 1607, + "name": "_premiumToReturn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1591, + "src": "19978:16:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1598, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "19917:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 1600, + "indexExpression": { + "argumentTypes": null, + "id": 1599, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1551, + "src": "19925:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "19917:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 1601, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "addresses", + "nodeType": "MemberAccess", + "referencedDeclaration": 341, + "src": "19917:27:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAddresses_$298_storage", + "typeString": "struct SmartPiggies.DetailAddresses storage ref" + } + }, + "id": 1602, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "premiumERC", + "nodeType": "MemberAccess", + "referencedDeclaration": 293, + "src": "19917:38:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1597, + "name": "PaymentToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 274, + "src": "19904:12:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_PaymentToken_$274_$", + "typeString": "type(contract PaymentToken)" + } + }, + "id": 1603, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "19904:52:4", + "typeDescriptions": { + "typeIdentifier": "t_contract$_PaymentToken_$274", + "typeString": "contract PaymentToken" + } + }, + "id": 1604, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "transfer", + "nodeType": "MemberAccess", + "referencedDeclaration": 268, + "src": "19904:61:4", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,uint256) external returns (bool)" + } + }, + "id": 1608, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "19904:91:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1609, + "nodeType": "ExpressionStatement", + "src": "19904:91:4" + } + ] + } + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1613, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1551, + "src": "20028:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1612, + "name": "_clearAuctionDetails", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1378, + "src": "20007:20:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$__$", + "typeString": "function (uint256)" + } + }, + "id": 1614, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "20007:30:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1615, + "nodeType": "ExpressionStatement", + "src": "20007:30:4" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1617, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2820, + "src": "20059:3:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1618, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "20059:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 1619, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1551, + "src": "20071:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1620, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "20081:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 1622, + "indexExpression": { + "argumentTypes": null, + "id": 1621, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1551, + "src": "20089:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "20081:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 1623, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "flags", + "nodeType": "MemberAccess", + "referencedDeclaration": 345, + "src": "20081:23:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BoolFlags_$322_storage", + "typeString": "struct SmartPiggies.BoolFlags storage ref" + } + }, + "id": 1624, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "isRequest", + "nodeType": "MemberAccess", + "referencedDeclaration": 315, + "src": "20081:33:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 1616, + "name": "EndAuction", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 447, + "src": "20048:10:4", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_bool_$returns$__$", + "typeString": "function (address,uint256,bool)" + } + }, + "id": 1625, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "20048:67:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1626, + "nodeType": "EmitStatement", + "src": "20043:72:4" + }, + { + "expression": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 1627, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "20128:4:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 1555, + "id": 1628, + "nodeType": "Return", + "src": "20121:11:4" + } + ] + }, + "documentation": null, + "id": 1630, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "endAuction", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1552, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1551, + "name": "_tokenId", + "nodeType": "VariableDeclaration", + "scope": 1630, + "src": "19151:16:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1550, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "19151:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "19150:18:4" + }, + "returnParameters": { + "id": 1555, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1554, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 1630, + "src": "19193:4:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 1553, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "19193:4:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "19192:6:4" + }, + "scope": 2805, + "src": "19131:1006:4", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 1687, + "nodeType": "Block", + "src": "20396:578:4", + "statements": [ + { + "assignments": [ + 1638 + ], + "declarations": [ + { + "constant": false, + "id": 1638, + "name": "_pStart", + "nodeType": "VariableDeclaration", + "scope": 1687, + "src": "20578:15:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1637, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "20578:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1643, + "initialValue": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1639, + "name": "auctions", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 369, + "src": "20596:8:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_DetailAuction_$339_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.DetailAuction storage ref)" + } + }, + "id": 1641, + "indexExpression": { + "argumentTypes": null, + "id": 1640, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1632, + "src": "20605:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "20596:18:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAuction_$339_storage", + "typeString": "struct SmartPiggies.DetailAuction storage ref" + } + }, + "id": 1642, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "startPrice", + "nodeType": "MemberAccess", + "referencedDeclaration": 328, + "src": "20596:29:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "20578:47:4" + }, + { + "assignments": [ + 1645 + ], + "declarations": [ + { + "constant": false, + "id": 1645, + "name": "_pDelta", + "nodeType": "VariableDeclaration", + "scope": 1687, + "src": "20699:15:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1644, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "20699:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1667, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1662, + "name": "auctions", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 369, + "src": "20805:8:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_DetailAuction_$339_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.DetailAuction storage ref)" + } + }, + "id": 1664, + "indexExpression": { + "argumentTypes": null, + "id": 1663, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1632, + "src": "20814:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "20805:18:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAuction_$339_storage", + "typeString": "struct SmartPiggies.DetailAuction storage ref" + } + }, + "id": 1665, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "timeStep", + "nodeType": "MemberAccess", + "referencedDeclaration": 332, + "src": "20805:27:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1656, + "name": "auctions", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 369, + "src": "20771:8:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_DetailAuction_$339_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.DetailAuction storage ref)" + } + }, + "id": 1658, + "indexExpression": { + "argumentTypes": null, + "id": 1657, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1632, + "src": "20780:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "20771:18:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAuction_$339_storage", + "typeString": "struct SmartPiggies.DetailAuction storage ref" + } + }, + "id": 1659, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "priceStep", + "nodeType": "MemberAccess", + "referencedDeclaration": 334, + "src": "20771:28:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1650, + "name": "auctions", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 369, + "src": "20736:8:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_DetailAuction_$339_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.DetailAuction storage ref)" + } + }, + "id": 1652, + "indexExpression": { + "argumentTypes": null, + "id": 1651, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1632, + "src": "20745:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "20736:18:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAuction_$339_storage", + "typeString": "struct SmartPiggies.DetailAuction storage ref" + } + }, + "id": 1653, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "startBlock", + "nodeType": "MemberAccess", + "referencedDeclaration": 324, + "src": "20736:29:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1646, + "name": "block", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2810, + "src": "20718:5:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_block", + "typeString": "block" + } + }, + "id": 1647, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "number", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "20718:12:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 1648, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "20717:14:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1649, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sub", + "nodeType": "MemberAccess", + "referencedDeclaration": 200, + "src": "20717:18:4", + "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": 1654, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "20717:49:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1655, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "mul", + "nodeType": "MemberAccess", + "referencedDeclaration": 152, + "src": "20717:53:4", + "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": 1660, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "20717:83:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1661, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "div", + "nodeType": "MemberAccess", + "referencedDeclaration": 176, + "src": "20717:87:4", + "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": 1666, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "20717:116:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "20699:134:4" + }, + { + "condition": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1668, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "20843:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 1670, + "indexExpression": { + "argumentTypes": null, + "id": 1669, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1632, + "src": "20851:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "20843:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 1671, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "flags", + "nodeType": "MemberAccess", + "referencedDeclaration": 345, + "src": "20843:23:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BoolFlags_$322_storage", + "typeString": "struct SmartPiggies.BoolFlags storage ref" + } + }, + "id": 1672, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "isRequest", + "nodeType": "MemberAccess", + "referencedDeclaration": 315, + "src": "20843:33:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 1685, + "nodeType": "Block", + "src": "20926:44:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1681, + "name": "_pDelta", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1645, + "src": "20954:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 1679, + "name": "_pStart", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1638, + "src": "20942:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1680, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sub", + "nodeType": "MemberAccess", + "referencedDeclaration": 200, + "src": "20942:11:4", + "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": 1682, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "20942:20:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 1683, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "20941:22:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 1636, + "id": 1684, + "nodeType": "Return", + "src": "20934:29:4" + } + ] + }, + "id": 1686, + "nodeType": "IfStatement", + "src": "20839:131:4", + "trueBody": { + "id": 1678, + "nodeType": "Block", + "src": "20878:42:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1675, + "name": "_pDelta", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1645, + "src": "20905:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 1673, + "name": "_pStart", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1638, + "src": "20893:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1674, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 224, + "src": "20893:11:4", + "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": 1676, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "20893:20:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 1636, + "id": 1677, + "nodeType": "Return", + "src": "20886:27:4" + } + ] + } + } + ] + }, + "documentation": null, + "id": 1688, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getAuctionPrice", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1633, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1632, + "name": "_tokenId", + "nodeType": "VariableDeclaration", + "scope": 1688, + "src": "20332:16:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1631, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "20332:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "20331:18:4" + }, + "returnParameters": { + "id": 1636, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1635, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 1688, + "src": "20385:7:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1634, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "20385:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "20384:9:4" + }, + "scope": 2805, + "src": "20307:667:4", + "stateMutability": "view", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 1982, + "nodeType": "Block", + "src": "21106:3569:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1700, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "21120:37:4", + "subExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1696, + "name": "auctions", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 369, + "src": "21121:8:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_DetailAuction_$339_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.DetailAuction storage ref)" + } + }, + "id": 1698, + "indexExpression": { + "argumentTypes": null, + "id": 1697, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1690, + "src": "21130:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "21121:18:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAuction_$339_storage", + "typeString": "struct SmartPiggies.DetailAuction storage ref" + } + }, + "id": 1699, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "satisfyInProgress", + "nodeType": "MemberAccess", + "referencedDeclaration": 338, + "src": "21121:36:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "63616e6e6f74207265656e74657220746869732066756e6374696f6e207768696c6520697420697320696e2070726f6772657373", + "id": 1701, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "21159:54:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_6a34dcd3ede81bbd1e22bc4d5fb3a35a06c8f704b873ce69d53ec62180454676", + "typeString": "literal_string \"cannot reenter this function while it is in progress\"" + }, + "value": "cannot reenter this function while it is in progress" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_6a34dcd3ede81bbd1e22bc4d5fb3a35a06c8f704b873ce69d53ec62180454676", + "typeString": "literal_string \"cannot reenter this function while it is in progress\"" + } + ], + "id": 1695, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2823, + 2824 + ], + "referencedDeclaration": 2824, + "src": "21112:7:4", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 1702, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "21112:102:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1703, + "nodeType": "ExpressionStatement", + "src": "21112:102:4" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 1712, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1705, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "21228:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 1707, + "indexExpression": { + "argumentTypes": null, + "id": 1706, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1690, + "src": "21236:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "21228:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 1708, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "addresses", + "nodeType": "MemberAccess", + "referencedDeclaration": 341, + "src": "21228:27:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAddresses_$298_storage", + "typeString": "struct SmartPiggies.DetailAddresses storage ref" + } + }, + "id": 1709, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "holder", + "nodeType": "MemberAccess", + "referencedDeclaration": 289, + "src": "21228:34:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1710, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2820, + "src": "21266:3:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1711, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "21266:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "21228:48:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "63616e6e6f74207361746973667920796f7572206f776e2061756374696f6e3b2075736520656e6441756374696f6e20696e7374656164", + "id": 1713, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "21278:57:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_112f3e3ad5bb7a63f742b0817bbe32876de85d03ad362398959d793954c3e061", + "typeString": "literal_string \"cannot satisfy your own auction; use endAuction instead\"" + }, + "value": "cannot satisfy your own auction; use endAuction instead" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_112f3e3ad5bb7a63f742b0817bbe32876de85d03ad362398959d793954c3e061", + "typeString": "literal_string \"cannot satisfy your own auction; use endAuction instead\"" + } + ], + "id": 1704, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2823, + 2824 + ], + "referencedDeclaration": 2824, + "src": "21220:7:4", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 1714, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "21220:116:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1715, + "nodeType": "ExpressionStatement", + "src": "21220:116:4" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1717, + "name": "auctions", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 369, + "src": "21350:8:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_DetailAuction_$339_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.DetailAuction storage ref)" + } + }, + "id": 1719, + "indexExpression": { + "argumentTypes": null, + "id": 1718, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1690, + "src": "21359:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "21350:18:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAuction_$339_storage", + "typeString": "struct SmartPiggies.DetailAuction storage ref" + } + }, + "id": 1720, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "auctionActive", + "nodeType": "MemberAccess", + "referencedDeclaration": 336, + "src": "21350:32:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "61756374696f6e206d7573742062652061637469766520746f2073617469736679206974", + "id": 1721, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "21384:38:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_47fbac54a3159745f1291bcc5f2bf48b19397de937c242968b64ec1bba31c110", + "typeString": "literal_string \"auction must be active to satisfy it\"" + }, + "value": "auction must be active to satisfy it" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_47fbac54a3159745f1291bcc5f2bf48b19397de937c242968b64ec1bba31c110", + "typeString": "literal_string \"auction must be active to satisfy it\"" + } + ], + "id": 1716, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2823, + 2824 + ], + "referencedDeclaration": 2824, + "src": "21342:7:4", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 1722, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "21342:81:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1723, + "nodeType": "ExpressionStatement", + "src": "21342:81:4" + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1730, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1724, + "name": "auctions", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 369, + "src": "21512:8:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_DetailAuction_$339_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.DetailAuction storage ref)" + } + }, + "id": 1726, + "indexExpression": { + "argumentTypes": null, + "id": 1725, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1690, + "src": "21521:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "21512:18:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAuction_$339_storage", + "typeString": "struct SmartPiggies.DetailAuction storage ref" + } + }, + "id": 1727, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "expiryBlock", + "nodeType": "MemberAccess", + "referencedDeclaration": 326, + "src": "21512:30:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1728, + "name": "block", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2810, + "src": "21545:5:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_block", + "typeString": "block" + } + }, + "id": 1729, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "number", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "21545:12:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "21512:45:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 1738, + "nodeType": "IfStatement", + "src": "21508:206:4", + "trueBody": { + "id": 1737, + "nodeType": "Block", + "src": "21559:155:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1732, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1690, + "src": "21678:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1731, + "name": "_clearAuctionDetails", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1378, + "src": "21657:20:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$__$", + "typeString": "function (uint256)" + } + }, + "id": 1733, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "21657:30:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1734, + "nodeType": "ExpressionStatement", + "src": "21657:30:4" + }, + { + "expression": { + "argumentTypes": null, + "hexValue": "66616c7365", + "id": 1735, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "21702:5:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "functionReturnParameters": 1694, + "id": 1736, + "nodeType": "Return", + "src": "21695:12:4" + } + ] + } + }, + { + "assignments": [ + 1740 + ], + "declarations": [ + { + "constant": false, + "id": 1740, + "name": "_auctionPremium", + "nodeType": "VariableDeclaration", + "scope": 1982, + "src": "21860:23:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1739, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "21860:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1744, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1742, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1690, + "src": "21902:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1741, + "name": "getAuctionPrice", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1688, + "src": "21886:15:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256) view returns (uint256)" + } + }, + "id": 1743, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "21886:25:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "21860:51:4" + }, + { + "expression": { + "argumentTypes": null, + "id": 1750, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1745, + "name": "auctions", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 369, + "src": "21935:8:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_DetailAuction_$339_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.DetailAuction storage ref)" + } + }, + "id": 1747, + "indexExpression": { + "argumentTypes": null, + "id": 1746, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1690, + "src": "21944:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "21935:18:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAuction_$339_storage", + "typeString": "struct SmartPiggies.DetailAuction storage ref" + } + }, + "id": 1748, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "satisfyInProgress", + "nodeType": "MemberAccess", + "referencedDeclaration": 338, + "src": "21935:36:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 1749, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "21974:4:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "src": "21935:43:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1751, + "nodeType": "ExpressionStatement", + "src": "21935:43:4" + }, + { + "condition": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1752, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "21988:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 1754, + "indexExpression": { + "argumentTypes": null, + "id": 1753, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1690, + "src": "21996:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "21988:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 1755, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "flags", + "nodeType": "MemberAccess", + "referencedDeclaration": 345, + "src": "21988:23:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BoolFlags_$322_storage", + "typeString": "struct SmartPiggies.BoolFlags storage ref" + } + }, + "id": 1756, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "isRequest", + "nodeType": "MemberAccess", + "referencedDeclaration": 315, + "src": "21988:33:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 1967, + "nodeType": "Block", + "src": "23656:866:4", + "statements": [ + { + "assignments": [ + 1898 + ], + "declarations": [ + { + "constant": false, + "id": 1898, + "name": "_adjPremium", + "nodeType": "VariableDeclaration", + "scope": 1967, + "src": "23726:19:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1897, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "23726:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1900, + "initialValue": { + "argumentTypes": null, + "id": 1899, + "name": "_auctionPremium", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1740, + "src": "23748:15:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "23726:37:4" + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1906, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1901, + "name": "_adjPremium", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1898, + "src": "23775:11:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1902, + "name": "auctions", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 369, + "src": "23789:8:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_DetailAuction_$339_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.DetailAuction storage ref)" + } + }, + "id": 1904, + "indexExpression": { + "argumentTypes": null, + "id": 1903, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1690, + "src": "23798:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "23789:18:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAuction_$339_storage", + "typeString": "struct SmartPiggies.DetailAuction storage ref" + } + }, + "id": 1905, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "reservePrice", + "nodeType": "MemberAccess", + "referencedDeclaration": 330, + "src": "23789:31:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "23775:45:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 1915, + "nodeType": "IfStatement", + "src": "23771:115:4", + "trueBody": { + "id": 1914, + "nodeType": "Block", + "src": "23822:64:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 1912, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 1907, + "name": "_adjPremium", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1898, + "src": "23832:11:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1908, + "name": "auctions", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 369, + "src": "23846:8:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_DetailAuction_$339_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.DetailAuction storage ref)" + } + }, + "id": 1910, + "indexExpression": { + "argumentTypes": null, + "id": 1909, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1690, + "src": "23855:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "23846:18:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAuction_$339_storage", + "typeString": "struct SmartPiggies.DetailAuction storage ref" + } + }, + "id": 1911, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "reservePrice", + "nodeType": "MemberAccess", + "referencedDeclaration": 330, + "src": "23846:31:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "23832:45:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1913, + "nodeType": "ExpressionStatement", + "src": "23832:45:4" + } + ] + } + }, + { + "assignments": [ + 1917 + ], + "declarations": [ + { + "constant": false, + "id": 1917, + "name": "success", + "nodeType": "VariableDeclaration", + "scope": 1967, + "src": "23937:12:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 1916, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "23937:4:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1933, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1919, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "23984:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 1921, + "indexExpression": { + "argumentTypes": null, + "id": 1920, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1690, + "src": "23992:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "23984:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 1922, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "addresses", + "nodeType": "MemberAccess", + "referencedDeclaration": 341, + "src": "23984:27:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAddresses_$298_storage", + "typeString": "struct SmartPiggies.DetailAddresses storage ref" + } + }, + "id": 1923, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "premiumERC", + "nodeType": "MemberAccess", + "referencedDeclaration": 293, + "src": "23984:38:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1924, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2820, + "src": "24032:3:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1925, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "24032:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1926, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "24052:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 1928, + "indexExpression": { + "argumentTypes": null, + "id": 1927, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1690, + "src": "24060:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "24052:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 1929, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "addresses", + "nodeType": "MemberAccess", + "referencedDeclaration": 341, + "src": "24052:27:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAddresses_$298_storage", + "typeString": "struct SmartPiggies.DetailAddresses storage ref" + } + }, + "id": 1930, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "holder", + "nodeType": "MemberAccess", + "referencedDeclaration": 289, + "src": "24052:34:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1931, + "name": "_adjPremium", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1898, + "src": "24140:11:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1918, + "name": "attemptPaymentTransfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 537, + "src": "23952:22:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,address,address,uint256) returns (bool)" + } + }, + "id": 1932, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "23952:207:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "23937:222:4" + }, + { + "condition": { + "argumentTypes": null, + "id": 1935, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "24171:8:4", + "subExpression": { + "argumentTypes": null, + "id": 1934, + "name": "success", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1917, + "src": "24172:7:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 1946, + "nodeType": "IfStatement", + "src": "24167:99:4", + "trueBody": { + "id": 1945, + "nodeType": "Block", + "src": "24181:85:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 1941, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1936, + "name": "auctions", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 369, + "src": "24191:8:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_DetailAuction_$339_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.DetailAuction storage ref)" + } + }, + "id": 1938, + "indexExpression": { + "argumentTypes": null, + "id": 1937, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1690, + "src": "24200:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "24191:18:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAuction_$339_storage", + "typeString": "struct SmartPiggies.DetailAuction storage ref" + } + }, + "id": 1939, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "satisfyInProgress", + "nodeType": "MemberAccess", + "referencedDeclaration": 338, + "src": "24191:36:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "66616c7365", + "id": 1940, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "24230:5:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "src": "24191:44:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1942, + "nodeType": "ExpressionStatement", + "src": "24191:44:4" + }, + { + "expression": { + "argumentTypes": null, + "hexValue": "66616c7365", + "id": 1943, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "24252:5:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "functionReturnParameters": 1694, + "id": 1944, + "nodeType": "Return", + "src": "24245:12:4" + } + ] + } + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1948, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "24326:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 1950, + "indexExpression": { + "argumentTypes": null, + "id": 1949, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1690, + "src": "24334:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "24326:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 1951, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "addresses", + "nodeType": "MemberAccess", + "referencedDeclaration": 341, + "src": "24326:27:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAddresses_$298_storage", + "typeString": "struct SmartPiggies.DetailAddresses storage ref" + } + }, + "id": 1952, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "holder", + "nodeType": "MemberAccess", + "referencedDeclaration": 289, + "src": "24326:34:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1953, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2820, + "src": "24362:3:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1954, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "24362:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 1955, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1690, + "src": "24374:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1947, + "name": "_internalTransfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1025, + "src": "24308:17:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 1956, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "24308:75:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1957, + "nodeType": "ExpressionStatement", + "src": "24308:75:4" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1959, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2820, + "src": "24421:3:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1960, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "24421:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 1961, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1690, + "src": "24441:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 1962, + "name": "_adjPremium", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1898, + "src": "24459:11:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "hexValue": "30", + "id": 1963, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "24480:1:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + { + "argumentTypes": null, + "id": 1964, + "name": "_auctionPremium", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1740, + "src": "24491:15:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1958, + "name": "SatisfyAuction", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 459, + "src": "24397:14:4", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256,uint256,uint256,uint256)" + } + }, + "id": 1965, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "24397:117:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1966, + "nodeType": "EmitStatement", + "src": "24392:122:4" + } + ] + }, + "id": 1968, + "nodeType": "IfStatement", + "src": "21984:2538:4", + "trueBody": { + "id": 1896, + "nodeType": "Block", + "src": "22023:1627:4", + "statements": [ + { + "assignments": [ + 1758 + ], + "declarations": [ + { + "constant": false, + "id": 1758, + "name": "success", + "nodeType": "VariableDeclaration", + "scope": 1896, + "src": "22083:12:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 1757, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "22083:4:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1776, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1760, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "22130:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 1762, + "indexExpression": { + "argumentTypes": null, + "id": 1761, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1690, + "src": "22138:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "22130:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 1763, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "addresses", + "nodeType": "MemberAccess", + "referencedDeclaration": 341, + "src": "22130:27:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAddresses_$298_storage", + "typeString": "struct SmartPiggies.DetailAddresses storage ref" + } + }, + "id": 1764, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "collateralERC", + "nodeType": "MemberAccess", + "referencedDeclaration": 291, + "src": "22130:41:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1765, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2820, + "src": "22181:3:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1766, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "22181:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1768, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2843, + "src": "22209:4:4", + "typeDescriptions": { + "typeIdentifier": "t_contract$_SmartPiggies_$2805", + "typeString": "contract SmartPiggies" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_SmartPiggies_$2805", + "typeString": "contract SmartPiggies" + } + ], + "id": 1767, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "22201:7:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 1769, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "22201:13:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1770, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "22224:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 1772, + "indexExpression": { + "argumentTypes": null, + "id": 1771, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1690, + "src": "22232:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "22224:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 1773, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "uintDetails", + "nodeType": "MemberAccess", + "referencedDeclaration": 343, + "src": "22224:29:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailUints_$313_storage", + "typeString": "struct SmartPiggies.DetailUints storage ref" + } + }, + "id": 1774, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "reqCollateral", + "nodeType": "MemberAccess", + "referencedDeclaration": 310, + "src": "22224:43:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1759, + "name": "attemptPaymentTransfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 537, + "src": "22098:22:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,address,address,uint256) returns (bool)" + } + }, + "id": 1775, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "22098:177:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "22083:192:4" + }, + { + "condition": { + "argumentTypes": null, + "id": 1778, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "22287:8:4", + "subExpression": { + "argumentTypes": null, + "id": 1777, + "name": "success", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1758, + "src": "22288:7:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 1789, + "nodeType": "IfStatement", + "src": "22283:99:4", + "trueBody": { + "id": 1788, + "nodeType": "Block", + "src": "22297:85:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 1784, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1779, + "name": "auctions", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 369, + "src": "22307:8:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_DetailAuction_$339_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.DetailAuction storage ref)" + } + }, + "id": 1781, + "indexExpression": { + "argumentTypes": null, + "id": 1780, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1690, + "src": "22316:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "22307:18:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAuction_$339_storage", + "typeString": "struct SmartPiggies.DetailAuction storage ref" + } + }, + "id": 1782, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "satisfyInProgress", + "nodeType": "MemberAccess", + "referencedDeclaration": 338, + "src": "22307:36:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "66616c7365", + "id": 1783, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "22346:5:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "src": "22307:44:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1785, + "nodeType": "ExpressionStatement", + "src": "22307:44:4" + }, + { + "expression": { + "argumentTypes": null, + "hexValue": "66616c7365", + "id": 1786, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "22368:5:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "functionReturnParameters": 1694, + "id": 1787, + "nodeType": "Return", + "src": "22361:12:4" + } + ] + } + }, + { + "expression": { + "argumentTypes": null, + "id": 1800, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1790, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "22473:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 1792, + "indexExpression": { + "argumentTypes": null, + "id": 1791, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1690, + "src": "22481:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "22473:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 1793, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "uintDetails", + "nodeType": "MemberAccess", + "referencedDeclaration": 343, + "src": "22473:29:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailUints_$313_storage", + "typeString": "struct SmartPiggies.DetailUints storage ref" + } + }, + "id": 1794, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "collateral", + "nodeType": "MemberAccess", + "referencedDeclaration": 300, + "src": "22473:40:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1795, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "22516:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 1797, + "indexExpression": { + "argumentTypes": null, + "id": 1796, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1690, + "src": "22524:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "22516:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 1798, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "uintDetails", + "nodeType": "MemberAccess", + "referencedDeclaration": 343, + "src": "22516:29:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailUints_$313_storage", + "typeString": "struct SmartPiggies.DetailUints storage ref" + } + }, + "id": 1799, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "reqCollateral", + "nodeType": "MemberAccess", + "referencedDeclaration": 310, + "src": "22516:43:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "22473:86:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1801, + "nodeType": "ExpressionStatement", + "src": "22473:86:4" + }, + { + "assignments": [ + 1803 + ], + "declarations": [ + { + "constant": false, + "id": 1803, + "name": "_change", + "nodeType": "VariableDeclaration", + "scope": 1896, + "src": "22672:15:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1802, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "22672:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1805, + "initialValue": { + "argumentTypes": null, + "hexValue": "30", + "id": 1804, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "22690:1:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "22672:19:4" + }, + { + "assignments": [ + 1807 + ], + "declarations": [ + { + "constant": false, + "id": 1807, + "name": "_adjPremium", + "nodeType": "VariableDeclaration", + "scope": 1896, + "src": "22699:19:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1806, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "22699:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1809, + "initialValue": { + "argumentTypes": null, + "id": 1808, + "name": "_auctionPremium", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1740, + "src": "22721:15:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "22699:37:4" + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1815, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1810, + "name": "_adjPremium", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1807, + "src": "22748:11:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1811, + "name": "auctions", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 369, + "src": "22762:8:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_DetailAuction_$339_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.DetailAuction storage ref)" + } + }, + "id": 1813, + "indexExpression": { + "argumentTypes": null, + "id": 1812, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1690, + "src": "22771:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "22762:18:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAuction_$339_storage", + "typeString": "struct SmartPiggies.DetailAuction storage ref" + } + }, + "id": 1814, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "reservePrice", + "nodeType": "MemberAccess", + "referencedDeclaration": 330, + "src": "22762:31:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "22748:45:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 1834, + "nodeType": "Block", + "src": "22865:77:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 1832, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 1824, + "name": "_change", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1803, + "src": "22875:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1830, + "name": "_adjPremium", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1807, + "src": "22921:11:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1825, + "name": "auctions", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 369, + "src": "22885:8:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_DetailAuction_$339_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.DetailAuction storage ref)" + } + }, + "id": 1827, + "indexExpression": { + "argumentTypes": null, + "id": 1826, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1690, + "src": "22894:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "22885:18:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAuction_$339_storage", + "typeString": "struct SmartPiggies.DetailAuction storage ref" + } + }, + "id": 1828, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "reservePrice", + "nodeType": "MemberAccess", + "referencedDeclaration": 330, + "src": "22885:31:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1829, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sub", + "nodeType": "MemberAccess", + "referencedDeclaration": 200, + "src": "22885:35:4", + "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": 1831, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "22885:48:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "22875:58:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1833, + "nodeType": "ExpressionStatement", + "src": "22875:58:4" + } + ] + }, + "id": 1835, + "nodeType": "IfStatement", + "src": "22744:198:4", + "trueBody": { + "id": 1823, + "nodeType": "Block", + "src": "22795:64:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 1821, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 1816, + "name": "_adjPremium", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1807, + "src": "22805:11:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1817, + "name": "auctions", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 369, + "src": "22819:8:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_DetailAuction_$339_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.DetailAuction storage ref)" + } + }, + "id": 1819, + "indexExpression": { + "argumentTypes": null, + "id": 1818, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1690, + "src": "22828:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "22819:18:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAuction_$339_storage", + "typeString": "struct SmartPiggies.DetailAuction storage ref" + } + }, + "id": 1820, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "reservePrice", + "nodeType": "MemberAccess", + "referencedDeclaration": 330, + "src": "22819:31:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "22805:45:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1822, + "nodeType": "ExpressionStatement", + "src": "22805:45:4" + } + ] + } + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1844, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2820, + "src": "23112:3:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1845, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "23112:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 1846, + "name": "_adjPremium", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1807, + "src": "23124:11:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1837, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "23063:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 1839, + "indexExpression": { + "argumentTypes": null, + "id": 1838, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1690, + "src": "23071:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "23063:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 1840, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "addresses", + "nodeType": "MemberAccess", + "referencedDeclaration": 341, + "src": "23063:27:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAddresses_$298_storage", + "typeString": "struct SmartPiggies.DetailAddresses storage ref" + } + }, + "id": 1841, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "premiumERC", + "nodeType": "MemberAccess", + "referencedDeclaration": 293, + "src": "23063:38:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1836, + "name": "PaymentToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 274, + "src": "23050:12:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_PaymentToken_$274_$", + "typeString": "type(contract PaymentToken)" + } + }, + "id": 1842, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "23050:52:4", + "typeDescriptions": { + "typeIdentifier": "t_contract$_PaymentToken_$274", + "typeString": "contract PaymentToken" + } + }, + "id": 1843, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "transfer", + "nodeType": "MemberAccess", + "referencedDeclaration": 268, + "src": "23050:61:4", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,uint256) external returns (bool)" + } + }, + "id": 1847, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "23050:86:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1848, + "nodeType": "ExpressionStatement", + "src": "23050:86:4" + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1851, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1849, + "name": "_change", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1803, + "src": "23196:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 1850, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "23206:1:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "23196:11:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 1869, + "nodeType": "IfStatement", + "src": "23192:142:4", + "trueBody": { + "id": 1868, + "nodeType": "Block", + "src": "23209:125:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1860, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "23281:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 1862, + "indexExpression": { + "argumentTypes": null, + "id": 1861, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1690, + "src": "23289:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "23281:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 1863, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "addresses", + "nodeType": "MemberAccess", + "referencedDeclaration": 341, + "src": "23281:27:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAddresses_$298_storage", + "typeString": "struct SmartPiggies.DetailAddresses storage ref" + } + }, + "id": 1864, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "holder", + "nodeType": "MemberAccess", + "referencedDeclaration": 289, + "src": "23281:34:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1865, + "name": "_change", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1803, + "src": "23317:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1853, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "23232:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 1855, + "indexExpression": { + "argumentTypes": null, + "id": 1854, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1690, + "src": "23240:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "23232:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 1856, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "addresses", + "nodeType": "MemberAccess", + "referencedDeclaration": 341, + "src": "23232:27:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAddresses_$298_storage", + "typeString": "struct SmartPiggies.DetailAddresses storage ref" + } + }, + "id": 1857, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "premiumERC", + "nodeType": "MemberAccess", + "referencedDeclaration": 293, + "src": "23232:38:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1852, + "name": "PaymentToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 274, + "src": "23219:12:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_PaymentToken_$274_$", + "typeString": "type(contract PaymentToken)" + } + }, + "id": 1858, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "23219:52:4", + "typeDescriptions": { + "typeIdentifier": "t_contract$_PaymentToken_$274", + "typeString": "contract PaymentToken" + } + }, + "id": 1859, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "transfer", + "nodeType": "MemberAccess", + "referencedDeclaration": 268, + "src": "23219:61:4", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,uint256) external returns (bool)" + } + }, + "id": 1866, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "23219:106:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1867, + "nodeType": "ExpressionStatement", + "src": "23219:106:4" + } + ] + } + }, + { + "expression": { + "argumentTypes": null, + "id": 1876, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1870, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "23374:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 1872, + "indexExpression": { + "argumentTypes": null, + "id": 1871, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1690, + "src": "23382:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "23374:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 1873, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "flags", + "nodeType": "MemberAccess", + "referencedDeclaration": 345, + "src": "23374:23:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BoolFlags_$322_storage", + "typeString": "struct SmartPiggies.BoolFlags storage ref" + } + }, + "id": 1874, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "isRequest", + "nodeType": "MemberAccess", + "referencedDeclaration": 315, + "src": "23374:33:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "66616c7365", + "id": 1875, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "23410:5:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "src": "23374:41:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1877, + "nodeType": "ExpressionStatement", + "src": "23374:41:4" + }, + { + "expression": { + "argumentTypes": null, + "id": 1885, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1878, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "23458:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 1880, + "indexExpression": { + "argumentTypes": null, + "id": 1879, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1690, + "src": "23466:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "23458:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 1881, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "addresses", + "nodeType": "MemberAccess", + "referencedDeclaration": 341, + "src": "23458:27:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAddresses_$298_storage", + "typeString": "struct SmartPiggies.DetailAddresses storage ref" + } + }, + "id": 1882, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "writer", + "nodeType": "MemberAccess", + "referencedDeclaration": 287, + "src": "23458:34:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1883, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2820, + "src": "23495:3:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1884, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "23495:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "23458:47:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 1886, + "nodeType": "ExpressionStatement", + "src": "23458:47:4" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1888, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2820, + "src": "23543:3:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1889, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "23543:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 1890, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1690, + "src": "23563:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 1891, + "name": "_adjPremium", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1807, + "src": "23581:11:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 1892, + "name": "_change", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1803, + "src": "23602:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 1893, + "name": "_auctionPremium", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1740, + "src": "23619:15:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1887, + "name": "SatisfyAuction", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 459, + "src": "23519:14:4", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256,uint256,uint256,uint256)" + } + }, + "id": 1894, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "23519:123:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1895, + "nodeType": "EmitStatement", + "src": "23514:128:4" + } + ] + } + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1970, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1690, + "src": "24572:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1969, + "name": "_clearAuctionDetails", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1378, + "src": "24551:20:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$__$", + "typeString": "function (uint256)" + } + }, + "id": 1971, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "24551:30:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1972, + "nodeType": "ExpressionStatement", + "src": "24551:30:4" + }, + { + "expression": { + "argumentTypes": null, + "id": 1978, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1973, + "name": "auctions", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 369, + "src": "24609:8:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_DetailAuction_$339_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.DetailAuction storage ref)" + } + }, + "id": 1975, + "indexExpression": { + "argumentTypes": null, + "id": 1974, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1690, + "src": "24618:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "24609:18:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAuction_$339_storage", + "typeString": "struct SmartPiggies.DetailAuction storage ref" + } + }, + "id": 1976, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "satisfyInProgress", + "nodeType": "MemberAccess", + "referencedDeclaration": 338, + "src": "24609:36:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "66616c7365", + "id": 1977, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "24648:5:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "src": "24609:44:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1979, + "nodeType": "ExpressionStatement", + "src": "24609:44:4" + }, + { + "expression": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 1980, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "24666:4:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 1694, + "id": 1981, + "nodeType": "Return", + "src": "24659:11:4" + } + ] + }, + "documentation": null, + "id": 1983, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "satisfyAuction", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1691, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1690, + "name": "_tokenId", + "nodeType": "VariableDeclaration", + "scope": 1983, + "src": "21056:16:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1689, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "21056:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "21055:18:4" + }, + "returnParameters": { + "id": 1694, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1693, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 1983, + "src": "21098:4:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 1692, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "21098:4:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "21097:6:4" + }, + "scope": 2805, + "src": "21032:3643:4", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 2115, + "nodeType": "Block", + "src": "26380:1259:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + "id": 1998, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1993, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2820, + "src": "26394:3:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1994, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "26394:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 1996, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "26416: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": 1995, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "26408:7:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 1997, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "26408:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "26394:24:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "73656e6465722063616e6e6f7420626520746865207a65726f2061646472657373", + "id": 1999, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "26420:35:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_ad4115bea56432736ed27c403a062ee25e09cc9064ddb968ec7ebe18284352ba", + "typeString": "literal_string \"sender cannot be the zero address\"" + }, + "value": "sender cannot be the zero address" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_ad4115bea56432736ed27c403a062ee25e09cc9064ddb968ec7ebe18284352ba", + "typeString": "literal_string \"sender cannot be the zero address\"" + } + ], + "id": 1992, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2823, + 2824 + ], + "referencedDeclaration": 2824, + "src": "26386:7:4", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 2000, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "26386:70:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2001, + "nodeType": "ExpressionStatement", + "src": "26386:70:4" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2007, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "26533:33:4", + "subExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2003, + "name": "auctions", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 369, + "src": "26534:8:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_DetailAuction_$339_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.DetailAuction storage ref)" + } + }, + "id": 2005, + "indexExpression": { + "argumentTypes": null, + "id": 2004, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1985, + "src": "26543:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "26534:18:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAuction_$339_storage", + "typeString": "struct SmartPiggies.DetailAuction storage ref" + } + }, + "id": 2006, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "auctionActive", + "nodeType": "MemberAccess", + "referencedDeclaration": 336, + "src": "26534:32:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "63616e6e6f7420636c656172206120746f6b656e207768696c652061756374696f6e20697320616374697665", + "id": 2008, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "26568:46:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_e4ca701426be01735c162fff9ee04dad7379e543cf6beb835093efb705fd1026", + "typeString": "literal_string \"cannot clear a token while auction is active\"" + }, + "value": "cannot clear a token while auction is active" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_e4ca701426be01735c162fff9ee04dad7379e543cf6beb835093efb705fd1026", + "typeString": "literal_string \"cannot clear a token while auction is active\"" + } + ], + "id": 2002, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2823, + 2824 + ], + "referencedDeclaration": 2824, + "src": "26525:7:4", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 2009, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "26525:90:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2010, + "nodeType": "ExpressionStatement", + "src": "26525:90:4" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2017, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "26629:39:4", + "subExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2012, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "26630:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 2014, + "indexExpression": { + "argumentTypes": null, + "id": 2013, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1985, + "src": "26638:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "26630:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 2015, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "flags", + "nodeType": "MemberAccess", + "referencedDeclaration": 345, + "src": "26630:23:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BoolFlags_$322_storage", + "typeString": "struct SmartPiggies.BoolFlags storage ref" + } + }, + "id": 2016, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "hasBeenCleared", + "nodeType": "MemberAccess", + "referencedDeclaration": 321, + "src": "26630:38:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "746f6b656e2068617320616c7265616479206265656e20636c6561726564", + "id": 2018, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "26670:32:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_ab94240cb90c148b324880de3f30539922fa48badec3a654065a4231cfad07a4", + "typeString": "literal_string \"token has already been cleared\"" + }, + "value": "token has already been cleared" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_ab94240cb90c148b324880de3f30539922fa48badec3a654065a4231cfad07a4", + "typeString": "literal_string \"token has already been cleared\"" + } + ], + "id": 2011, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2823, + 2824 + ], + "referencedDeclaration": 2824, + "src": "26621:7:4", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 2019, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "26621:82:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2020, + "nodeType": "ExpressionStatement", + "src": "26621:82:4" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2024, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2022, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1985, + "src": "26783:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 2023, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "26795:1:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "26783:13:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "5f746f6b656e49642063616e6e6f74206265207a65726f", + "id": 2025, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "26798:25:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_2f700274588ee4557177665c8ed74d76c18015ed2878f7ebb5d0d398460b950d", + "typeString": "literal_string \"_tokenId cannot be zero\"" + }, + "value": "_tokenId cannot be zero" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_2f700274588ee4557177665c8ed74d76c18015ed2878f7ebb5d0d398460b950d", + "typeString": "literal_string \"_tokenId cannot be zero\"" + } + ], + "id": 2021, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2823, + 2824 + ], + "referencedDeclaration": 2824, + "src": "26775:7:4", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 2026, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "26775:49:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2027, + "nodeType": "ExpressionStatement", + "src": "26775:49:4" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2031, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2029, + "name": "_oracleFee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1987, + "src": "26838:10:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 2030, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "26852:1:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "26838:15:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "6f7261636c65206665652063616e6e6f74206265207a65726f", + "id": 2032, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "26855:27:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_0db8fe92326f442d19f70ee9735d4588e3a3e39253e476edcfda4f7f1af78339", + "typeString": "literal_string \"oracle fee cannot be zero\"" + }, + "value": "oracle fee cannot be zero" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_0db8fe92326f442d19f70ee9735d4588e3a3e39253e476edcfda4f7f1af78339", + "typeString": "literal_string \"oracle fee cannot be zero\"" + } + ], + "id": 2028, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2823, + 2824 + ], + "referencedDeclaration": 2824, + "src": "26830:7:4", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 2033, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "26830:53:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2034, + "nodeType": "ExpressionStatement", + "src": "26830:53:4" + }, + { + "condition": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2035, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "26927:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 2037, + "indexExpression": { + "argumentTypes": null, + "id": 2036, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1985, + "src": "26935:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "26927:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 2038, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "flags", + "nodeType": "MemberAccess", + "referencedDeclaration": 345, + "src": "26927:23:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BoolFlags_$322_storage", + "typeString": "struct SmartPiggies.BoolFlags storage ref" + } + }, + "id": 2039, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "isEuro", + "nodeType": "MemberAccess", + "referencedDeclaration": 317, + "src": "26927:30:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 2052, + "nodeType": "IfStatement", + "src": "26923:112:4", + "trueBody": { + "id": 2051, + "nodeType": "Block", + "src": "26959:76:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2048, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2041, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "26975:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 2043, + "indexExpression": { + "argumentTypes": null, + "id": 2042, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1985, + "src": "26983:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "26975:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 2044, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "uintDetails", + "nodeType": "MemberAccess", + "referencedDeclaration": 343, + "src": "26975:29:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailUints_$313_storage", + "typeString": "struct SmartPiggies.DetailUints storage ref" + } + }, + "id": 2045, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "expiry", + "nodeType": "MemberAccess", + "referencedDeclaration": 306, + "src": "26975:36:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<=", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 2046, + "name": "block", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2810, + "src": "27015:5:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_block", + "typeString": "block" + } + }, + "id": 2047, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "number", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "27015:12:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "26975:52:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 2040, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2823, + 2824 + ], + "referencedDeclaration": 2823, + "src": "26967:7:4", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 2049, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "26967:61:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2050, + "nodeType": "ExpressionStatement", + "src": "26967:61:4" + } + ] + } + }, + { + "assignments": [ + 2054 + ], + "declarations": [ + { + "constant": false, + "id": 2054, + "name": "_dataResolver", + "nodeType": "VariableDeclaration", + "scope": 2115, + "src": "27084:21:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2053, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "27084:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 2055, + "initialValue": null, + "nodeType": "VariableDeclarationStatement", + "src": "27084:21:4" + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 2070, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2056, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "27115:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 2058, + "indexExpression": { + "argumentTypes": null, + "id": 2057, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1985, + "src": "27123:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "27115:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 2059, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "flags", + "nodeType": "MemberAccess", + "referencedDeclaration": 345, + "src": "27115:23:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BoolFlags_$322_storage", + "typeString": "struct SmartPiggies.BoolFlags storage ref" + } + }, + "id": 2060, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "isEuro", + "nodeType": "MemberAccess", + "referencedDeclaration": 317, + "src": "27115:30:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2068, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2061, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "27150:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 2063, + "indexExpression": { + "argumentTypes": null, + "id": 2062, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1985, + "src": "27158:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "27150:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 2064, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "uintDetails", + "nodeType": "MemberAccess", + "referencedDeclaration": 343, + "src": "27150:29:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailUints_$313_storage", + "typeString": "struct SmartPiggies.DetailUints storage ref" + } + }, + "id": 2065, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "expiry", + "nodeType": "MemberAccess", + "referencedDeclaration": 306, + "src": "27150:36:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 2066, + "name": "block", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2810, + "src": "27189:5:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_block", + "typeString": "block" + } + }, + "id": 2067, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "number", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "27189:12:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "27150:51:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "id": 2069, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "27149:53:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "27115:87:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 2100, + "nodeType": "Block", + "src": "27293:208:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 2088, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 2081, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2820, + "src": "27309:3:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 2082, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "27309:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2083, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "27323:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 2085, + "indexExpression": { + "argumentTypes": null, + "id": 2084, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1985, + "src": "27331:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "27323:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 2086, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "addresses", + "nodeType": "MemberAccess", + "referencedDeclaration": 341, + "src": "27323:27:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAddresses_$298_storage", + "typeString": "struct SmartPiggies.DetailAddresses storage ref" + } + }, + "id": 2087, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "holder", + "nodeType": "MemberAccess", + "referencedDeclaration": 289, + "src": "27323:34:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "27309:48:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "6f6e6c792074686520686f6c6465722063616e20736574746c6520616e20416d65726963616e207374796c65206f7074696f6e206265666f726520657870697279", + "id": 2089, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "27359:67:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_e638b15f125c8aef048b8486194c7d2b0eb1011ee42fac359a0c27aed937b109", + "typeString": "literal_string \"only the holder can settle an American style option before expiry\"" + }, + "value": "only the holder can settle an American style option before expiry" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_e638b15f125c8aef048b8486194c7d2b0eb1011ee42fac359a0c27aed937b109", + "typeString": "literal_string \"only the holder can settle an American style option before expiry\"" + } + ], + "id": 2080, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2823, + 2824 + ], + "referencedDeclaration": 2824, + "src": "27301:7:4", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 2090, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "27301:126:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2091, + "nodeType": "ExpressionStatement", + "src": "27301:126:4" + }, + { + "expression": { + "argumentTypes": null, + "id": 2098, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 2092, + "name": "_dataResolver", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2054, + "src": "27435:13:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2093, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "27451:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 2095, + "indexExpression": { + "argumentTypes": null, + "id": 2094, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1985, + "src": "27459:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "27451:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 2096, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "addresses", + "nodeType": "MemberAccess", + "referencedDeclaration": 341, + "src": "27451:27:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAddresses_$298_storage", + "typeString": "struct SmartPiggies.DetailAddresses storage ref" + } + }, + "id": 2097, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "dataResolverNow", + "nodeType": "MemberAccess", + "referencedDeclaration": 295, + "src": "27451:43:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "27435:59:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 2099, + "nodeType": "ExpressionStatement", + "src": "27435:59:4" + } + ] + }, + "id": 2101, + "nodeType": "IfStatement", + "src": "27111:390:4", + "trueBody": { + "id": 2079, + "nodeType": "Block", + "src": "27208:79:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 2077, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 2071, + "name": "_dataResolver", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2054, + "src": "27216:13:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2072, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "27232:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 2074, + "indexExpression": { + "argumentTypes": null, + "id": 2073, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1985, + "src": "27240:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "27232:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 2075, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "addresses", + "nodeType": "MemberAccess", + "referencedDeclaration": 341, + "src": "27232:27:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAddresses_$298_storage", + "typeString": "struct SmartPiggies.DetailAddresses storage ref" + } + }, + "id": 2076, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "dataResolverAtExpiry", + "nodeType": "MemberAccess", + "referencedDeclaration": 297, + "src": "27232:48:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "27216:64:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 2078, + "nodeType": "ExpressionStatement", + "src": "27216:64:4" + } + ] + } + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2104, + "name": "_dataResolver", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2054, + "src": "27528:13:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 2105, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2820, + "src": "27543:3:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 2106, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "27543:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 2107, + "name": "_oracleFee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1987, + "src": "27555:10:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 2108, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1985, + "src": "27567:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 2103, + "name": "_callResolver", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2159, + "src": "27514:13:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,address,uint256,uint256) returns (bool)" + } + }, + "id": 2109, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "27514:62:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "63616c6c20746f207265736f6c76657220646964206e6f742072657475726e2074727565", + "id": 2110, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "27578:38:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_c7d5d1fb1a904d51b7573bd7503cbbffa6841f2e9d1a1819b91902b71dc327b4", + "typeString": "literal_string \"call to resolver did not return true\"" + }, + "value": "call to resolver did not return true" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_c7d5d1fb1a904d51b7573bd7503cbbffa6841f2e9d1a1819b91902b71dc327b4", + "typeString": "literal_string \"call to resolver did not return true\"" + } + ], + "id": 2102, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2823, + 2824 + ], + "referencedDeclaration": 2824, + "src": "27506:7:4", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 2111, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "27506:111:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2112, + "nodeType": "ExpressionStatement", + "src": "27506:111:4" + }, + { + "expression": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 2113, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "27630:4:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 1991, + "id": 2114, + "nodeType": "Return", + "src": "27623:11:4" + } + ] + }, + "documentation": "@notice Call the oracle to fetch the settlement price\n@dev Throws if `_tokenId` is not a valid ERC-59 token.\nThrows if `_oracle` is not a valid contract address.\nThrows if `onMarket(_tokenId)` is true.\nIf `isEuro` is true for the specified token, throws if `_expiry` > block.number.\nIf `isEuro` is true for the specified token, throws if `_priceNow` is true. [OR specify that it flips that to false always (?)]\nIf `priceNow` is true, throws if block.number > `_expiry` for the specified token.\nIf `priceNow` is false, throws if block.number < `_expiry` for the specified token.\nIf `priceNow` is true, calls the oracle to request the `_underlyingNow` value for the token.\nIf `priceNow` is false, calls the oracle to request the `_underlyingExpiry` value for the token.\nDepending on the oracle service implemented, additional state will need to be referenced in\norder to call the oracle, e.g. an endpoint to fetch. This state handling will need to be\nmanaged on an implementation basis for specific oracle services.\n@param _tokenId The identifier of the specific ERC-59 token for which to fetch a settlement price\n_oracle The address of the oracle contract used to fetch the external settlement price\n_priceNow A boolean for specifying whether to fetch a \"live\" price or a fixed price at\nexpiry of the option\n@return The settlement price from the oracle to be used in `settleOption()`", + "id": 2116, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "requestSettlementPrice", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1988, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1985, + "name": "_tokenId", + "nodeType": "VariableDeclaration", + "scope": 2116, + "src": "26222:16:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1984, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "26222:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1987, + "name": "_oracleFee", + "nodeType": "VariableDeclaration", + "scope": 2116, + "src": "26240:18:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1986, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "26240:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "26221:38:4" + }, + "returnParameters": { + "id": 1991, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1990, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 2116, + "src": "26372:4:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 1989, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "26372:4:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "26371:6:4" + }, + "scope": 2805, + "src": "26190:1449:4", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 2158, + "nodeType": "Block", + "src": "27780:354:4", + "statements": [ + { + "assignments": [ + 2130, + null + ], + "declarations": [ + { + "constant": false, + "id": 2130, + "name": "success", + "nodeType": "VariableDeclaration", + "scope": 2158, + "src": "27787:12:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 2129, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "27787:4:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + }, + null + ], + "id": 2143, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "66657463684461746128616464726573732c75696e743235362c75696e7432353629", + "id": 2137, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "27864:36:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_1aa8ccc93b3cc911b48ca8541328b478b706a0fda711a61bfb3228bb961bc27f", + "typeString": "literal_string \"fetchData(address,uint256,uint256)\"" + }, + "value": "fetchData(address,uint256,uint256)" + }, + { + "argumentTypes": null, + "id": 2138, + "name": "_feePayer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2120, + "src": "27902:9:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 2139, + "name": "_oracleFee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2122, + "src": "27913:10:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 2140, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2124, + "src": "27925:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_1aa8ccc93b3cc911b48ca8541328b478b706a0fda711a61bfb3228bb961bc27f", + "typeString": "literal_string \"fetchData(address,uint256,uint256)\"" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 2135, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2807, + "src": "27840:3:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 2136, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "encodeWithSignature", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "27840:23:4", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$", + "typeString": "function (string memory) pure returns (bytes memory)" + } + }, + "id": 2141, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "27840:94:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2132, + "name": "_dataResolver", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2118, + "src": "27813:13:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 2131, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "27805:7:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 2133, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "27805:22:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 2134, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "call", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "27805:27:4", + "typeDescriptions": { + "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$", + "typeString": "function (bytes memory) payable returns (bool,bytes memory)" + } + }, + "id": 2142, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "27805:135:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$", + "typeString": "tuple(bool,bytes memory)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "27786:154:4" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2145, + "name": "success", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2130, + "src": "27954:7:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "6665746368207375636365737320646964206e6f742072657475726e2074727565", + "id": 2146, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "27963:35:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_994cb985e31ba3aa28e93aea8c8314dc6e57927397544c60b1b2f03735f47644", + "typeString": "literal_string \"fetch success did not return true\"" + }, + "value": "fetch success did not return true" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_994cb985e31ba3aa28e93aea8c8314dc6e57927397544c60b1b2f03735f47644", + "typeString": "literal_string \"fetch success did not return true\"" + } + ], + "id": 2144, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2823, + 2824 + ], + "referencedDeclaration": 2824, + "src": "27946:7:4", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 2147, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "27946:53:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2148, + "nodeType": "ExpressionStatement", + "src": "27946:53:4" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2150, + "name": "_feePayer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2120, + "src": "28041:9:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 2151, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2124, + "src": "28058:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 2152, + "name": "_oracleFee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2122, + "src": "28074:10:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 2153, + "name": "_dataResolver", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2118, + "src": "28092:13:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 2149, + "name": "RequestSettlementPrice", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 469, + "src": "28011:22:4", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_address_$returns$__$", + "typeString": "function (address,uint256,uint256,address)" + } + }, + "id": 2154, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "28011:100:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2155, + "nodeType": "EmitStatement", + "src": "28006:105:4" + }, + { + "expression": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 2156, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "28125:4:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 2128, + "id": 2157, + "nodeType": "Return", + "src": "28118:11:4" + } + ] + }, + "documentation": null, + "id": 2159, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_callResolver", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2125, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2118, + "name": "_dataResolver", + "nodeType": "VariableDeclaration", + "scope": 2159, + "src": "27666:21:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2117, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "27666:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2120, + "name": "_feePayer", + "nodeType": "VariableDeclaration", + "scope": 2159, + "src": "27689:17:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2119, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "27689:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2122, + "name": "_oracleFee", + "nodeType": "VariableDeclaration", + "scope": 2159, + "src": "27708:18:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2121, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "27708:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2124, + "name": "_tokenId", + "nodeType": "VariableDeclaration", + "scope": 2159, + "src": "27728:16:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2123, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "27728:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "27665:80:4" + }, + "returnParameters": { + "id": 2128, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2127, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 2159, + "src": "27772:4:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 2126, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "27772:4:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "27771:6:4" + }, + "scope": 2805, + "src": "27643:491:4", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 2234, + "nodeType": "Block", + "src": "28216:615:4", + "statements": [ + { + "assignments": [ + 2167 + ], + "declarations": [ + { + "constant": false, + "id": 2167, + "name": "_dataResolver", + "nodeType": "VariableDeclaration", + "scope": 2234, + "src": "28222:21:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2166, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "28222:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 2168, + "initialValue": null, + "nodeType": "VariableDeclarationStatement", + "src": "28222:21:4" + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 2183, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2169, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "28253:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 2171, + "indexExpression": { + "argumentTypes": null, + "id": 2170, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2161, + "src": "28261:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "28253:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 2172, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "flags", + "nodeType": "MemberAccess", + "referencedDeclaration": 345, + "src": "28253:23:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BoolFlags_$322_storage", + "typeString": "struct SmartPiggies.BoolFlags storage ref" + } + }, + "id": 2173, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "isEuro", + "nodeType": "MemberAccess", + "referencedDeclaration": 317, + "src": "28253:30:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2181, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2174, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "28288:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 2176, + "indexExpression": { + "argumentTypes": null, + "id": 2175, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2161, + "src": "28296:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "28288:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 2177, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "uintDetails", + "nodeType": "MemberAccess", + "referencedDeclaration": 343, + "src": "28288:29:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailUints_$313_storage", + "typeString": "struct SmartPiggies.DetailUints storage ref" + } + }, + "id": 2178, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "expiry", + "nodeType": "MemberAccess", + "referencedDeclaration": 306, + "src": "28288:36:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 2179, + "name": "block", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2810, + "src": "28327:5:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_block", + "typeString": "block" + } + }, + "id": 2180, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "number", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "28327:12:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "28288:51:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "id": 2182, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "28287:53:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "28253:87:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 2201, + "nodeType": "Block", + "src": "28431:74:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 2199, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 2193, + "name": "_dataResolver", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2167, + "src": "28439:13:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2194, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "28455:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 2196, + "indexExpression": { + "argumentTypes": null, + "id": 2195, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2161, + "src": "28463:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "28455:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 2197, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "addresses", + "nodeType": "MemberAccess", + "referencedDeclaration": 341, + "src": "28455:27:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAddresses_$298_storage", + "typeString": "struct SmartPiggies.DetailAddresses storage ref" + } + }, + "id": 2198, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "dataResolverNow", + "nodeType": "MemberAccess", + "referencedDeclaration": 295, + "src": "28455:43:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "28439:59:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 2200, + "nodeType": "ExpressionStatement", + "src": "28439:59:4" + } + ] + }, + "id": 2202, + "nodeType": "IfStatement", + "src": "28249:256:4", + "trueBody": { + "id": 2192, + "nodeType": "Block", + "src": "28346:79:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 2190, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 2184, + "name": "_dataResolver", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2167, + "src": "28354:13:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2185, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "28370:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 2187, + "indexExpression": { + "argumentTypes": null, + "id": 2186, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2161, + "src": "28378:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "28370:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 2188, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "addresses", + "nodeType": "MemberAccess", + "referencedDeclaration": 341, + "src": "28370:27:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAddresses_$298_storage", + "typeString": "struct SmartPiggies.DetailAddresses storage ref" + } + }, + "id": 2189, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "dataResolverAtExpiry", + "nodeType": "MemberAccess", + "referencedDeclaration": 297, + "src": "28370:48:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "28354:64:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 2191, + "nodeType": "ExpressionStatement", + "src": "28354:64:4" + } + ] + } + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 2207, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 2204, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2820, + "src": "28518:3:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 2205, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "28518:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 2206, + "name": "_dataResolver", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2167, + "src": "28532:13:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "28518:27:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "7265736f6c7665206164647265737320776173206e6f7420636f7272656374", + "id": 2208, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "28547:33:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_2e33e22d72fdb46becf75c42e09581fa0441b6719e3574fb9d745f9b7a787af7", + "typeString": "literal_string \"resolve address was not correct\"" + }, + "value": "resolve address was not correct" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_2e33e22d72fdb46becf75c42e09581fa0441b6719e3574fb9d745f9b7a787af7", + "typeString": "literal_string \"resolve address was not correct\"" + } + ], + "id": 2203, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2823, + 2824 + ], + "referencedDeclaration": 2824, + "src": "28510:7:4", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 2209, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "28510:71:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2210, + "nodeType": "ExpressionStatement", + "src": "28510:71:4" + }, + { + "expression": { + "argumentTypes": null, + "id": 2217, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2211, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "28640:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 2213, + "indexExpression": { + "argumentTypes": null, + "id": 2212, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2161, + "src": "28648:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "28640:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 2214, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "uintDetails", + "nodeType": "MemberAccess", + "referencedDeclaration": 343, + "src": "28640:29:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailUints_$313_storage", + "typeString": "struct SmartPiggies.DetailUints storage ref" + } + }, + "id": 2215, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "settlementPrice", + "nodeType": "MemberAccess", + "referencedDeclaration": 308, + "src": "28640:45:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 2216, + "name": "_price", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2163, + "src": "28688:6:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "28640:54:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2218, + "nodeType": "ExpressionStatement", + "src": "28640:54:4" + }, + { + "expression": { + "argumentTypes": null, + "id": 2225, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2219, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "28700:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 2221, + "indexExpression": { + "argumentTypes": null, + "id": 2220, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2161, + "src": "28708:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "28700:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 2222, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "flags", + "nodeType": "MemberAccess", + "referencedDeclaration": 345, + "src": "28700:23:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BoolFlags_$322_storage", + "typeString": "struct SmartPiggies.BoolFlags storage ref" + } + }, + "id": 2223, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "hasBeenCleared", + "nodeType": "MemberAccess", + "referencedDeclaration": 321, + "src": "28700:38:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 2224, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "28741:4:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "src": "28700:45:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2226, + "nodeType": "ExpressionStatement", + "src": "28700:45:4" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 2228, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2820, + "src": "28779:3:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 2229, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "28779:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 2230, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2161, + "src": "28797:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 2231, + "name": "_price", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2163, + "src": "28813:6:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 2227, + "name": "OracleReturned", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 477, + "src": "28757:14:4", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256,uint256)" + } + }, + "id": 2232, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "28757:68:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2233, + "nodeType": "EmitStatement", + "src": "28752:73:4" + } + ] + }, + "documentation": null, + "id": 2235, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_callback", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2164, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2161, + "name": "_tokenId", + "nodeType": "VariableDeclaration", + "scope": 2235, + "src": "28162:16:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2160, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "28162:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2163, + "name": "_price", + "nodeType": "VariableDeclaration", + "scope": 2235, + "src": "28184:14:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2162, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "28184:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "28156:46:4" + }, + "returnParameters": { + "id": 2165, + "nodeType": "ParameterList", + "parameters": [], + "src": "28216:0:4" + }, + "scope": 2805, + "src": "28138:693:4", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 2300, + "nodeType": "Block", + "src": "29522:318:4", + "statements": [ + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 2255, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2250, + "name": "_isPut", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2237, + "src": "29532:6:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2253, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2251, + "name": "_strikePrice", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2241, + "src": "29543:12:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "id": 2252, + "name": "_exercisePrice", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2239, + "src": "29558:14:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "29543:29:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "id": 2254, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "29542:31:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "29532:41:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 2264, + "nodeType": "IfStatement", + "src": "29528:104:4", + "trueBody": { + "id": 2263, + "nodeType": "Block", + "src": "29575:57:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 2261, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 2256, + "name": "_payout", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2248, + "src": "29583:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2259, + "name": "_exercisePrice", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2239, + "src": "29610:14:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 2257, + "name": "_strikePrice", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2241, + "src": "29593:12:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2258, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sub", + "nodeType": "MemberAccess", + "referencedDeclaration": 200, + "src": "29593:16:4", + "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": 2260, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "29593:32:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "29583:42:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2262, + "nodeType": "ExpressionStatement", + "src": "29583:42:4" + } + ] + } + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 2271, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2266, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "29641:7:4", + "subExpression": { + "argumentTypes": null, + "id": 2265, + "name": "_isPut", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2237, + "src": "29642:6:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2269, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2267, + "name": "_exercisePrice", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2239, + "src": "29653:14:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "id": 2268, + "name": "_strikePrice", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2241, + "src": "29670:12:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "29653:29:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "id": 2270, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "29652:31:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "29641:42:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 2280, + "nodeType": "IfStatement", + "src": "29637:105:4", + "trueBody": { + "id": 2279, + "nodeType": "Block", + "src": "29685:57:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 2277, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 2272, + "name": "_payout", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2248, + "src": "29693:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2275, + "name": "_strikePrice", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2241, + "src": "29722:12:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 2273, + "name": "_exercisePrice", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2239, + "src": "29703:14:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2274, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sub", + "nodeType": "MemberAccess", + "referencedDeclaration": 200, + "src": "29703:18:4", + "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": 2276, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "29703:32:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "29693:42:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2278, + "nodeType": "ExpressionStatement", + "src": "29693:42:4" + } + ] + } + }, + { + "expression": { + "argumentTypes": null, + "id": 2296, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 2281, + "name": "_payout", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2248, + "src": "29747:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "313030", + "id": 2294, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "29811:3:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_100_by_1", + "typeString": "int_const 100" + }, + "value": "100" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_100_by_1", + "typeString": "int_const 100" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2291, + "name": "_lotSize", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2243, + "src": "29797:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2288, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "hexValue": "3130", + "id": 2284, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "29769:2:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_10_by_1", + "typeString": "int_const 10" + }, + "value": "10" + }, + "nodeType": "BinaryOperation", + "operator": "**", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2286, + "name": "_decimals", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2245, + "src": "29781:9:4", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + ], + "id": 2285, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "29773:7:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": "uint256" + }, + "id": 2287, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "29773:18:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "29769:22:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 2282, + "name": "_payout", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2248, + "src": "29757:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2283, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "mul", + "nodeType": "MemberAccess", + "referencedDeclaration": 152, + "src": "29757:11:4", + "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": 2289, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "29757:35:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2290, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "mul", + "nodeType": "MemberAccess", + "referencedDeclaration": 152, + "src": "29757:39:4", + "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": 2292, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "29757:49:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2293, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "div", + "nodeType": "MemberAccess", + "referencedDeclaration": 176, + "src": "29757:53:4", + "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": 2295, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "29757:58:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "29747:68:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2297, + "nodeType": "ExpressionStatement", + "src": "29747:68:4" + }, + { + "expression": { + "argumentTypes": null, + "id": 2298, + "name": "_payout", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2248, + "src": "29828:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 2249, + "id": 2299, + "nodeType": "Return", + "src": "29821:14:4" + } + ] + }, + "documentation": null, + "id": 2301, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_calculateLongPayout", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2246, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2237, + "name": "_isPut", + "nodeType": "VariableDeclaration", + "scope": 2301, + "src": "29355:11:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 2236, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "29355:4:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2239, + "name": "_exercisePrice", + "nodeType": "VariableDeclaration", + "scope": 2301, + "src": "29372:22:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2238, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "29372:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2241, + "name": "_strikePrice", + "nodeType": "VariableDeclaration", + "scope": 2301, + "src": "29400:20:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2240, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "29400:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2243, + "name": "_lotSize", + "nodeType": "VariableDeclaration", + "scope": 2301, + "src": "29426:16:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2242, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "29426:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2245, + "name": "_decimals", + "nodeType": "VariableDeclaration", + "scope": 2301, + "src": "29448:15:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 2244, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "29448:5:4", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "29349:118:4" + }, + "returnParameters": { + "id": 2249, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2248, + "name": "_payout", + "nodeType": "VariableDeclaration", + "scope": 2301, + "src": "29503:15:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2247, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "29503:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "29502:17:4" + }, + "scope": 2805, + "src": "29320:520:4", + "stateMutability": "pure", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 2483, + "nodeType": "Block", + "src": "30424:1562:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + "id": 2314, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 2309, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2820, + "src": "30439:3:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 2310, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "30439:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 2312, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "30461: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": 2311, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "30453:7:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 2313, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "30453:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "30439:24:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "6d73672e73656e6465722063616e6e6f74206265207a65726f", + "id": 2315, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "30465:27:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_aeea01aec3d95cf400af77b2a4e70b183892b8ffc254fd451f8406644a4f5d73", + "typeString": "literal_string \"msg.sender cannot be zero\"" + }, + "value": "msg.sender cannot be zero" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_aeea01aec3d95cf400af77b2a4e70b183892b8ffc254fd451f8406644a4f5d73", + "typeString": "literal_string \"msg.sender cannot be zero\"" + } + ], + "id": 2308, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2823, + 2824 + ], + "referencedDeclaration": 2824, + "src": "30431:7:4", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 2316, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "30431:62:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2317, + "nodeType": "ExpressionStatement", + "src": "30431:62:4" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2321, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2319, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2303, + "src": "30508:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 2320, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "30520:1:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "30508:13:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "746f6b656e49642063616e6e6f74206265207a65726f", + "id": 2322, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "30523:24:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_a89f543142a9de2b46f7eadcab6442212c082feaf16ab44efe1b01aae149b6cd", + "typeString": "literal_string \"tokenId cannot be zero\"" + }, + "value": "tokenId cannot be zero" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_a89f543142a9de2b46f7eadcab6442212c082feaf16ab44efe1b01aae149b6cd", + "typeString": "literal_string \"tokenId cannot be zero\"" + } + ], + "id": 2318, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2823, + 2824 + ], + "referencedDeclaration": 2824, + "src": "30500:7:4", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 2323, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "30500:48:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2324, + "nodeType": "ExpressionStatement", + "src": "30500:48:4" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2326, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "30563:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 2328, + "indexExpression": { + "argumentTypes": null, + "id": 2327, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2303, + "src": "30571:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "30563:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 2329, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "flags", + "nodeType": "MemberAccess", + "referencedDeclaration": 345, + "src": "30563:23:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BoolFlags_$322_storage", + "typeString": "struct SmartPiggies.BoolFlags storage ref" + } + }, + "id": 2330, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "hasBeenCleared", + "nodeType": "MemberAccess", + "referencedDeclaration": 321, + "src": "30563:38:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "706967677920686173206e6f7420726563656976656420616e206f7261636c65207072696365", + "id": 2331, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "30603:40:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_77f757b31a7d00a4ce5c81894c0f959249e455b423814404b4cbee93af3b92f8", + "typeString": "literal_string \"piggy has not received an oracle price\"" + }, + "value": "piggy has not received an oracle price" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_77f757b31a7d00a4ce5c81894c0f959249e455b423814404b4cbee93af3b92f8", + "typeString": "literal_string \"piggy has not received an oracle price\"" + } + ], + "id": 2325, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2823, + 2824 + ], + "referencedDeclaration": 2824, + "src": "30555:7:4", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 2332, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "30555:89:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2333, + "nodeType": "ExpressionStatement", + "src": "30555:89:4" + }, + { + "assignments": [ + 2335 + ], + "declarations": [ + { + "constant": false, + "id": 2335, + "name": "payout", + "nodeType": "VariableDeclaration", + "scope": 2483, + "src": "30652:14:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2334, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "30652:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 2336, + "initialValue": null, + "nodeType": "VariableDeclarationStatement", + "src": "30652:14:4" + }, + { + "condition": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2337, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "30677:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 2339, + "indexExpression": { + "argumentTypes": null, + "id": 2338, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2303, + "src": "30685:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "30677:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 2340, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "flags", + "nodeType": "MemberAccess", + "referencedDeclaration": 345, + "src": "30677:23:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BoolFlags_$322_storage", + "typeString": "struct SmartPiggies.BoolFlags storage ref" + } + }, + "id": 2341, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "isEuro", + "nodeType": "MemberAccess", + "referencedDeclaration": 317, + "src": "30677:30:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 2355, + "nodeType": "IfStatement", + "src": "30674:152:4", + "trueBody": { + "id": 2354, + "nodeType": "Block", + "src": "30709:117:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2350, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2343, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "30726:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 2345, + "indexExpression": { + "argumentTypes": null, + "id": 2344, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2303, + "src": "30734:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "30726:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 2346, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "uintDetails", + "nodeType": "MemberAccess", + "referencedDeclaration": 343, + "src": "30726:29:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailUints_$313_storage", + "typeString": "struct SmartPiggies.DetailUints storage ref" + } + }, + "id": 2347, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "expiry", + "nodeType": "MemberAccess", + "referencedDeclaration": 306, + "src": "30726:36:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<=", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 2348, + "name": "block", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2810, + "src": "30766:5:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_block", + "typeString": "block" + } + }, + "id": 2349, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "number", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "30766:12:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "30726:52:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "4575726f7065616e206f7074696f6e206e6565647320746f2062652065787069726564", + "id": 2351, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "30780:37:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_f22195ac208b1677643fe01bd7203cde67ce97a0dc3e538e1b1786a2cd90c614", + "typeString": "literal_string \"European option needs to be expired\"" + }, + "value": "European option needs to be expired" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_f22195ac208b1677643fe01bd7203cde67ce97a0dc3e538e1b1786a2cd90c614", + "typeString": "literal_string \"European option needs to be expired\"" + } + ], + "id": 2342, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2823, + 2824 + ], + "referencedDeclaration": 2824, + "src": "30718:7:4", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 2352, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "30718:100:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2353, + "nodeType": "ExpressionStatement", + "src": "30718:100:4" + } + ] + } + }, + { + "expression": { + "argumentTypes": null, + "id": 2384, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 2356, + "name": "payout", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2335, + "src": "30832:6:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2358, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "30872:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 2360, + "indexExpression": { + "argumentTypes": null, + "id": 2359, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2303, + "src": "30880:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "30872:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 2361, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "flags", + "nodeType": "MemberAccess", + "referencedDeclaration": 345, + "src": "30872:23:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BoolFlags_$322_storage", + "typeString": "struct SmartPiggies.BoolFlags storage ref" + } + }, + "id": 2362, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "isPut", + "nodeType": "MemberAccess", + "referencedDeclaration": 319, + "src": "30872:29:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2363, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "30912:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 2365, + "indexExpression": { + "argumentTypes": null, + "id": 2364, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2303, + "src": "30920:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "30912:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 2366, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "uintDetails", + "nodeType": "MemberAccess", + "referencedDeclaration": 343, + "src": "30912:29:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailUints_$313_storage", + "typeString": "struct SmartPiggies.DetailUints storage ref" + } + }, + "id": 2367, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "settlementPrice", + "nodeType": "MemberAccess", + "referencedDeclaration": 308, + "src": "30912:45:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2368, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "30968:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 2370, + "indexExpression": { + "argumentTypes": null, + "id": 2369, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2303, + "src": "30976:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "30968:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 2371, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "uintDetails", + "nodeType": "MemberAccess", + "referencedDeclaration": 343, + "src": "30968:29:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailUints_$313_storage", + "typeString": "struct SmartPiggies.DetailUints storage ref" + } + }, + "id": 2372, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "strikePrice", + "nodeType": "MemberAccess", + "referencedDeclaration": 304, + "src": "30968:41:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2373, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "31020:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 2375, + "indexExpression": { + "argumentTypes": null, + "id": 2374, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2303, + "src": "31028:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "31020:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 2376, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "uintDetails", + "nodeType": "MemberAccess", + "referencedDeclaration": 343, + "src": "31020:29:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailUints_$313_storage", + "typeString": "struct SmartPiggies.DetailUints storage ref" + } + }, + "id": 2377, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "lotSize", + "nodeType": "MemberAccess", + "referencedDeclaration": 302, + "src": "31020:37:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2378, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "31068:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 2380, + "indexExpression": { + "argumentTypes": null, + "id": 2379, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2303, + "src": "31076:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "31068:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 2381, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "uintDetails", + "nodeType": "MemberAccess", + "referencedDeclaration": 343, + "src": "31068:29:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailUints_$313_storage", + "typeString": "struct SmartPiggies.DetailUints storage ref" + } + }, + "id": 2382, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "collateralDecimals", + "nodeType": "MemberAccess", + "referencedDeclaration": 312, + "src": "31068:48:4", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + ], + "id": 2357, + "name": "_calculateLongPayout", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2301, + "src": "30841:20:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bool_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint8_$returns$_t_uint256_$", + "typeString": "function (bool,uint256,uint256,uint256,uint8) pure returns (uint256)" + } + }, + "id": 2383, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "30841:282:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "30832:291:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2385, + "nodeType": "ExpressionStatement", + "src": "30832:291:4" + }, + { + "assignments": [ + 2387 + ], + "declarations": [ + { + "constant": false, + "id": 2387, + "name": "_writer", + "nodeType": "VariableDeclaration", + "scope": 2483, + "src": "31202:15:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2386, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "31202:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 2393, + "initialValue": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2388, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "31220:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 2390, + "indexExpression": { + "argumentTypes": null, + "id": 2389, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2303, + "src": "31228:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "31220:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 2391, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "addresses", + "nodeType": "MemberAccess", + "referencedDeclaration": 341, + "src": "31220:27:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAddresses_$298_storage", + "typeString": "struct SmartPiggies.DetailAddresses storage ref" + } + }, + "id": 2392, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "writer", + "nodeType": "MemberAccess", + "referencedDeclaration": 287, + "src": "31220:34:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "31202:52:4" + }, + { + "assignments": [ + 2395 + ], + "declarations": [ + { + "constant": false, + "id": 2395, + "name": "_holder", + "nodeType": "VariableDeclaration", + "scope": 2483, + "src": "31261:15:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2394, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "31261:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 2401, + "initialValue": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2396, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "31279:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 2398, + "indexExpression": { + "argumentTypes": null, + "id": 2397, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2303, + "src": "31287:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "31279:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 2399, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "addresses", + "nodeType": "MemberAccess", + "referencedDeclaration": 341, + "src": "31279:27:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAddresses_$298_storage", + "typeString": "struct SmartPiggies.DetailAddresses storage ref" + } + }, + "id": 2400, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "holder", + "nodeType": "MemberAccess", + "referencedDeclaration": 289, + "src": "31279:34:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "31261:52:4" + }, + { + "assignments": [ + 2403 + ], + "declarations": [ + { + "constant": false, + "id": 2403, + "name": "_collateralERC", + "nodeType": "VariableDeclaration", + "scope": 2483, + "src": "31320:22:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2402, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "31320:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 2409, + "initialValue": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2404, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "31345:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 2406, + "indexExpression": { + "argumentTypes": null, + "id": 2405, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2303, + "src": "31353:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "31345:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 2407, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "addresses", + "nodeType": "MemberAccess", + "referencedDeclaration": 341, + "src": "31345:27:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAddresses_$298_storage", + "typeString": "struct SmartPiggies.DetailAddresses storage ref" + } + }, + "id": 2408, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "collateralERC", + "nodeType": "MemberAccess", + "referencedDeclaration": 291, + "src": "31345:41:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "31320:66:4" + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2416, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2410, + "name": "payout", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2335, + "src": "31398:6:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2411, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "31407:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 2413, + "indexExpression": { + "argumentTypes": null, + "id": 2412, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2303, + "src": "31415:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "31407:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 2414, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "uintDetails", + "nodeType": "MemberAccess", + "referencedDeclaration": 343, + "src": "31407:29:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailUints_$313_storage", + "typeString": "struct SmartPiggies.DetailUints storage ref" + } + }, + "id": 2415, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "collateral", + "nodeType": "MemberAccess", + "referencedDeclaration": 300, + "src": "31407:40:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "31398:49:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 2426, + "nodeType": "IfStatement", + "src": "31394:121:4", + "trueBody": { + "id": 2425, + "nodeType": "Block", + "src": "31449:66:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 2423, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 2417, + "name": "payout", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2335, + "src": "31458:6:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2418, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "31467:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 2420, + "indexExpression": { + "argumentTypes": null, + "id": 2419, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2303, + "src": "31475:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "31467:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 2421, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "uintDetails", + "nodeType": "MemberAccess", + "referencedDeclaration": 343, + "src": "31467:29:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailUints_$313_storage", + "typeString": "struct SmartPiggies.DetailUints storage ref" + } + }, + "id": 2422, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "collateral", + "nodeType": "MemberAccess", + "referencedDeclaration": 300, + "src": "31467:40:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "31458:49:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2424, + "nodeType": "ExpressionStatement", + "src": "31458:49:4" + } + ] + } + }, + { + "expression": { + "argumentTypes": null, + "id": 2440, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2427, + "name": "ERC20balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 352, + "src": "31521:13:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + } + }, + "id": 2430, + "indexExpression": { + "argumentTypes": null, + "id": 2428, + "name": "_holder", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2395, + "src": "31535:7:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "31521:22:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 2431, + "indexExpression": { + "argumentTypes": null, + "id": 2429, + "name": "_collateralERC", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2403, + "src": "31544:14:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "31521:38:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2438, + "name": "payout", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2335, + "src": "31605:6:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2432, + "name": "ERC20balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 352, + "src": "31562:13:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + } + }, + "id": 2434, + "indexExpression": { + "argumentTypes": null, + "id": 2433, + "name": "_holder", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2395, + "src": "31576:7:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "31562:22:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 2436, + "indexExpression": { + "argumentTypes": null, + "id": 2435, + "name": "_collateralERC", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2403, + "src": "31585:14:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "31562:38:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2437, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 224, + "src": "31562:42:4", + "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": 2439, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "31562:50:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "31521:91:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2441, + "nodeType": "ExpressionStatement", + "src": "31521:91:4" + }, + { + "expression": { + "argumentTypes": null, + "id": 2455, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2442, + "name": "ERC20balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 352, + "src": "31619:13:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + } + }, + "id": 2445, + "indexExpression": { + "argumentTypes": null, + "id": 2443, + "name": "_writer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2387, + "src": "31633:7:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "31619:22:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 2446, + "indexExpression": { + "argumentTypes": null, + "id": 2444, + "name": "_collateralERC", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2403, + "src": "31642:14:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "31619:38:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2453, + "name": "payout", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2335, + "src": "31705:6:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2447, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "31660:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 2449, + "indexExpression": { + "argumentTypes": null, + "id": 2448, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2303, + "src": "31668:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "31660:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 2450, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "uintDetails", + "nodeType": "MemberAccess", + "referencedDeclaration": 343, + "src": "31660:29:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailUints_$313_storage", + "typeString": "struct SmartPiggies.DetailUints storage ref" + } + }, + "id": 2451, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "collateral", + "nodeType": "MemberAccess", + "referencedDeclaration": 300, + "src": "31660:40:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2452, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sub", + "nodeType": "MemberAccess", + "referencedDeclaration": 200, + "src": "31660:44:4", + "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": 2454, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "31660:52:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "31619:93:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2456, + "nodeType": "ExpressionStatement", + "src": "31619:93:4" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 2458, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2820, + "src": "31745:3:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 2459, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "31745:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 2460, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2303, + "src": "31764:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 2461, + "name": "payout", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2335, + "src": "31781:6:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2468, + "name": "payout", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2335, + "src": "31841:6:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2462, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "31796:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 2464, + "indexExpression": { + "argumentTypes": null, + "id": 2463, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2303, + "src": "31804:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "31796:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 2465, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "uintDetails", + "nodeType": "MemberAccess", + "referencedDeclaration": 343, + "src": "31796:29:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailUints_$313_storage", + "typeString": "struct SmartPiggies.DetailUints storage ref" + } + }, + "id": 2466, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "collateral", + "nodeType": "MemberAccess", + "referencedDeclaration": 300, + "src": "31796:40:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2467, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sub", + "nodeType": "MemberAccess", + "referencedDeclaration": 200, + "src": "31796:44:4", + "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": 2469, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "31796:52:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 2457, + "name": "SettlePiggy", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 487, + "src": "31725:11:4", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256,uint256,uint256)" + } + }, + "id": 2470, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "31725:130:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2471, + "nodeType": "EmitStatement", + "src": "31720:135:4" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2473, + "name": "_holder", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2395, + "src": "31892:7:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 2474, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2303, + "src": "31901:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 2472, + "name": "_removeTokenFromOwnedPiggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2635, + "src": "31863:28:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 2475, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "31863:47:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2476, + "nodeType": "ExpressionStatement", + "src": "31863:47:4" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2478, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2303, + "src": "31953:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 2477, + "name": "_resetPiggy", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2789, + "src": "31941:11:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$__$", + "typeString": "function (uint256)" + } + }, + "id": 2479, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "31941:21:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2480, + "nodeType": "ExpressionStatement", + "src": "31941:21:4" + }, + { + "expression": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 2481, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "31976:4:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 2307, + "id": 2482, + "nodeType": "Return", + "src": "31969:11:4" + } + ] + }, + "documentation": "@notice Calculate the settlement of ownership of option collateral\n@dev Throws if `_tokenId` is not a valid ERC-59 token.\nThrows if msg.sender is not one of: seller, owner of `_tokenId`.\nThrows if `hasSettlementPrice(_tokenId)` is false.\n[Option settlement math goes here for call / put situations]", + "id": 2484, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "settlePiggy", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2304, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2303, + "name": "_tokenId", + "nodeType": "VariableDeclaration", + "scope": 2484, + "src": "30371:16:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2302, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "30371:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "30370:18:4" + }, + "returnParameters": { + "id": 2307, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2306, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 2484, + "src": "30415:4:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 2305, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "30415:4:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "30414:6:4" + }, + "scope": 2805, + "src": "30350:1636:4", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 2553, + "nodeType": "Block", + "src": "32218:662:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2501, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2494, + "name": "_amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2488, + "src": "32232:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<=", + "rightExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2495, + "name": "ERC20balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 352, + "src": "32243:13:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + } + }, + "id": 2498, + "indexExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 2496, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2820, + "src": "32257:3:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 2497, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "32257:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "32243:25:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 2500, + "indexExpression": { + "argumentTypes": null, + "id": 2499, + "name": "_paymentToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2486, + "src": "32269:13:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "32243:40:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "32232:51:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "45524332302062616c616e6365206973206c657373207468616e2072657175657374656420616d6f756e74", + "id": 2502, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "32285:45:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_51156ee7569ad1608b3d15e92f97c8d5b717540394961195b6b25a691c5fccef", + "typeString": "literal_string \"ERC20 balance is less than requested amount\"" + }, + "value": "ERC20 balance is less than requested amount" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_51156ee7569ad1608b3d15e92f97c8d5b717540394961195b6b25a691c5fccef", + "typeString": "literal_string \"ERC20 balance is less than requested amount\"" + } + ], + "id": 2493, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2823, + 2824 + ], + "referencedDeclaration": 2824, + "src": "32224:7:4", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 2503, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "32224:107:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2504, + "nodeType": "ExpressionStatement", + "src": "32224:107:4" + }, + { + "expression": { + "argumentTypes": null, + "id": 2520, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2505, + "name": "ERC20balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 352, + "src": "32337:13:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + } + }, + "id": 2509, + "indexExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 2506, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2820, + "src": "32351:3:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 2507, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "32351:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "32337:25:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 2510, + "indexExpression": { + "argumentTypes": null, + "id": 2508, + "name": "_paymentToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2486, + "src": "32363:13:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "32337:40:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2518, + "name": "_amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2488, + "src": "32425:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2511, + "name": "ERC20balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 352, + "src": "32380:13:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + } + }, + "id": 2514, + "indexExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 2512, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2820, + "src": "32394:3:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 2513, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "32394:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "32380:25:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 2516, + "indexExpression": { + "argumentTypes": null, + "id": 2515, + "name": "_paymentToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2486, + "src": "32406:13:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "32380:40:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2517, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sub", + "nodeType": "MemberAccess", + "referencedDeclaration": 200, + "src": "32380:44:4", + "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": 2519, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "32380:53:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "32337:96:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2521, + "nodeType": "ExpressionStatement", + "src": "32337:96:4" + }, + { + "assignments": [ + 2523, + null + ], + "declarations": [ + { + "constant": false, + "id": 2523, + "name": "success", + "nodeType": "VariableDeclaration", + "scope": 2553, + "src": "32543:12:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 2522, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "32543:4:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + }, + null + ], + "id": 2538, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "7472616e7366657228616464726573732c75696e7432353629", + "id": 2532, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "32643:27:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_a9059cbb2ab09eb219583f4a59a5d0623ade346d962bcd4e46b11da047c9049b", + "typeString": "literal_string \"transfer(address,uint256)\"" + }, + "value": "transfer(address,uint256)" + }, + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 2533, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2820, + "src": "32680:3:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 2534, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "32680:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 2535, + "name": "_amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2488, + "src": "32700:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_a9059cbb2ab09eb219583f4a59a5d0623ade346d962bcd4e46b11da047c9049b", + "typeString": "literal_string \"transfer(address,uint256)\"" + }, + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 2530, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2807, + "src": "32610:3:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 2531, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "encodeWithSignature", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "32610:23:4", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$", + "typeString": "function (string memory) pure returns (bytes memory)" + } + }, + "id": 2536, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "32610:105:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2526, + "name": "_paymentToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2486, + "src": "32582:13:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 2525, + "name": "PaymentToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 274, + "src": "32569:12:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_PaymentToken_$274_$", + "typeString": "type(contract PaymentToken)" + } + }, + "id": 2527, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "32569:27:4", + "typeDescriptions": { + "typeIdentifier": "t_contract$_PaymentToken_$274", + "typeString": "contract PaymentToken" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_PaymentToken_$274", + "typeString": "contract PaymentToken" + } + ], + "id": 2524, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "32561:7:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 2528, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "32561:36:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 2529, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "call", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "32561:41:4", + "typeDescriptions": { + "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$", + "typeString": "function (bytes memory) payable returns (bool,bytes memory)" + } + }, + "id": 2537, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "32561:160:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$", + "typeString": "tuple(bool,bytes memory)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "32542:179:4" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2540, + "name": "success", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2523, + "src": "32735:7:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "455243323020746f6b656e207472616e73666572206661696c6564", + "id": 2541, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "32744:29:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_09d7cbc760a5fb9ceb7ce3a996d579f34d61d7bf70c73104e2b38c60f3738442", + "typeString": "literal_string \"ERC20 token transfer failed\"" + }, + "value": "ERC20 token transfer failed" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_09d7cbc760a5fb9ceb7ce3a996d579f34d61d7bf70c73104e2b38c60f3738442", + "typeString": "literal_string \"ERC20 token transfer failed\"" + } + ], + "id": 2539, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2823, + 2824 + ], + "referencedDeclaration": 2824, + "src": "32727:7:4", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 2542, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "32727:47:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2543, + "nodeType": "ExpressionStatement", + "src": "32727:47:4" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 2545, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2820, + "src": "32805:3:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 2546, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "32805:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 2547, + "name": "_amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2488, + "src": "32823:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 2548, + "name": "_paymentToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2486, + "src": "32838:13:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 2544, + "name": "ClaimPayout", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 495, + "src": "32786:11:4", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_address_$returns$__$", + "typeString": "function (address,uint256,address)" + } + }, + "id": 2549, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "32786:71:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2550, + "nodeType": "EmitStatement", + "src": "32781:76:4" + }, + { + "expression": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 2551, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "32871:4:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 2492, + "id": 2552, + "nodeType": "Return", + "src": "32864:11:4" + } + ] + }, + "documentation": null, + "id": 2554, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "claimPayout", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2489, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2486, + "name": "_paymentToken", + "nodeType": "VariableDeclaration", + "scope": 2554, + "src": "32146:21:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2485, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "32146:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2488, + "name": "_amount", + "nodeType": "VariableDeclaration", + "scope": 2554, + "src": "32169:15:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2487, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "32169:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "32145:40:4" + }, + "returnParameters": { + "id": 2492, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2491, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 2554, + "src": "32210:4:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 2490, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "32210:4:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "32209:6:4" + }, + "scope": 2805, + "src": "32125:755:4", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 2577, + "nodeType": "Block", + "src": "32962:103:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 2568, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2561, + "name": "ownedPiggiesIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 361, + "src": "32968:17:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$", + "typeString": "mapping(uint256 => uint256)" + } + }, + "id": 2563, + "indexExpression": { + "argumentTypes": null, + "id": 2562, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2558, + "src": "32986:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "32968:27:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2564, + "name": "ownedPiggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 357, + "src": "32998:12:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_uint256_$dyn_storage_$", + "typeString": "mapping(address => uint256[] storage ref)" + } + }, + "id": 2566, + "indexExpression": { + "argumentTypes": null, + "id": 2565, + "name": "_to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2556, + "src": "33011:3:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "32998:17:4", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage", + "typeString": "uint256[] storage ref" + } + }, + "id": 2567, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "32998:24:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "32968:54:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2569, + "nodeType": "ExpressionStatement", + "src": "32968:54:4" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2574, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2558, + "src": "33051:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2570, + "name": "ownedPiggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 357, + "src": "33028:12:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_uint256_$dyn_storage_$", + "typeString": "mapping(address => uint256[] storage ref)" + } + }, + "id": 2572, + "indexExpression": { + "argumentTypes": null, + "id": 2571, + "name": "_to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2556, + "src": "33041:3:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "33028:17:4", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage", + "typeString": "uint256[] storage ref" + } + }, + "id": 2573, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "push", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "33028:22:4", + "typeDescriptions": { + "typeIdentifier": "t_function_arraypush_nonpayable$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256) returns (uint256)" + } + }, + "id": 2575, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "33028:32:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2576, + "nodeType": "ExpressionStatement", + "src": "33028:32:4" + } + ] + }, + "documentation": null, + "id": 2578, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_addTokenToOwnedPiggies", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2559, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2556, + "name": "_to", + "nodeType": "VariableDeclaration", + "scope": 2578, + "src": "32917:11:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2555, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "32917:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2558, + "name": "_tokenId", + "nodeType": "VariableDeclaration", + "scope": 2578, + "src": "32930:16:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2557, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "32930:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "32916:31:4" + }, + "returnParameters": { + "id": 2560, + "nodeType": "ParameterList", + "parameters": [], + "src": "32962:0:4" + }, + "scope": 2805, + "src": "32884:181:4", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "private" + }, + { + "body": { + "id": 2634, + "nodeType": "Block", + "src": "33154:373:4", + "statements": [ + { + "assignments": [ + 2586 + ], + "declarations": [ + { + "constant": false, + "id": 2586, + "name": "lastTokenIndex", + "nodeType": "VariableDeclaration", + "scope": 2634, + "src": "33160:22:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2585, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "33160:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 2594, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "31", + "id": 2592, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "33216:1:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + } + ], + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2587, + "name": "ownedPiggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 357, + "src": "33185:12:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_uint256_$dyn_storage_$", + "typeString": "mapping(address => uint256[] storage ref)" + } + }, + "id": 2589, + "indexExpression": { + "argumentTypes": null, + "id": 2588, + "name": "_from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2580, + "src": "33198:5:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "33185:19:4", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage", + "typeString": "uint256[] storage ref" + } + }, + "id": 2590, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "33185:26:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2591, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sub", + "nodeType": "MemberAccess", + "referencedDeclaration": 200, + "src": "33185:30:4", + "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": 2593, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "33185:33:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "33160:58:4" + }, + { + "assignments": [ + 2596 + ], + "declarations": [ + { + "constant": false, + "id": 2596, + "name": "tokenIndex", + "nodeType": "VariableDeclaration", + "scope": 2634, + "src": "33224:18:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2595, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "33224:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 2600, + "initialValue": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2597, + "name": "ownedPiggiesIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 361, + "src": "33245:17:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$", + "typeString": "mapping(uint256 => uint256)" + } + }, + "id": 2599, + "indexExpression": { + "argumentTypes": null, + "id": 2598, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2582, + "src": "33263:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "33245:27:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "33224:48:4" + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2603, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2601, + "name": "tokenIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2596, + "src": "33283:10:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "id": 2602, + "name": "lastTokenIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2586, + "src": "33297:14:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "33283:28:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 2627, + "nodeType": "IfStatement", + "src": "33279:210:4", + "trueBody": { + "id": 2626, + "nodeType": "Block", + "src": "33313:176:4", + "statements": [ + { + "assignments": [ + 2605 + ], + "declarations": [ + { + "constant": false, + "id": 2605, + "name": "lastTokenId", + "nodeType": "VariableDeclaration", + "scope": 2626, + "src": "33321:19:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2604, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "33321:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 2611, + "initialValue": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2606, + "name": "ownedPiggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 357, + "src": "33343:12:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_uint256_$dyn_storage_$", + "typeString": "mapping(address => uint256[] storage ref)" + } + }, + "id": 2608, + "indexExpression": { + "argumentTypes": null, + "id": 2607, + "name": "_from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2580, + "src": "33356:5:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "33343:19:4", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage", + "typeString": "uint256[] storage ref" + } + }, + "id": 2610, + "indexExpression": { + "argumentTypes": null, + "id": 2609, + "name": "lastTokenIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2586, + "src": "33363:14:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "33343:35:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "33321:57:4" + }, + { + "expression": { + "argumentTypes": null, + "id": 2618, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2612, + "name": "ownedPiggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 357, + "src": "33386:12:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_uint256_$dyn_storage_$", + "typeString": "mapping(address => uint256[] storage ref)" + } + }, + "id": 2615, + "indexExpression": { + "argumentTypes": null, + "id": 2613, + "name": "_from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2580, + "src": "33399:5:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "33386:19:4", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage", + "typeString": "uint256[] storage ref" + } + }, + "id": 2616, + "indexExpression": { + "argumentTypes": null, + "id": 2614, + "name": "tokenIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2596, + "src": "33406:10:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "33386:31:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 2617, + "name": "lastTokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2605, + "src": "33420:11:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "33386:45:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2619, + "nodeType": "ExpressionStatement", + "src": "33386:45:4" + }, + { + "expression": { + "argumentTypes": null, + "id": 2624, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2620, + "name": "ownedPiggiesIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 361, + "src": "33439:17:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$", + "typeString": "mapping(uint256 => uint256)" + } + }, + "id": 2622, + "indexExpression": { + "argumentTypes": null, + "id": 2621, + "name": "lastTokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2605, + "src": "33457:11:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "33439:30:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 2623, + "name": "tokenIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2596, + "src": "33472:10:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "33439:43:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2625, + "nodeType": "ExpressionStatement", + "src": "33439:43:4" + } + ] + } + }, + { + "expression": { + "argumentTypes": null, + "id": 2632, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "--", + "prefix": false, + "src": "33494:28:4", + "subExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2628, + "name": "ownedPiggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 357, + "src": "33494:12:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_uint256_$dyn_storage_$", + "typeString": "mapping(address => uint256[] storage ref)" + } + }, + "id": 2630, + "indexExpression": { + "argumentTypes": null, + "id": 2629, + "name": "_from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2580, + "src": "33507:5:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "33494:19:4", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage", + "typeString": "uint256[] storage ref" + } + }, + "id": 2631, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "33494:26:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2633, + "nodeType": "ExpressionStatement", + "src": "33494:28:4" + } + ] + }, + "documentation": null, + "id": 2635, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_removeTokenFromOwnedPiggies", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2583, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2580, + "name": "_from", + "nodeType": "VariableDeclaration", + "scope": 2635, + "src": "33107:13:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2579, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "33107:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2582, + "name": "_tokenId", + "nodeType": "VariableDeclaration", + "scope": 2635, + "src": "33122:16:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2581, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "33122:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "33106:33:4" + }, + "returnParameters": { + "id": 2584, + "nodeType": "ParameterList", + "parameters": [], + "src": "33154:0:4" + }, + "scope": 2805, + "src": "33069:458:4", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "private" + }, + { + "body": { + "id": 2788, + "nodeType": "Block", + "src": "33584:903:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 2648, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2640, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "33590:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 2642, + "indexExpression": { + "argumentTypes": null, + "id": 2641, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2637, + "src": "33598:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "33590:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 2643, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "addresses", + "nodeType": "MemberAccess", + "referencedDeclaration": 341, + "src": "33590:27:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAddresses_$298_storage", + "typeString": "struct SmartPiggies.DetailAddresses storage ref" + } + }, + "id": 2644, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "writer", + "nodeType": "MemberAccess", + "referencedDeclaration": 287, + "src": "33590:34:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 2646, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "33635: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": 2645, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "33627:7:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 2647, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "33627:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "33590:47:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 2649, + "nodeType": "ExpressionStatement", + "src": "33590:47:4" + }, + { + "expression": { + "argumentTypes": null, + "id": 2658, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2650, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "33643:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 2652, + "indexExpression": { + "argumentTypes": null, + "id": 2651, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2637, + "src": "33651:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "33643:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 2653, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "addresses", + "nodeType": "MemberAccess", + "referencedDeclaration": 341, + "src": "33643:27:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAddresses_$298_storage", + "typeString": "struct SmartPiggies.DetailAddresses storage ref" + } + }, + "id": 2654, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "holder", + "nodeType": "MemberAccess", + "referencedDeclaration": 289, + "src": "33643:34:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 2656, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "33688: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": 2655, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "33680:7:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 2657, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "33680:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "33643:47:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 2659, + "nodeType": "ExpressionStatement", + "src": "33643:47:4" + }, + { + "expression": { + "argumentTypes": null, + "id": 2668, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2660, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "33696:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 2662, + "indexExpression": { + "argumentTypes": null, + "id": 2661, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2637, + "src": "33704:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "33696:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 2663, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "addresses", + "nodeType": "MemberAccess", + "referencedDeclaration": 341, + "src": "33696:27:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAddresses_$298_storage", + "typeString": "struct SmartPiggies.DetailAddresses storage ref" + } + }, + "id": 2664, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "collateralERC", + "nodeType": "MemberAccess", + "referencedDeclaration": 291, + "src": "33696:41:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 2666, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "33748: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": 2665, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "33740:7:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 2667, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "33740:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "33696:54:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 2669, + "nodeType": "ExpressionStatement", + "src": "33696:54:4" + }, + { + "expression": { + "argumentTypes": null, + "id": 2678, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2670, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "33756:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 2672, + "indexExpression": { + "argumentTypes": null, + "id": 2671, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2637, + "src": "33764:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "33756:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 2673, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "addresses", + "nodeType": "MemberAccess", + "referencedDeclaration": 341, + "src": "33756:27:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAddresses_$298_storage", + "typeString": "struct SmartPiggies.DetailAddresses storage ref" + } + }, + "id": 2674, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "premiumERC", + "nodeType": "MemberAccess", + "referencedDeclaration": 293, + "src": "33756:38:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 2676, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "33805: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": 2675, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "33797:7:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 2677, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "33797:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "33756:51:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 2679, + "nodeType": "ExpressionStatement", + "src": "33756:51:4" + }, + { + "expression": { + "argumentTypes": null, + "id": 2688, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2680, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "33813:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 2682, + "indexExpression": { + "argumentTypes": null, + "id": 2681, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2637, + "src": "33821:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "33813:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 2683, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "addresses", + "nodeType": "MemberAccess", + "referencedDeclaration": 341, + "src": "33813:27:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAddresses_$298_storage", + "typeString": "struct SmartPiggies.DetailAddresses storage ref" + } + }, + "id": 2684, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "dataResolverNow", + "nodeType": "MemberAccess", + "referencedDeclaration": 295, + "src": "33813:43:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 2686, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "33867: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": 2685, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "33859:7:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 2687, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "33859:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "33813:56:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 2689, + "nodeType": "ExpressionStatement", + "src": "33813:56:4" + }, + { + "expression": { + "argumentTypes": null, + "id": 2698, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2690, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "33875:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 2692, + "indexExpression": { + "argumentTypes": null, + "id": 2691, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2637, + "src": "33883:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "33875:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 2693, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "addresses", + "nodeType": "MemberAccess", + "referencedDeclaration": 341, + "src": "33875:27:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAddresses_$298_storage", + "typeString": "struct SmartPiggies.DetailAddresses storage ref" + } + }, + "id": 2694, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "dataResolverAtExpiry", + "nodeType": "MemberAccess", + "referencedDeclaration": 297, + "src": "33875:48:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 2696, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "33934: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": 2695, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "33926:7:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 2697, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "33926:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "33875:61:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 2699, + "nodeType": "ExpressionStatement", + "src": "33875:61:4" + }, + { + "expression": { + "argumentTypes": null, + "id": 2706, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2700, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "33942:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 2702, + "indexExpression": { + "argumentTypes": null, + "id": 2701, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2637, + "src": "33950:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "33942:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 2703, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "uintDetails", + "nodeType": "MemberAccess", + "referencedDeclaration": 343, + "src": "33942:29:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailUints_$313_storage", + "typeString": "struct SmartPiggies.DetailUints storage ref" + } + }, + "id": 2704, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "collateral", + "nodeType": "MemberAccess", + "referencedDeclaration": 300, + "src": "33942:40:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "30", + "id": 2705, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "33985:1:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "33942:44:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2707, + "nodeType": "ExpressionStatement", + "src": "33942:44:4" + }, + { + "expression": { + "argumentTypes": null, + "id": 2714, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2708, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "33992:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 2710, + "indexExpression": { + "argumentTypes": null, + "id": 2709, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2637, + "src": "34000:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "33992:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 2711, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "uintDetails", + "nodeType": "MemberAccess", + "referencedDeclaration": 343, + "src": "33992:29:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailUints_$313_storage", + "typeString": "struct SmartPiggies.DetailUints storage ref" + } + }, + "id": 2712, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "lotSize", + "nodeType": "MemberAccess", + "referencedDeclaration": 302, + "src": "33992:37:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "30", + "id": 2713, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "34032:1:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "33992:41:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2715, + "nodeType": "ExpressionStatement", + "src": "33992:41:4" + }, + { + "expression": { + "argumentTypes": null, + "id": 2722, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2716, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "34039:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 2718, + "indexExpression": { + "argumentTypes": null, + "id": 2717, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2637, + "src": "34047:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "34039:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 2719, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "uintDetails", + "nodeType": "MemberAccess", + "referencedDeclaration": 343, + "src": "34039:29:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailUints_$313_storage", + "typeString": "struct SmartPiggies.DetailUints storage ref" + } + }, + "id": 2720, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "strikePrice", + "nodeType": "MemberAccess", + "referencedDeclaration": 304, + "src": "34039:41:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "30", + "id": 2721, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "34083:1:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "34039:45:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2723, + "nodeType": "ExpressionStatement", + "src": "34039:45:4" + }, + { + "expression": { + "argumentTypes": null, + "id": 2730, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2724, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "34090:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 2726, + "indexExpression": { + "argumentTypes": null, + "id": 2725, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2637, + "src": "34098:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "34090:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 2727, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "uintDetails", + "nodeType": "MemberAccess", + "referencedDeclaration": 343, + "src": "34090:29:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailUints_$313_storage", + "typeString": "struct SmartPiggies.DetailUints storage ref" + } + }, + "id": 2728, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "expiry", + "nodeType": "MemberAccess", + "referencedDeclaration": 306, + "src": "34090:36:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "30", + "id": 2729, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "34129:1:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "34090:40:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2731, + "nodeType": "ExpressionStatement", + "src": "34090:40:4" + }, + { + "expression": { + "argumentTypes": null, + "id": 2738, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2732, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "34136:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 2734, + "indexExpression": { + "argumentTypes": null, + "id": 2733, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2637, + "src": "34144:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "34136:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 2735, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "uintDetails", + "nodeType": "MemberAccess", + "referencedDeclaration": 343, + "src": "34136:29:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailUints_$313_storage", + "typeString": "struct SmartPiggies.DetailUints storage ref" + } + }, + "id": 2736, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "settlementPrice", + "nodeType": "MemberAccess", + "referencedDeclaration": 308, + "src": "34136:45:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "30", + "id": 2737, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "34184:1:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "34136:49:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2739, + "nodeType": "ExpressionStatement", + "src": "34136:49:4" + }, + { + "expression": { + "argumentTypes": null, + "id": 2746, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2740, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "34191:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 2742, + "indexExpression": { + "argumentTypes": null, + "id": 2741, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2637, + "src": "34199:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "34191:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 2743, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "uintDetails", + "nodeType": "MemberAccess", + "referencedDeclaration": 343, + "src": "34191:29:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailUints_$313_storage", + "typeString": "struct SmartPiggies.DetailUints storage ref" + } + }, + "id": 2744, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "reqCollateral", + "nodeType": "MemberAccess", + "referencedDeclaration": 310, + "src": "34191:43:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "30", + "id": 2745, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "34237:1:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "34191:47:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2747, + "nodeType": "ExpressionStatement", + "src": "34191:47:4" + }, + { + "expression": { + "argumentTypes": null, + "id": 2754, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2748, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "34244:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 2750, + "indexExpression": { + "argumentTypes": null, + "id": 2749, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2637, + "src": "34252:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "34244:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 2751, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "uintDetails", + "nodeType": "MemberAccess", + "referencedDeclaration": 343, + "src": "34244:29:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailUints_$313_storage", + "typeString": "struct SmartPiggies.DetailUints storage ref" + } + }, + "id": 2752, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "collateralDecimals", + "nodeType": "MemberAccess", + "referencedDeclaration": 312, + "src": "34244:48:4", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "30", + "id": 2753, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "34295:1:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "34244:52:4", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "id": 2755, + "nodeType": "ExpressionStatement", + "src": "34244:52:4" + }, + { + "expression": { + "argumentTypes": null, + "id": 2762, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2756, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "34302:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 2758, + "indexExpression": { + "argumentTypes": null, + "id": 2757, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2637, + "src": "34310:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "34302:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 2759, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "flags", + "nodeType": "MemberAccess", + "referencedDeclaration": 345, + "src": "34302:23:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BoolFlags_$322_storage", + "typeString": "struct SmartPiggies.BoolFlags storage ref" + } + }, + "id": 2760, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "isRequest", + "nodeType": "MemberAccess", + "referencedDeclaration": 315, + "src": "34302:33:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "66616c7365", + "id": 2761, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "34338:5:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "src": "34302:41:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2763, + "nodeType": "ExpressionStatement", + "src": "34302:41:4" + }, + { + "expression": { + "argumentTypes": null, + "id": 2770, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2764, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "34349:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 2766, + "indexExpression": { + "argumentTypes": null, + "id": 2765, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2637, + "src": "34357:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "34349:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 2767, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "flags", + "nodeType": "MemberAccess", + "referencedDeclaration": 345, + "src": "34349:23:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BoolFlags_$322_storage", + "typeString": "struct SmartPiggies.BoolFlags storage ref" + } + }, + "id": 2768, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "isEuro", + "nodeType": "MemberAccess", + "referencedDeclaration": 317, + "src": "34349:30:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "66616c7365", + "id": 2769, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "34382:5:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "src": "34349:38:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2771, + "nodeType": "ExpressionStatement", + "src": "34349:38:4" + }, + { + "expression": { + "argumentTypes": null, + "id": 2778, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2772, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "34393:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 2774, + "indexExpression": { + "argumentTypes": null, + "id": 2773, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2637, + "src": "34401:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "34393:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 2775, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "flags", + "nodeType": "MemberAccess", + "referencedDeclaration": 345, + "src": "34393:23:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BoolFlags_$322_storage", + "typeString": "struct SmartPiggies.BoolFlags storage ref" + } + }, + "id": 2776, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "isPut", + "nodeType": "MemberAccess", + "referencedDeclaration": 319, + "src": "34393:29:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "66616c7365", + "id": 2777, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "34425:5:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "src": "34393:37:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2779, + "nodeType": "ExpressionStatement", + "src": "34393:37:4" + }, + { + "expression": { + "argumentTypes": null, + "id": 2786, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2780, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "34436:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 2782, + "indexExpression": { + "argumentTypes": null, + "id": 2781, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2637, + "src": "34444:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "34436:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 2783, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "flags", + "nodeType": "MemberAccess", + "referencedDeclaration": 345, + "src": "34436:23:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BoolFlags_$322_storage", + "typeString": "struct SmartPiggies.BoolFlags storage ref" + } + }, + "id": 2784, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "hasBeenCleared", + "nodeType": "MemberAccess", + "referencedDeclaration": 321, + "src": "34436:38:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "66616c7365", + "id": 2785, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "34477:5:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "src": "34436:46:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2787, + "nodeType": "ExpressionStatement", + "src": "34436:46:4" + } + ] + }, + "documentation": null, + "id": 2789, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_resetPiggy", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2638, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2637, + "name": "_tokenId", + "nodeType": "VariableDeclaration", + "scope": 2789, + "src": "33552:16:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2636, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "33552:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "33551:18:4" + }, + "returnParameters": { + "id": 2639, + "nodeType": "ParameterList", + "parameters": [], + "src": "33584:0:4" + }, + "scope": 2805, + "src": "33531:956:4", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "private" + }, + { + "body": { + "id": 2803, + "nodeType": "Block", + "src": "34520:64:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + "id": 2796, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 2793, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2820, + "src": "34534:3:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 2794, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "34534:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 2795, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 283, + "src": "34548:5:4", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "34534:19:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 2792, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2823, + 2824 + ], + "referencedDeclaration": 2823, + "src": "34526:7:4", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 2797, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "34526:28:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2798, + "nodeType": "ExpressionStatement", + "src": "34526:28:4" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2800, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 283, + "src": "34573:5:4", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "id": 2799, + "name": "selfdestruct", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2828, + "src": "34560:12:4", + "typeDescriptions": { + "typeIdentifier": "t_function_selfdestruct_nonpayable$_t_address_payable_$returns$__$", + "typeString": "function (address payable)" + } + }, + "id": 2801, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "34560:19:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2802, + "nodeType": "ExpressionStatement", + "src": "34560:19:4" + } + ] + }, + "documentation": null, + "id": 2804, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "kill", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2790, + "nodeType": "ParameterList", + "parameters": [], + "src": "34504:2:4" + }, + "returnParameters": { + "id": 2791, + "nodeType": "ParameterList", + "parameters": [], + "src": "34520:0:4" + }, + "scope": 2805, + "src": "34491:93:4", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + } + ], + "scope": 2806, + "src": "1368:33218:4" + } + ], + "src": "750:33837:4" + }, + "legacyAST": { + "absolutePath": "/home/vagrant/DAPPS/smartpiggiesGithub/amerigo/explorer/contracts/SmartPiggies.sol", + "exportedSymbols": { + "PaymentToken": [ + 274 + ], + "SmartPiggies": [ + 2805 + ] + }, + "id": 2806, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 247, + "literals": [ + "solidity", + ">=", + "0.4", + ".24", + "<", + "0.6", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "750:32:4" + }, + { + "id": 248, + "literals": [ + "experimental", + "ABIEncoderV2" + ], + "nodeType": "PragmaDirective", + "src": "783:33:4" + }, + { + "baseContracts": [], + "contractDependencies": [], + "contractKind": "interface", + "documentation": null, + "fullyImplemented": false, + "id": 274, + "linearizedBaseContracts": [ + 274 + ], + "name": "PaymentToken", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": null, + "documentation": null, + "id": 259, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "transferFrom", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 255, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 250, + "name": "from", + "nodeType": "VariableDeclaration", + "scope": 259, + "src": "1067:12:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 249, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1067:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 252, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 259, + "src": "1081:10:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 251, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1081:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 254, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 259, + "src": "1093:13:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 253, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1093:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1066:41:4" + }, + "returnParameters": { + "id": 258, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 257, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 259, + "src": "1126:4:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 256, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1126:4:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1125:6:4" + }, + "scope": 274, + "src": "1045:87:4", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "external" + }, + { + "body": null, + "documentation": null, + "id": 268, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "transfer", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 264, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 261, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 268, + "src": "1153:10:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 260, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1153:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 263, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 268, + "src": "1165:13:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 262, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1165:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1152:27:4" + }, + "returnParameters": { + "id": 267, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 266, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 268, + "src": "1198:4:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 265, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1198:4:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1197:6:4" + }, + "scope": 274, + "src": "1135:69:4", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "external" + }, + { + "body": null, + "documentation": null, + "id": 273, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "decimals", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 269, + "nodeType": "ParameterList", + "parameters": [], + "src": "1224:2:4" + }, + "returnParameters": { + "id": 272, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 271, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 273, + "src": "1245:5:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 270, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "1245:5:4", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1244:7:4" + }, + "scope": 274, + "src": "1207:45:4", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "external" + } + ], + "scope": 2806, + "src": "1018:236:4" + }, + { + "absolutePath": "/home/vagrant/DAPPS/smartpiggiesGithub/amerigo/explorer/contracts/ERC165.sol", + "file": "./ERC165.sol", + "id": 275, + "nodeType": "ImportDirective", + "scope": 2806, + "sourceUnit": 51, + "src": "1256:22:4", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "/home/vagrant/DAPPS/smartpiggiesGithub/amerigo/explorer/contracts/SafeMath.sol", + "file": "./SafeMath.sol", + "id": 276, + "nodeType": "ImportDirective", + "scope": 2806, + "sourceUnit": 246, + "src": "1279:24:4", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 277, + "name": "ERC165", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 50, + "src": "1393:6:4", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC165_$50", + "typeString": "contract ERC165" + } + }, + "id": 278, + "nodeType": "InheritanceSpecifier", + "src": "1393:6:4" + } + ], + "contractDependencies": [ + 50, + 60 + ], + "contractKind": "contract", + "documentation": "@title ERC-59 (subject to change) Smart Option Standard", + "fullyImplemented": true, + "id": 2805, + "linearizedBaseContracts": [ + 2805, + 50, + 60 + ], + "name": "SmartPiggies", + "nodeType": "ContractDefinition", + "nodes": [ + { + "id": 281, + "libraryName": { + "contractScope": null, + "id": 279, + "name": "SafeMath", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 245, + "src": "1410:8:4", + "typeDescriptions": { + "typeIdentifier": "t_contract$_SafeMath_$245", + "typeString": "library SafeMath" + } + }, + "nodeType": "UsingForDirective", + "src": "1404:27:4", + "typeName": { + "id": 280, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1423:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + { + "constant": false, + "id": 283, + "name": "owner", + "nodeType": "VariableDeclaration", + "scope": 2805, + "src": "1435:21:4", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + "typeName": { + "id": 282, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1435:15:4", + "stateMutability": "payable", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 285, + "name": "tokenId", + "nodeType": "VariableDeclaration", + "scope": 2805, + "src": "1460:22:4", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 284, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1460:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "public" + }, + { + "canonicalName": "SmartPiggies.DetailAddresses", + "id": 298, + "members": [ + { + "constant": false, + "id": 287, + "name": "writer", + "nodeType": "VariableDeclaration", + "scope": 298, + "src": "1516:14:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 286, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1516:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 289, + "name": "holder", + "nodeType": "VariableDeclaration", + "scope": 298, + "src": "1536:14:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 288, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1536:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 291, + "name": "collateralERC", + "nodeType": "VariableDeclaration", + "scope": 298, + "src": "1556:21:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 290, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1556:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 293, + "name": "premiumERC", + "nodeType": "VariableDeclaration", + "scope": 298, + "src": "1583:18:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 292, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1583:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 295, + "name": "dataResolverNow", + "nodeType": "VariableDeclaration", + "scope": 298, + "src": "1607:23:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 294, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1607:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 297, + "name": "dataResolverAtExpiry", + "nodeType": "VariableDeclaration", + "scope": 298, + "src": "1636:28:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 296, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1636:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "name": "DetailAddresses", + "nodeType": "StructDefinition", + "scope": 2805, + "src": "1487:182:4", + "visibility": "public" + }, + { + "canonicalName": "SmartPiggies.DetailUints", + "id": 313, + "members": [ + { + "constant": false, + "id": 300, + "name": "collateral", + "nodeType": "VariableDeclaration", + "scope": 313, + "src": "1698:18:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 299, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1698:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 302, + "name": "lotSize", + "nodeType": "VariableDeclaration", + "scope": 313, + "src": "1722:15:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 301, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1722:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 304, + "name": "strikePrice", + "nodeType": "VariableDeclaration", + "scope": 313, + "src": "1743:19:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 303, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1743:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 306, + "name": "expiry", + "nodeType": "VariableDeclaration", + "scope": 313, + "src": "1768:14:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 305, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1768:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 308, + "name": "settlementPrice", + "nodeType": "VariableDeclaration", + "scope": 313, + "src": "1788:23:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 307, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1788:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 310, + "name": "reqCollateral", + "nodeType": "VariableDeclaration", + "scope": 313, + "src": "1817:21:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 309, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1817:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 312, + "name": "collateralDecimals", + "nodeType": "VariableDeclaration", + "scope": 313, + "src": "1844:24:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 311, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "1844:5:4", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": null, + "visibility": "internal" + } + ], + "name": "DetailUints", + "nodeType": "StructDefinition", + "scope": 2805, + "src": "1673:243:4", + "visibility": "public" + }, + { + "canonicalName": "SmartPiggies.BoolFlags", + "id": 322, + "members": [ + { + "constant": false, + "id": 315, + "name": "isRequest", + "nodeType": "VariableDeclaration", + "scope": 322, + "src": "1943:14:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 314, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1943:4:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 317, + "name": "isEuro", + "nodeType": "VariableDeclaration", + "scope": 322, + "src": "1963:11:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 316, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1963:4:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 319, + "name": "isPut", + "nodeType": "VariableDeclaration", + "scope": 322, + "src": "1980:10:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 318, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1980:4:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 321, + "name": "hasBeenCleared", + "nodeType": "VariableDeclaration", + "scope": 322, + "src": "1996:19:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 320, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1996:4:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "name": "BoolFlags", + "nodeType": "StructDefinition", + "scope": 2805, + "src": "1920:160:4", + "visibility": "public" + }, + { + "canonicalName": "SmartPiggies.DetailAuction", + "id": 339, + "members": [ + { + "constant": false, + "id": 324, + "name": "startBlock", + "nodeType": "VariableDeclaration", + "scope": 339, + "src": "2111:18:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 323, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2111:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 326, + "name": "expiryBlock", + "nodeType": "VariableDeclaration", + "scope": 339, + "src": "2135:19:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 325, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2135:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 328, + "name": "startPrice", + "nodeType": "VariableDeclaration", + "scope": 339, + "src": "2160:18:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 327, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2160:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 330, + "name": "reservePrice", + "nodeType": "VariableDeclaration", + "scope": 339, + "src": "2184:20:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 329, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2184:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 332, + "name": "timeStep", + "nodeType": "VariableDeclaration", + "scope": 339, + "src": "2210:16:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 331, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2210:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 334, + "name": "priceStep", + "nodeType": "VariableDeclaration", + "scope": 339, + "src": "2232:17:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 333, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2232:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 336, + "name": "auctionActive", + "nodeType": "VariableDeclaration", + "scope": 339, + "src": "2255:18:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 335, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "2255:4:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 338, + "name": "satisfyInProgress", + "nodeType": "VariableDeclaration", + "scope": 339, + "src": "2279:22:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 337, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "2279:4:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "name": "DetailAuction", + "nodeType": "StructDefinition", + "scope": 2805, + "src": "2084:311:4", + "visibility": "public" + }, + { + "canonicalName": "SmartPiggies.Piggy", + "id": 346, + "members": [ + { + "constant": false, + "id": 341, + "name": "addresses", + "nodeType": "VariableDeclaration", + "scope": 346, + "src": "2418:25:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAddresses_$298_storage_ptr", + "typeString": "struct SmartPiggies.DetailAddresses" + }, + "typeName": { + "contractScope": null, + "id": 340, + "name": "DetailAddresses", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 298, + "src": "2418:15:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAddresses_$298_storage_ptr", + "typeString": "struct SmartPiggies.DetailAddresses" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 343, + "name": "uintDetails", + "nodeType": "VariableDeclaration", + "scope": 346, + "src": "2467:23:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailUints_$313_storage_ptr", + "typeString": "struct SmartPiggies.DetailUints" + }, + "typeName": { + "contractScope": null, + "id": 342, + "name": "DetailUints", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 313, + "src": "2467:11:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailUints_$313_storage_ptr", + "typeString": "struct SmartPiggies.DetailUints" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 345, + "name": "flags", + "nodeType": "VariableDeclaration", + "scope": 346, + "src": "2513:15:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BoolFlags_$322_storage_ptr", + "typeString": "struct SmartPiggies.BoolFlags" + }, + "typeName": { + "contractScope": null, + "id": 344, + "name": "BoolFlags", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 322, + "src": "2513:9:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BoolFlags_$322_storage_ptr", + "typeString": "struct SmartPiggies.BoolFlags" + } + }, + "value": null, + "visibility": "internal" + } + ], + "name": "Piggy", + "nodeType": "StructDefinition", + "scope": 2805, + "src": "2399:155:4", + "visibility": "public" + }, + { + "constant": false, + "id": 352, + "name": "ERC20balances", + "nodeType": "VariableDeclaration", + "scope": 2805, + "src": "2558:70:4", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + }, + "typeName": { + "id": 351, + "keyType": { + "id": 347, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2567:7:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "2558:48:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + }, + "valueType": { + "id": 350, + "keyType": { + "id": 348, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2586:7:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "2578:27:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + }, + "valueType": { + "id": 349, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2597:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + } + }, + "value": null, + "visibility": "private" + }, + { + "constant": false, + "id": 357, + "name": "ownedPiggies", + "nodeType": "VariableDeclaration", + "scope": 2805, + "src": "2632:51:4", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_uint256_$dyn_storage_$", + "typeString": "mapping(address => uint256[])" + }, + "typeName": { + "id": 356, + "keyType": { + "id": 353, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2641:7:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "2632:30:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_uint256_$dyn_storage_$", + "typeString": "mapping(address => uint256[])" + }, + "valueType": { + "baseType": { + "id": 354, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2652:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 355, + "length": null, + "nodeType": "ArrayTypeName", + "src": "2652:9:4", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + } + }, + "value": null, + "visibility": "private" + }, + { + "constant": false, + "id": 361, + "name": "ownedPiggiesIndex", + "nodeType": "VariableDeclaration", + "scope": 2805, + "src": "2704:54:4", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$", + "typeString": "mapping(uint256 => uint256)" + }, + "typeName": { + "id": 360, + "keyType": { + "id": 358, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2713:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Mapping", + "src": "2704:28:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$", + "typeString": "mapping(uint256 => uint256)" + }, + "valueType": { + "id": 359, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2724:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "value": null, + "visibility": "private" + }, + { + "constant": false, + "id": 365, + "name": "piggies", + "nodeType": "VariableDeclaration", + "scope": 2805, + "src": "2762:42:4", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy)" + }, + "typeName": { + "id": 364, + "keyType": { + "id": 362, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2771:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Mapping", + "src": "2762:26:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy)" + }, + "valueType": { + "contractScope": null, + "id": 363, + "name": "Piggy", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 346, + "src": "2782:5:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage_ptr", + "typeString": "struct SmartPiggies.Piggy" + } + } + }, + "value": null, + "visibility": "private" + }, + { + "constant": false, + "id": 369, + "name": "auctions", + "nodeType": "VariableDeclaration", + "scope": 2805, + "src": "2808:51:4", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_DetailAuction_$339_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.DetailAuction)" + }, + "typeName": { + "id": 368, + "keyType": { + "id": 366, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2817:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Mapping", + "src": "2808:34:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_DetailAuction_$339_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.DetailAuction)" + }, + "valueType": { + "contractScope": null, + "id": 367, + "name": "DetailAuction", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 339, + "src": "2828:13:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAuction_$339_storage_ptr", + "typeString": "struct SmartPiggies.DetailAuction" + } + } + }, + "value": null, + "visibility": "private" + }, + { + "anonymous": false, + "documentation": null, + "id": 381, + "name": "CreatePiggy", + "nodeType": "EventDefinition", + "parameters": { + "id": 380, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 371, + "indexed": true, + "name": "from", + "nodeType": "VariableDeclaration", + "scope": 381, + "src": "2913:20:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 370, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2913:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 373, + "indexed": true, + "name": "tokenId", + "nodeType": "VariableDeclaration", + "scope": 381, + "src": "2941:23:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 372, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2941:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 375, + "indexed": true, + "name": "strike", + "nodeType": "VariableDeclaration", + "scope": 381, + "src": "2972:22:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 374, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2972:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 377, + "indexed": false, + "name": "expiryBlock", + "nodeType": "VariableDeclaration", + "scope": 381, + "src": "3002:19:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 376, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3002:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 379, + "indexed": false, + "name": "RFP", + "nodeType": "VariableDeclaration", + "scope": 381, + "src": "3029:8:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 378, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "3029:4:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2905:136:4" + }, + "src": "2888:154:4" + }, + { + "anonymous": false, + "documentation": null, + "id": 389, + "name": "TransferPiggy", + "nodeType": "EventDefinition", + "parameters": { + "id": 388, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 383, + "indexed": true, + "name": "from", + "nodeType": "VariableDeclaration", + "scope": 389, + "src": "3073:20:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 382, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3073:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 385, + "indexed": true, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 389, + "src": "3101:18:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 384, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3101:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 387, + "indexed": true, + "name": "tokenId", + "nodeType": "VariableDeclaration", + "scope": 389, + "src": "3127:23:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 386, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3127:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3065:89:4" + }, + "src": "3046:109:4" + }, + { + "anonymous": false, + "documentation": null, + "id": 415, + "name": "UpdateRFP", + "nodeType": "EventDefinition", + "parameters": { + "id": 414, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 391, + "indexed": true, + "name": "from", + "nodeType": "VariableDeclaration", + "scope": 415, + "src": "3182:20:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 390, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3182:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 393, + "indexed": true, + "name": "tokenId", + "nodeType": "VariableDeclaration", + "scope": 415, + "src": "3210:23:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 392, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3210:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 395, + "indexed": false, + "name": "collateralERC", + "nodeType": "VariableDeclaration", + "scope": 415, + "src": "3241:21:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 394, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3241:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 397, + "indexed": false, + "name": "premiumERC", + "nodeType": "VariableDeclaration", + "scope": 415, + "src": "3270:18:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 396, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3270:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 399, + "indexed": false, + "name": "dataResolverNow", + "nodeType": "VariableDeclaration", + "scope": 415, + "src": "3296:23:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 398, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3296:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 401, + "indexed": false, + "name": "dataResolverAtExpiry", + "nodeType": "VariableDeclaration", + "scope": 415, + "src": "3327:28:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 400, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3327:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 403, + "indexed": false, + "name": "reqCollateral", + "nodeType": "VariableDeclaration", + "scope": 415, + "src": "3363:21:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 402, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3363:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 405, + "indexed": false, + "name": "lotSize", + "nodeType": "VariableDeclaration", + "scope": 415, + "src": "3392:15:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 404, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3392:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 407, + "indexed": false, + "name": "strikePrice", + "nodeType": "VariableDeclaration", + "scope": 415, + "src": "3415:19:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 406, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3415:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 409, + "indexed": false, + "name": "expiry", + "nodeType": "VariableDeclaration", + "scope": 415, + "src": "3442:14:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 408, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3442:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 411, + "indexed": false, + "name": "isEuro", + "nodeType": "VariableDeclaration", + "scope": 415, + "src": "3464:11:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 410, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "3464:4:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 413, + "indexed": false, + "name": "isPut", + "nodeType": "VariableDeclaration", + "scope": 415, + "src": "3483:10:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 412, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "3483:4:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3174:323:4" + }, + "src": "3159:339:4" + }, + { + "anonymous": false, + "documentation": null, + "id": 423, + "name": "ReclaimAndBurn", + "nodeType": "EventDefinition", + "parameters": { + "id": 422, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 417, + "indexed": true, + "name": "from", + "nodeType": "VariableDeclaration", + "scope": 423, + "src": "3530:20:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 416, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3530:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 419, + "indexed": true, + "name": "tokenId", + "nodeType": "VariableDeclaration", + "scope": 423, + "src": "3558:23:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 418, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3558:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 421, + "indexed": true, + "name": "RFP", + "nodeType": "VariableDeclaration", + "scope": 423, + "src": "3589:16:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 420, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "3589:4:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3522:87:4" + }, + "src": "3502:108:4" + }, + { + "anonymous": false, + "documentation": null, + "id": 439, + "name": "StartAuction", + "nodeType": "EventDefinition", + "parameters": { + "id": 438, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 425, + "indexed": true, + "name": "from", + "nodeType": "VariableDeclaration", + "scope": 439, + "src": "3640:20:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 424, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3640:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 427, + "indexed": true, + "name": "tokenId", + "nodeType": "VariableDeclaration", + "scope": 439, + "src": "3668:23:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 426, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3668:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 429, + "indexed": false, + "name": "startPrice", + "nodeType": "VariableDeclaration", + "scope": 439, + "src": "3699:18:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 428, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3699:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 431, + "indexed": false, + "name": "reservePrice", + "nodeType": "VariableDeclaration", + "scope": 439, + "src": "3725:20:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 430, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3725:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 433, + "indexed": false, + "name": "auctionLength", + "nodeType": "VariableDeclaration", + "scope": 439, + "src": "3753:21:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 432, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3753:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 435, + "indexed": false, + "name": "timeStep", + "nodeType": "VariableDeclaration", + "scope": 439, + "src": "3782:16:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 434, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3782:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 437, + "indexed": false, + "name": "priceStep", + "nodeType": "VariableDeclaration", + "scope": 439, + "src": "3806:17:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 436, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3806:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3632:195:4" + }, + "src": "3614:214:4" + }, + { + "anonymous": false, + "documentation": null, + "id": 447, + "name": "EndAuction", + "nodeType": "EventDefinition", + "parameters": { + "id": 446, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 441, + "indexed": true, + "name": "from", + "nodeType": "VariableDeclaration", + "scope": 447, + "src": "3856:20:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 440, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3856:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 443, + "indexed": true, + "name": "tokenId", + "nodeType": "VariableDeclaration", + "scope": 447, + "src": "3884:23:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 442, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3884:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 445, + "indexed": true, + "name": "RFP", + "nodeType": "VariableDeclaration", + "scope": 447, + "src": "3915:16:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 444, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "3915:4:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3848:87:4" + }, + "src": "3832:104:4" + }, + { + "anonymous": false, + "documentation": null, + "id": 459, + "name": "SatisfyAuction", + "nodeType": "EventDefinition", + "parameters": { + "id": 458, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 449, + "indexed": true, + "name": "from", + "nodeType": "VariableDeclaration", + "scope": 459, + "src": "3968:20:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 448, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3968:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 451, + "indexed": true, + "name": "tokenId", + "nodeType": "VariableDeclaration", + "scope": 459, + "src": "3996:23:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 450, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3996:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 453, + "indexed": false, + "name": "paidPremium", + "nodeType": "VariableDeclaration", + "scope": 459, + "src": "4027:19:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 452, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4027:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 455, + "indexed": false, + "name": "change", + "nodeType": "VariableDeclaration", + "scope": 459, + "src": "4054:14:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 454, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4054:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 457, + "indexed": false, + "name": "auctionPremium", + "nodeType": "VariableDeclaration", + "scope": 459, + "src": "4076:22:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 456, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4076:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3960:142:4" + }, + "src": "3940:163:4" + }, + { + "anonymous": false, + "documentation": null, + "id": 469, + "name": "RequestSettlementPrice", + "nodeType": "EventDefinition", + "parameters": { + "id": 468, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 461, + "indexed": true, + "name": "feePayer", + "nodeType": "VariableDeclaration", + "scope": 469, + "src": "4143:24:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 460, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4143:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 463, + "indexed": true, + "name": "tokenId", + "nodeType": "VariableDeclaration", + "scope": 469, + "src": "4175:23:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 462, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4175:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 465, + "indexed": false, + "name": "oracleFee", + "nodeType": "VariableDeclaration", + "scope": 469, + "src": "4206:17:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 464, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4206:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 467, + "indexed": false, + "name": "dataResolver", + "nodeType": "VariableDeclaration", + "scope": 469, + "src": "4231:20:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 466, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4231:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4135:120:4" + }, + "src": "4107:149:4" + }, + { + "anonymous": false, + "documentation": null, + "id": 477, + "name": "OracleReturned", + "nodeType": "EventDefinition", + "parameters": { + "id": 476, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 471, + "indexed": true, + "name": "resolver", + "nodeType": "VariableDeclaration", + "scope": 477, + "src": "4288:24:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 470, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4288:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 473, + "indexed": true, + "name": "tokenId", + "nodeType": "VariableDeclaration", + "scope": 477, + "src": "4320:23:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 472, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4320:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 475, + "indexed": true, + "name": "price", + "nodeType": "VariableDeclaration", + "scope": 477, + "src": "4351:21:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 474, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4351:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4280:96:4" + }, + "src": "4260:117:4" + }, + { + "anonymous": false, + "documentation": null, + "id": 487, + "name": "SettlePiggy", + "nodeType": "EventDefinition", + "parameters": { + "id": 486, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 479, + "indexed": true, + "name": "from", + "nodeType": "VariableDeclaration", + "scope": 487, + "src": "4405:20:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 478, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4405:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 481, + "indexed": true, + "name": "tokenId", + "nodeType": "VariableDeclaration", + "scope": 487, + "src": "4432:23:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 480, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4432:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 483, + "indexed": true, + "name": "holderPayout", + "nodeType": "VariableDeclaration", + "scope": 487, + "src": "4462:28:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 482, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4462:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 485, + "indexed": false, + "name": "writerPayout", + "nodeType": "VariableDeclaration", + "scope": 487, + "src": "4497:20:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 484, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4497:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4398:123:4" + }, + "src": "4381:141:4" + }, + { + "anonymous": false, + "documentation": null, + "id": 495, + "name": "ClaimPayout", + "nodeType": "EventDefinition", + "parameters": { + "id": 494, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 489, + "indexed": true, + "name": "from", + "nodeType": "VariableDeclaration", + "scope": 495, + "src": "4551:20:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 488, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4551:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 491, + "indexed": true, + "name": "amount", + "nodeType": "VariableDeclaration", + "scope": 495, + "src": "4579:22:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 490, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4579:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 493, + "indexed": true, + "name": "paymentToken", + "nodeType": "VariableDeclaration", + "scope": 495, + "src": "4609:28:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 492, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4609:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4543:98:4" + }, + "src": "4526:116:4" + }, + { + "body": { + "id": 503, + "nodeType": "Block", + "src": "4915:92:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 501, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 498, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 283, + "src": "4945:5:4", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 499, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2820, + "src": "4953:3:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 500, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "4953:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "4945:18:4", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "id": 502, + "nodeType": "ExpressionStatement", + "src": "4945:18:4" + } + ] + }, + "documentation": "constructor should throw if various things aren't properly set\nalso should throw if the contract is not delegated an amount of collateral designated\nin the reference ERC-20 which is >= the collateral value of the piggy", + "id": 504, + "implemented": true, + "kind": "constructor", + "modifiers": [], + "name": "", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 496, + "nodeType": "ParameterList", + "parameters": [], + "src": "4899:2:4" + }, + "returnParameters": { + "id": 497, + "nodeType": "ParameterList", + "parameters": [], + "src": "4915:0:4" + }, + "scope": 2805, + "src": "4888:119:4", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 536, + "nodeType": "Block", + "src": "5180:223:4", + "statements": [ + { + "assignments": [ + 518, + null + ], + "declarations": [ + { + "constant": false, + "id": 518, + "name": "success", + "nodeType": "VariableDeclaration", + "scope": 536, + "src": "5187:12:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 517, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "5187:4:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + }, + null + ], + "id": 533, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "7472616e7366657246726f6d28616464726573732c616464726573732c75696e7432353629", + "id": 527, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5280:39:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_23b872dd7302113369cda2901243429419bec145408fa8b352b3dd92b66c680b", + "typeString": "literal_string \"transferFrom(address,address,uint256)\"" + }, + "value": "transferFrom(address,address,uint256)" + }, + { + "argumentTypes": null, + "id": 528, + "name": "_from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 508, + "src": "5329:5:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 529, + "name": "_to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 510, + "src": "5344:3:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 530, + "name": "_amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 512, + "src": "5357:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_23b872dd7302113369cda2901243429419bec145408fa8b352b3dd92b66c680b", + "typeString": "literal_string \"transferFrom(address,address,uint256)\"" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 525, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2807, + "src": "5247:3:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 526, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "encodeWithSignature", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "5247:23:4", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$", + "typeString": "function (string memory) pure returns (bytes memory)" + } + }, + "id": 531, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5247:125:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 521, + "name": "_ERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 506, + "src": "5226:6:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 520, + "name": "PaymentToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 274, + "src": "5213:12:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_PaymentToken_$274_$", + "typeString": "type(contract PaymentToken)" + } + }, + "id": 522, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5213:20:4", + "typeDescriptions": { + "typeIdentifier": "t_contract$_PaymentToken_$274", + "typeString": "contract PaymentToken" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_PaymentToken_$274", + "typeString": "contract PaymentToken" + } + ], + "id": 519, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "5205:7:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 523, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5205:29:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 524, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "call", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "5205:34:4", + "typeDescriptions": { + "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$", + "typeString": "function (bytes memory) payable returns (bool,bytes memory)" + } + }, + "id": 532, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5205:173:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$", + "typeString": "tuple(bool,bytes memory)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "5186:192:4" + }, + { + "expression": { + "argumentTypes": null, + "id": 534, + "name": "success", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 518, + "src": "5391:7:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 516, + "id": 535, + "nodeType": "Return", + "src": "5384:14:4" + } + ] + }, + "documentation": null, + "id": 537, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "attemptPaymentTransfer", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 513, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 506, + "name": "_ERC20", + "nodeType": "VariableDeclaration", + "scope": 537, + "src": "5086:14:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 505, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5086:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 508, + "name": "_from", + "nodeType": "VariableDeclaration", + "scope": 537, + "src": "5102:13:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 507, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5102:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 510, + "name": "_to", + "nodeType": "VariableDeclaration", + "scope": 537, + "src": "5117:11:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 509, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5117:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 512, + "name": "_amount", + "nodeType": "VariableDeclaration", + "scope": 537, + "src": "5130:15:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 511, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5130:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "5085:61:4" + }, + "returnParameters": { + "id": 516, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 515, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 537, + "src": "5172:4:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 514, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "5172:4:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "5171:6:4" + }, + "scope": 2805, + "src": "5054:349:4", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "private" + }, + { + "body": { + "id": 797, + "nodeType": "Block", + "src": "8764:1864:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 587, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 581, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 575, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 569, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 565, + "name": "_collateralERC", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 539, + "src": "8783:14:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 567, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8809: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": 566, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "8801:7:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 568, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8801:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "8783:28:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 574, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 570, + "name": "_premiumERC", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 541, + "src": "8820:11:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 572, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8843: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": 571, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "8835:7:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 573, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8835:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "8820:25:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "8783:62:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 580, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 576, + "name": "_dataResolverNow", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 543, + "src": "8854:16:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 578, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8882: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": 577, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "8874:7:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 579, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8874:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "8854:30:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "8783:101:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 586, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 582, + "name": "_dataResolverAtExpiry", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 545, + "src": "8893:21:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 584, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8926: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": 583, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "8918:7:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 585, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8918:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "8893:35:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "8783:145:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "6164647265737365732063616e6e6f74206265207a65726f", + "id": 588, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8935:26:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_04b4803be6c06d5f35b7b540ae4bce56518da084f117a7525381eb79fdf75203", + "typeString": "literal_string \"addresses cannot be zero\"" + }, + "value": "addresses cannot be zero" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_04b4803be6c06d5f35b7b540ae4bce56518da084f117a7525381eb79fdf75203", + "typeString": "literal_string \"addresses cannot be zero\"" + } + ], + "id": 564, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2823, + 2824 + ], + "referencedDeclaration": 2824, + "src": "8769:7:4", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 589, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8769:197:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 590, + "nodeType": "ExpressionStatement", + "src": "8769:197:4" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 606, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 602, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 598, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 594, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 592, + "name": "_collateral", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 547, + "src": "8985:11:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 593, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9000:1:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "8985:16:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 597, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 595, + "name": "_lotSize", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 549, + "src": "9010:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 596, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9022:1:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "9010:13:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "8985:38:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 601, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 599, + "name": "_strikePrice", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 551, + "src": "9032:12:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 600, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9048:1:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "9032:17:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "8985:64:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 605, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 603, + "name": "_expiry", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 553, + "src": "9058:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 604, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9069:1:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "9058:12:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "8985:85:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "6f7074696f6e20706172616d65746572732063616e6e6f74206265207a65726f", + "id": 607, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9077:34:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_ac99e164bea37b648bac329df7c0cdace8a6038fe5232a0b7866c4984b85edf8", + "typeString": "literal_string \"option parameters cannot be zero\"" + }, + "value": "option parameters cannot be zero" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_ac99e164bea37b648bac329df7c0cdace8a6038fe5232a0b7866c4984b85edf8", + "typeString": "literal_string \"option parameters cannot be zero\"" + } + ], + "id": 591, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2823, + 2824 + ], + "referencedDeclaration": 2824, + "src": "8971:7:4", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 608, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8971:145:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 609, + "nodeType": "ExpressionStatement", + "src": "8971:145:4" + }, + { + "condition": { + "argumentTypes": null, + "id": 611, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "9190:11:4", + "subExpression": { + "argumentTypes": null, + "id": 610, + "name": "_isRequest", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 559, + "src": "9191:10:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 630, + "nodeType": "IfStatement", + "src": "9186:233:4", + "trueBody": { + "id": 629, + "nodeType": "Block", + "src": "9203:216:4", + "statements": [ + { + "assignments": [ + 613 + ], + "declarations": [ + { + "constant": false, + "id": 613, + "name": "success", + "nodeType": "VariableDeclaration", + "scope": 629, + "src": "9210:12:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 612, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "9210:4:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 623, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 615, + "name": "_collateralERC", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 539, + "src": "9256:14:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 616, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2820, + "src": "9296:3:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 617, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "9296:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 619, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2843, + "src": "9323:4:4", + "typeDescriptions": { + "typeIdentifier": "t_contract$_SmartPiggies_$2805", + "typeString": "contract SmartPiggies" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_SmartPiggies_$2805", + "typeString": "contract SmartPiggies" + } + ], + "id": 618, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "9315:7:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 620, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9315:13:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 621, + "name": "_collateral", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 547, + "src": "9337:11:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 614, + "name": "attemptPaymentTransfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 537, + "src": "9225:22:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,address,address,uint256) returns (bool)" + } + }, + "id": 622, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9225:130:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "9210:145:4" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 625, + "name": "success", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 613, + "src": "9370:7:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "546f6b656e207472616e7366657220646964206e6f7420636f6d706c657465", + "id": 626, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9379:33:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_7dfd8cf2b3edad113675466e31dce9cad239a317a5d8a68bee6c9cb579f1bea2", + "typeString": "literal_string \"Token transfer did not complete\"" + }, + "value": "Token transfer did not complete" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_7dfd8cf2b3edad113675466e31dce9cad239a317a5d8a68bee6c9cb579f1bea2", + "typeString": "literal_string \"Token transfer did not complete\"" + } + ], + "id": 624, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2823, + 2824 + ], + "referencedDeclaration": 2824, + "src": "9362:7:4", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 627, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9362:51:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 628, + "nodeType": "ExpressionStatement", + "src": "9362:51:4" + } + ] + } + }, + { + "expression": { + "argumentTypes": null, + "id": 636, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 631, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 285, + "src": "9536:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "31", + "id": 634, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9558:1:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + } + ], + "expression": { + "argumentTypes": null, + "id": 632, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 285, + "src": "9546:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 633, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 224, + "src": "9546:11:4", + "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": 635, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9546:14:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "9536:24:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 637, + "nodeType": "ExpressionStatement", + "src": "9536:24:4" + }, + { + "assignments": [ + 639 + ], + "declarations": [ + { + "constant": false, + "id": 639, + "name": "p", + "nodeType": "VariableDeclaration", + "scope": 797, + "src": "9627:15:4", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage_ptr", + "typeString": "struct SmartPiggies.Piggy" + }, + "typeName": { + "contractScope": null, + "id": 638, + "name": "Piggy", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 346, + "src": "9627:5:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage_ptr", + "typeString": "struct SmartPiggies.Piggy" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 643, + "initialValue": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 640, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "9645:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 642, + "indexExpression": { + "argumentTypes": null, + "id": 641, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 285, + "src": "9653:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "9645:16:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "9627:34:4" + }, + { + "expression": { + "argumentTypes": null, + "id": 651, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 644, + "name": "p", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 639, + "src": "9666:1:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage_ptr", + "typeString": "struct SmartPiggies.Piggy storage pointer" + } + }, + "id": 647, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "addresses", + "nodeType": "MemberAccess", + "referencedDeclaration": 341, + "src": "9666:11:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAddresses_$298_storage", + "typeString": "struct SmartPiggies.DetailAddresses storage ref" + } + }, + "id": 648, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "holder", + "nodeType": "MemberAccess", + "referencedDeclaration": 289, + "src": "9666:18:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 649, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2820, + "src": "9687:3:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 650, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "9687:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "9666:31:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 652, + "nodeType": "ExpressionStatement", + "src": "9666:31:4" + }, + { + "expression": { + "argumentTypes": null, + "id": 659, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 653, + "name": "p", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 639, + "src": "9702:1:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage_ptr", + "typeString": "struct SmartPiggies.Piggy storage pointer" + } + }, + "id": 656, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "addresses", + "nodeType": "MemberAccess", + "referencedDeclaration": 341, + "src": "9702:11:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAddresses_$298_storage", + "typeString": "struct SmartPiggies.DetailAddresses storage ref" + } + }, + "id": 657, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "collateralERC", + "nodeType": "MemberAccess", + "referencedDeclaration": 291, + "src": "9702:25:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 658, + "name": "_collateralERC", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 539, + "src": "9730:14:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "9702:42:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 660, + "nodeType": "ExpressionStatement", + "src": "9702:42:4" + }, + { + "expression": { + "argumentTypes": null, + "id": 667, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 661, + "name": "p", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 639, + "src": "9749:1:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage_ptr", + "typeString": "struct SmartPiggies.Piggy storage pointer" + } + }, + "id": 664, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "addresses", + "nodeType": "MemberAccess", + "referencedDeclaration": 341, + "src": "9749:11:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAddresses_$298_storage", + "typeString": "struct SmartPiggies.DetailAddresses storage ref" + } + }, + "id": 665, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "premiumERC", + "nodeType": "MemberAccess", + "referencedDeclaration": 293, + "src": "9749:22:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 666, + "name": "_premiumERC", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 541, + "src": "9774:11:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "9749:36:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 668, + "nodeType": "ExpressionStatement", + "src": "9749:36:4" + }, + { + "expression": { + "argumentTypes": null, + "id": 675, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 669, + "name": "p", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 639, + "src": "9790:1:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage_ptr", + "typeString": "struct SmartPiggies.Piggy storage pointer" + } + }, + "id": 672, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "addresses", + "nodeType": "MemberAccess", + "referencedDeclaration": 341, + "src": "9790:11:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAddresses_$298_storage", + "typeString": "struct SmartPiggies.DetailAddresses storage ref" + } + }, + "id": 673, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "dataResolverNow", + "nodeType": "MemberAccess", + "referencedDeclaration": 295, + "src": "9790:27:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 674, + "name": "_dataResolverNow", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 543, + "src": "9820:16:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "9790:46:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 676, + "nodeType": "ExpressionStatement", + "src": "9790:46:4" + }, + { + "expression": { + "argumentTypes": null, + "id": 683, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 677, + "name": "p", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 639, + "src": "9841:1:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage_ptr", + "typeString": "struct SmartPiggies.Piggy storage pointer" + } + }, + "id": 680, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "addresses", + "nodeType": "MemberAccess", + "referencedDeclaration": 341, + "src": "9841:11:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAddresses_$298_storage", + "typeString": "struct SmartPiggies.DetailAddresses storage ref" + } + }, + "id": 681, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "dataResolverAtExpiry", + "nodeType": "MemberAccess", + "referencedDeclaration": 297, + "src": "9841:32:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 682, + "name": "_dataResolverAtExpiry", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 545, + "src": "9876:21:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "9841:56:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 684, + "nodeType": "ExpressionStatement", + "src": "9841:56:4" + }, + { + "expression": { + "argumentTypes": null, + "id": 693, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 685, + "name": "p", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 639, + "src": "9902:1:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage_ptr", + "typeString": "struct SmartPiggies.Piggy storage pointer" + } + }, + "id": 688, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "uintDetails", + "nodeType": "MemberAccess", + "referencedDeclaration": 343, + "src": "9902:13:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailUints_$313_storage", + "typeString": "struct SmartPiggies.DetailUints storage ref" + } + }, + "id": 689, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "collateralDecimals", + "nodeType": "MemberAccess", + "referencedDeclaration": 312, + "src": "9902:32:4", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 691, + "name": "_collateralERC", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 539, + "src": "9955:14:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 690, + "name": "_getERC20Decimals", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 872, + "src": "9937:17:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$_t_uint8_$", + "typeString": "function (address) returns (uint8)" + } + }, + "id": 692, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9937:33:4", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "src": "9902:68:4", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "id": 694, + "nodeType": "ExpressionStatement", + "src": "9902:68:4" + }, + { + "expression": { + "argumentTypes": null, + "id": 701, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 695, + "name": "p", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 639, + "src": "9975:1:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage_ptr", + "typeString": "struct SmartPiggies.Piggy storage pointer" + } + }, + "id": 698, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "uintDetails", + "nodeType": "MemberAccess", + "referencedDeclaration": 343, + "src": "9975:13:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailUints_$313_storage", + "typeString": "struct SmartPiggies.DetailUints storage ref" + } + }, + "id": 699, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "lotSize", + "nodeType": "MemberAccess", + "referencedDeclaration": 302, + "src": "9975:21:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 700, + "name": "_lotSize", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 549, + "src": "9999:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "9975:32:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 702, + "nodeType": "ExpressionStatement", + "src": "9975:32:4" + }, + { + "expression": { + "argumentTypes": null, + "id": 709, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 703, + "name": "p", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 639, + "src": "10012:1:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage_ptr", + "typeString": "struct SmartPiggies.Piggy storage pointer" + } + }, + "id": 706, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "uintDetails", + "nodeType": "MemberAccess", + "referencedDeclaration": 343, + "src": "10012:13:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailUints_$313_storage", + "typeString": "struct SmartPiggies.DetailUints storage ref" + } + }, + "id": 707, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "strikePrice", + "nodeType": "MemberAccess", + "referencedDeclaration": 304, + "src": "10012:25:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 708, + "name": "_strikePrice", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 551, + "src": "10040:12:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "10012:40:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 710, + "nodeType": "ExpressionStatement", + "src": "10012:40:4" + }, + { + "expression": { + "argumentTypes": null, + "id": 721, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 711, + "name": "p", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 639, + "src": "10057:1:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage_ptr", + "typeString": "struct SmartPiggies.Piggy storage pointer" + } + }, + "id": 714, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "uintDetails", + "nodeType": "MemberAccess", + "referencedDeclaration": 343, + "src": "10057:13:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailUints_$313_storage", + "typeString": "struct SmartPiggies.DetailUints storage ref" + } + }, + "id": 715, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "expiry", + "nodeType": "MemberAccess", + "referencedDeclaration": 306, + "src": "10057:20:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 718, + "name": "block", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2810, + "src": "10092:5:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_block", + "typeString": "block" + } + }, + "id": 719, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "number", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "10092:12:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 716, + "name": "_expiry", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 553, + "src": "10080:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 717, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 224, + "src": "10080:11:4", + "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": 720, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10080:25:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "10057:48:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 722, + "nodeType": "ExpressionStatement", + "src": "10057:48:4" + }, + { + "expression": { + "argumentTypes": null, + "id": 729, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 723, + "name": "p", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 639, + "src": "10110:1:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage_ptr", + "typeString": "struct SmartPiggies.Piggy storage pointer" + } + }, + "id": 726, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "flags", + "nodeType": "MemberAccess", + "referencedDeclaration": 345, + "src": "10110:7:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BoolFlags_$322_storage", + "typeString": "struct SmartPiggies.BoolFlags storage ref" + } + }, + "id": 727, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "isEuro", + "nodeType": "MemberAccess", + "referencedDeclaration": 317, + "src": "10110:14:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 728, + "name": "_isEuro", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 555, + "src": "10127:7:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "10110:24:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 730, + "nodeType": "ExpressionStatement", + "src": "10110:24:4" + }, + { + "expression": { + "argumentTypes": null, + "id": 737, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 731, + "name": "p", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 639, + "src": "10139:1:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage_ptr", + "typeString": "struct SmartPiggies.Piggy storage pointer" + } + }, + "id": 734, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "flags", + "nodeType": "MemberAccess", + "referencedDeclaration": 345, + "src": "10139:7:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BoolFlags_$322_storage", + "typeString": "struct SmartPiggies.BoolFlags storage ref" + } + }, + "id": 735, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "isPut", + "nodeType": "MemberAccess", + "referencedDeclaration": 319, + "src": "10139:13:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 736, + "name": "_isPut", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 557, + "src": "10155:6:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "10139:22:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 738, + "nodeType": "ExpressionStatement", + "src": "10139:22:4" + }, + { + "expression": { + "argumentTypes": null, + "id": 745, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 739, + "name": "p", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 639, + "src": "10166:1:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage_ptr", + "typeString": "struct SmartPiggies.Piggy storage pointer" + } + }, + "id": 742, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "flags", + "nodeType": "MemberAccess", + "referencedDeclaration": 345, + "src": "10166:7:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BoolFlags_$322_storage", + "typeString": "struct SmartPiggies.BoolFlags storage ref" + } + }, + "id": 743, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "isRequest", + "nodeType": "MemberAccess", + "referencedDeclaration": 315, + "src": "10166:17:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 744, + "name": "_isRequest", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 559, + "src": "10186:10:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "10166:30:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 746, + "nodeType": "ExpressionStatement", + "src": "10166:30:4" + }, + { + "condition": { + "argumentTypes": null, + "id": 747, + "name": "_isRequest", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 559, + "src": "10272:10:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 774, + "nodeType": "Block", + "src": "10344:89:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 764, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 757, + "name": "p", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 639, + "src": "10351:1:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage_ptr", + "typeString": "struct SmartPiggies.Piggy storage pointer" + } + }, + "id": 760, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "addresses", + "nodeType": "MemberAccess", + "referencedDeclaration": 341, + "src": "10351:11:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAddresses_$298_storage", + "typeString": "struct SmartPiggies.DetailAddresses storage ref" + } + }, + "id": 761, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "writer", + "nodeType": "MemberAccess", + "referencedDeclaration": 287, + "src": "10351:18:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 762, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2820, + "src": "10372:3:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 763, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "10372:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "10351:31:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 765, + "nodeType": "ExpressionStatement", + "src": "10351:31:4" + }, + { + "expression": { + "argumentTypes": null, + "id": 772, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 766, + "name": "p", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 639, + "src": "10389:1:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage_ptr", + "typeString": "struct SmartPiggies.Piggy storage pointer" + } + }, + "id": 769, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "uintDetails", + "nodeType": "MemberAccess", + "referencedDeclaration": 343, + "src": "10389:13:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailUints_$313_storage", + "typeString": "struct SmartPiggies.DetailUints storage ref" + } + }, + "id": 770, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "collateral", + "nodeType": "MemberAccess", + "referencedDeclaration": 300, + "src": "10389:24:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 771, + "name": "_collateral", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 547, + "src": "10416:11:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "10389:38:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 773, + "nodeType": "ExpressionStatement", + "src": "10389:38:4" + } + ] + }, + "id": 775, + "nodeType": "IfStatement", + "src": "10268:165:4", + "trueBody": { + "id": 756, + "nodeType": "Block", + "src": "10284:54:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 754, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 748, + "name": "p", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 639, + "src": "10291:1:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage_ptr", + "typeString": "struct SmartPiggies.Piggy storage pointer" + } + }, + "id": 751, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "uintDetails", + "nodeType": "MemberAccess", + "referencedDeclaration": 343, + "src": "10291:13:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailUints_$313_storage", + "typeString": "struct SmartPiggies.DetailUints storage ref" + } + }, + "id": 752, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "reqCollateral", + "nodeType": "MemberAccess", + "referencedDeclaration": 310, + "src": "10291:27:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 753, + "name": "_collateral", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 547, + "src": "10321:11:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "10291:41:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 755, + "nodeType": "ExpressionStatement", + "src": "10291:41:4" + } + ] + } + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 777, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2820, + "src": "10461:3:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 778, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "10461:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 779, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 285, + "src": "10473:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 776, + "name": "_addTokenToOwnedPiggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2578, + "src": "10437:23:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 780, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10437:44:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 781, + "nodeType": "ExpressionStatement", + "src": "10437:44:4" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 783, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2820, + "src": "10510:3:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 784, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "10510:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 785, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 285, + "src": "10527:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 786, + "name": "_strikePrice", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 551, + "src": "10541:12:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 789, + "name": "block", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2810, + "src": "10572:5:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_block", + "typeString": "block" + } + }, + "id": 790, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "number", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "10572:12:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 787, + "name": "_expiry", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 553, + "src": "10560:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 788, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 224, + "src": "10560:11:4", + "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": 791, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10560:25:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 792, + "name": "_isRequest", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 559, + "src": "10592:10:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 782, + "name": "CreatePiggy", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 381, + "src": "10492:11:4", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_bool_$returns$__$", + "typeString": "function (address,uint256,uint256,uint256,bool)" + } + }, + "id": 793, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10492:115:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 794, + "nodeType": "EmitStatement", + "src": "10487:120:4" + }, + { + "expression": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 795, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10620:4:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 563, + "id": 796, + "nodeType": "Return", + "src": "10613:11:4" + } + ] + }, + "documentation": "@notice Create a new ERC-59 token\n@dev Throws if `_collateralERC` is not a valid Ethereum (ERC-20) address.\nThrows if `_premiumERC` is not a valid Ethereum (ERC-20) address (may be same\nas `_collateralERC`).\nThrows if `_oracle` is not a valid Ethereum address.\nThrows if `_expiry` < block.number.\nIf `_asRequest` is true, throws if `_reqCollateral` == 0.\nIf `_asRequest` is false, throws if msg.sender has not delegated at least `_collateral`\nin the ERC-20 token whose contract is `_collateralERC` to the ERC-59 contract.\nWhen a new token is created, msg.sender should be recorded as the creator and owner.\nIf `_asRequest` is true, the zero address should be recorded as the seller.\nIf `_asRequest` is false, msg.sender should be recorded as the seller.\nIf `_asRequest` is false, `_reqCollateral` will be irrelevant and should be captured as 0.\nIf `_asRequest` is false, the ERC-59 contract must take ownership of `_collateral` amount\nof ERC-20 tokens governed by the `_collateralERC` contract.\n@param _collateralERC The address of the reference ERC-20 token to be used as collateral\n@param _premiumERC The address of the reference ERC-20 token to be used to pay the premium\nparam _oracle The address of a service contract which will return the settlement price\nparam _asRequest If true, will create the token as an \"RFP\" / request for a particular option\nparam _underlyingNow An identifier for the reference underlying which the contract at `_oracle`\nis able to parse to return the current price of the underlying\nparam _underlyingExpiry An identifier for the reference underlying which the contract at\n`_oracle` is able to parse to return the price of the underlying at `_expiry`\n@param _collateral The amount of collateral for the option, denominated in units of the token\nat the `_collateralERC` address\n@param _lotSize A multiplier on the settlement price used to determine settlement claims\n@param _strikePrice The strike value of the option, in the same units as the settlement price\n@param _expiry The block height at which the option will expire\nparam _reqCollateral The amount of collateral desired in the option, if creating with\n`_asRequest` == true, denominated in units of the token at the `_collateralERC` address\n@param _isEuro If true, the option can only be settled at or after `_expiry` is reached, else\nit can be settled at any time\n@param _isPut If true, the settlement claims will be calculated for a put option; else they\nwill be calculated for a call option", + "id": 798, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "createPiggy", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 560, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 539, + "name": "_collateralERC", + "nodeType": "VariableDeclaration", + "scope": 798, + "src": "8477:22:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 538, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8477:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 541, + "name": "_premiumERC", + "nodeType": "VariableDeclaration", + "scope": 798, + "src": "8504:19:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 540, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8504:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 543, + "name": "_dataResolverNow", + "nodeType": "VariableDeclaration", + "scope": 798, + "src": "8528:24:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 542, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8528:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 545, + "name": "_dataResolverAtExpiry", + "nodeType": "VariableDeclaration", + "scope": 798, + "src": "8557:29:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 544, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8557:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 547, + "name": "_collateral", + "nodeType": "VariableDeclaration", + "scope": 798, + "src": "8591:19:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 546, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8591:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 549, + "name": "_lotSize", + "nodeType": "VariableDeclaration", + "scope": 798, + "src": "8615:16:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 548, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8615:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 551, + "name": "_strikePrice", + "nodeType": "VariableDeclaration", + "scope": 798, + "src": "8636:20:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 550, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8636:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 553, + "name": "_expiry", + "nodeType": "VariableDeclaration", + "scope": 798, + "src": "8661:15:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 552, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8661:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 555, + "name": "_isEuro", + "nodeType": "VariableDeclaration", + "scope": 798, + "src": "8681:12:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 554, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "8681:4:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 557, + "name": "_isPut", + "nodeType": "VariableDeclaration", + "scope": 798, + "src": "8698:11:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 556, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "8698:4:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 559, + "name": "_isRequest", + "nodeType": "VariableDeclaration", + "scope": 798, + "src": "8714:15:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 558, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "8714:4:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "8472:262:4" + }, + "returnParameters": { + "id": 563, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 562, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 798, + "src": "8757:4:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 561, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "8757:4:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "8756:6:4" + }, + "scope": 2805, + "src": "8452:2176:4", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 871, + "nodeType": "Block", + "src": "10777:449:4", + "statements": [ + { + "assignments": [ + 806, + 808 + ], + "declarations": [ + { + "constant": false, + "id": 806, + "name": "success", + "nodeType": "VariableDeclaration", + "scope": 871, + "src": "10782:12:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 805, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "10782:4:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 808, + "name": "_decBytes", + "nodeType": "VariableDeclaration", + "scope": 871, + "src": "10796:22:4", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 807, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "10796:5:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 820, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "646563696d616c732829", + "id": 817, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10888:12:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_313ce567add4d438edf58b94ff345d7d38c45b17dfc0f947988d7819dca364f9", + "typeString": "literal_string \"decimals()\"" + }, + "value": "decimals()" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_313ce567add4d438edf58b94ff345d7d38c45b17dfc0f947988d7819dca364f9", + "typeString": "literal_string \"decimals()\"" + } + ], + "expression": { + "argumentTypes": null, + "id": 815, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2807, + "src": "10864:3:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 816, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "encodeWithSignature", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "10864:23:4", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$", + "typeString": "function (string memory) pure returns (bytes memory)" + } + }, + "id": 818, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10864:37:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 811, + "name": "_ERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 800, + "src": "10843:6:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 810, + "name": "PaymentToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 274, + "src": "10830:12:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_PaymentToken_$274_$", + "typeString": "type(contract PaymentToken)" + } + }, + "id": 812, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10830:20:4", + "typeDescriptions": { + "typeIdentifier": "t_contract$_PaymentToken_$274", + "typeString": "contract PaymentToken" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_PaymentToken_$274", + "typeString": "contract PaymentToken" + } + ], + "id": 809, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "10822:7:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 813, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10822:29:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 814, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "call", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "10822:34:4", + "typeDescriptions": { + "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$", + "typeString": "function (bytes memory) payable returns (bool,bytes memory)" + } + }, + "id": 819, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10822:85:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$", + "typeString": "tuple(bool,bytes memory)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "10781:126:4" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 822, + "name": "success", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 806, + "src": "10920:7:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "636f6c6c61746572616c204552432d323020636f6e747261637420646f6573206e6f742070726f7065726c79207370656369667920646563696d616c73", + "id": 823, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10929:63:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_e3d386bf715f6ade1ba03d3571c7bd8099823592469a72ba820b6c3855a0c7b7", + "typeString": "literal_string \"collateral ERC-20 contract does not properly specify decimals\"" + }, + "value": "collateral ERC-20 contract does not properly specify decimals" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_e3d386bf715f6ade1ba03d3571c7bd8099823592469a72ba820b6c3855a0c7b7", + "typeString": "literal_string \"collateral ERC-20 contract does not properly specify decimals\"" + } + ], + "id": 821, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2823, + 2824 + ], + "referencedDeclaration": 2824, + "src": "10912:7:4", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 824, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10912:81:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 825, + "nodeType": "ExpressionStatement", + "src": "10912:81:4" + }, + { + "assignments": [ + 827 + ], + "declarations": [ + { + "constant": false, + "id": 827, + "name": "_ERCdecimals", + "nodeType": "VariableDeclaration", + "scope": 871, + "src": "11028:20:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 826, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "11028:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 828, + "initialValue": null, + "nodeType": "VariableDeclarationStatement", + "src": "11028:20:4" + }, + { + "body": { + "id": 865, + "nodeType": "Block", + "src": "11097:96:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 863, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 840, + "name": "_ERCdecimals", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 827, + "src": "11104:12:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 862, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 841, + "name": "_ERCdecimals", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 827, + "src": "11119:12:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 861, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 843, + "name": "_decBytes", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 808, + "src": "11140:9:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 845, + "indexExpression": { + "argumentTypes": null, + "id": 844, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 830, + "src": "11150:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "11140:12:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + } + ], + "id": 842, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "11134:5:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint8_$", + "typeString": "type(uint8)" + }, + "typeName": "uint8" + }, + "id": 846, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "11134:19:4", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 859, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "hexValue": "32", + "id": 847, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "11155:1:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + }, + "nodeType": "BinaryOperation", + "operator": "**", + "rightExpression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 857, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "hexValue": "38", + "id": 848, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "11159:1:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_8_by_1", + "typeString": "int_const 8" + }, + "value": "8" + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 855, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 849, + "name": "_decBytes", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 808, + "src": "11162:9:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 850, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "11162:16:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 853, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 851, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 830, + "src": "11180:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "argumentTypes": null, + "hexValue": "31", + "id": 852, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "11182:1:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "11180:3:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 854, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "11179:5:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "11162:22:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 856, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "11161:24:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "11159:26:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 858, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "11158:28:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "11155:31:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 860, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "11154:33:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "11134:53:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "11119:68:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "11104:83:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 864, + "nodeType": "ExpressionStatement", + "src": "11104:83:4" + } + ] + }, + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 836, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 833, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 830, + "src": "11070:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 834, + "name": "_decBytes", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 808, + "src": "11074:9:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 835, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "11074:16:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "11070:20:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 866, + "initializationExpression": { + "assignments": [ + 830 + ], + "declarations": [ + { + "constant": false, + "id": 830, + "name": "i", + "nodeType": "VariableDeclaration", + "scope": 866, + "src": "11057:9:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 829, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "11057:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 832, + "initialValue": { + "argumentTypes": null, + "hexValue": "30", + "id": 831, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "11067:1:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "11057:11:4" + }, + "loopExpression": { + "expression": { + "argumentTypes": null, + "id": 838, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "11092:3:4", + "subExpression": { + "argumentTypes": null, + "id": 837, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 830, + "src": "11092:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 839, + "nodeType": "ExpressionStatement", + "src": "11092:3:4" + }, + "nodeType": "ForStatement", + "src": "11053:140:4" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 868, + "name": "_ERCdecimals", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 827, + "src": "11210:12:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 867, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "11204:5:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint8_$", + "typeString": "type(uint8)" + }, + "typeName": "uint8" + }, + "id": 869, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "11204:19:4", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "functionReturnParameters": 804, + "id": 870, + "nodeType": "Return", + "src": "11197:26:4" + } + ] + }, + "documentation": null, + "id": 872, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_getERC20Decimals", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 801, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 800, + "name": "_ERC20", + "nodeType": "VariableDeclaration", + "scope": 872, + "src": "10732:14:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 799, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "10732:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "10731:16:4" + }, + "returnParameters": { + "id": 804, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 803, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 872, + "src": "10770:5:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 802, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "10770:5:4", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "10769:7:4" + }, + "scope": 2805, + "src": "10705:521:4", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 883, + "nodeType": "Block", + "src": "11396:35:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 879, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "11409:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 881, + "indexExpression": { + "argumentTypes": null, + "id": 880, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 874, + "src": "11417:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "11409:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "functionReturnParameters": 878, + "id": 882, + "nodeType": "Return", + "src": "11402:24:4" + } + ] + }, + "documentation": null, + "id": 884, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getDetails", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 875, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 874, + "name": "_tokenId", + "nodeType": "VariableDeclaration", + "scope": 884, + "src": "11329:16:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 873, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "11329:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "11328:18:4" + }, + "returnParameters": { + "id": 878, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 877, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 884, + "src": "11380:12:4", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_memory_ptr", + "typeString": "struct SmartPiggies.Piggy" + }, + "typeName": { + "contractScope": null, + "id": 876, + "name": "Piggy", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 346, + "src": "11380:5:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage_ptr", + "typeString": "struct SmartPiggies.Piggy" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "11379:14:4" + }, + "scope": 2805, + "src": "11309:122:4", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 895, + "nodeType": "Block", + "src": "11601:36:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 891, + "name": "auctions", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 369, + "src": "11614:8:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_DetailAuction_$339_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.DetailAuction storage ref)" + } + }, + "id": 893, + "indexExpression": { + "argumentTypes": null, + "id": 892, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 886, + "src": "11623:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "11614:18:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAuction_$339_storage", + "typeString": "struct SmartPiggies.DetailAuction storage ref" + } + }, + "functionReturnParameters": 890, + "id": 894, + "nodeType": "Return", + "src": "11607:25:4" + } + ] + }, + "documentation": null, + "id": 896, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getAuctionDetails", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 887, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 886, + "name": "_tokenId", + "nodeType": "VariableDeclaration", + "scope": 896, + "src": "11526:16:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 885, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "11526:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "11525:18:4" + }, + "returnParameters": { + "id": 890, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 889, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 896, + "src": "11577:20:4", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAuction_$339_memory_ptr", + "typeString": "struct SmartPiggies.DetailAuction" + }, + "typeName": { + "contractScope": null, + "id": 888, + "name": "DetailAuction", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 339, + "src": "11577:13:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAuction_$339_storage_ptr", + "typeString": "struct SmartPiggies.DetailAuction" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "11576:22:4" + }, + "scope": 2805, + "src": "11499:138:4", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 917, + "nodeType": "Block", + "src": "12119:99:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 909, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 905, + "name": "_owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 898, + "src": "12133:6:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 907, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "12151: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": 906, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "12143:7:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 908, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "12143:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "12133:20:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "616464726573732063616e6e6f74206265207a65726f", + "id": 910, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "12155:24:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_a9941ee6da268eebad354f3ad5eda2e3e27f59ae11bbb28a54fc77e5ab33eca9", + "typeString": "literal_string \"address cannot be zero\"" + }, + "value": "address cannot be zero" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_a9941ee6da268eebad354f3ad5eda2e3e27f59ae11bbb28a54fc77e5ab33eca9", + "typeString": "literal_string \"address cannot be zero\"" + } + ], + "id": 904, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2823, + 2824 + ], + "referencedDeclaration": 2824, + "src": "12125:7:4", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 911, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "12125:55:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 912, + "nodeType": "ExpressionStatement", + "src": "12125:55:4" + }, + { + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 913, + "name": "ownedPiggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 357, + "src": "12193:12:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_uint256_$dyn_storage_$", + "typeString": "mapping(address => uint256[] storage ref)" + } + }, + "id": 915, + "indexExpression": { + "argumentTypes": null, + "id": 914, + "name": "_owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 898, + "src": "12206:6:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "12193:20:4", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage", + "typeString": "uint256[] storage ref" + } + }, + "functionReturnParameters": 903, + "id": 916, + "nodeType": "Return", + "src": "12186:27:4" + } + ] + }, + "documentation": "@notice Count the number of ERC-59 tokens owned by a particular address\n@dev ERC-59 tokens assigned to the zero address are considered invalid, and this\nfunction throws for queries about the zero address.\n@param _owner An address for which to query the balance of ERC-59 tokens\n@return The number of ERC-59 tokens owned by `_owner`, possibly zero", + "id": 918, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getOwnedPiggies", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 899, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 898, + "name": "_owner", + "nodeType": "VariableDeclaration", + "scope": 918, + "src": "12050:14:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 897, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "12050:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "12049:16:4" + }, + "returnParameters": { + "id": 903, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 902, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 918, + "src": "12099:16:4", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 900, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "12099:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 901, + "length": null, + "nodeType": "ArrayTypeName", + "src": "12099:9:4", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "12098:18:4" + }, + "scope": 2805, + "src": "12025:193:4", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 942, + "nodeType": "Block", + "src": "12323:108:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 932, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 928, + "name": "_owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 920, + "src": "12337:6:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 930, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "12355: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": 929, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "12347:7:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 931, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "12347:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "12337:20:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "616464726573732063616e6e6f74206265207a65726f", + "id": 933, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "12359:24:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_a9941ee6da268eebad354f3ad5eda2e3e27f59ae11bbb28a54fc77e5ab33eca9", + "typeString": "literal_string \"address cannot be zero\"" + }, + "value": "address cannot be zero" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_a9941ee6da268eebad354f3ad5eda2e3e27f59ae11bbb28a54fc77e5ab33eca9", + "typeString": "literal_string \"address cannot be zero\"" + } + ], + "id": 927, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2823, + 2824 + ], + "referencedDeclaration": 2824, + "src": "12329:7:4", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 934, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "12329:55:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 935, + "nodeType": "ExpressionStatement", + "src": "12329:55:4" + }, + { + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 936, + "name": "ERC20balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 352, + "src": "12397:13:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + } + }, + "id": 938, + "indexExpression": { + "argumentTypes": null, + "id": 937, + "name": "_owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 920, + "src": "12411:6:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "12397:21:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 940, + "indexExpression": { + "argumentTypes": null, + "id": 939, + "name": "_erc20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 922, + "src": "12419:6:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "12397:29:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 926, + "id": 941, + "nodeType": "Return", + "src": "12390:36:4" + } + ] + }, + "documentation": null, + "id": 943, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getERC20balance", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 923, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 920, + "name": "_owner", + "nodeType": "VariableDeclaration", + "scope": 943, + "src": "12247:14:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 919, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "12247:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 922, + "name": "_erc20", + "nodeType": "VariableDeclaration", + "scope": 943, + "src": "12263:14:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 921, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "12263:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "12246:32:4" + }, + "returnParameters": { + "id": 926, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 925, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 943, + "src": "12312:7:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 924, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "12312:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "12311:9:4" + }, + "scope": 2805, + "src": "12222:209:4", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 970, + "nodeType": "Block", + "src": "12516:170:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 960, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 953, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2820, + "src": "12530:3:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 954, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "12530:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 955, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "12544:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 957, + "indexExpression": { + "argumentTypes": null, + "id": 956, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 949, + "src": "12552:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "12544:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 958, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "addresses", + "nodeType": "MemberAccess", + "referencedDeclaration": 341, + "src": "12544:27:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAddresses_$298_storage", + "typeString": "struct SmartPiggies.DetailAddresses storage ref" + } + }, + "id": 959, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "holder", + "nodeType": "MemberAccess", + "referencedDeclaration": 289, + "src": "12544:34:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "12530:48:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "6d73672e73656e646572206973206e6f7420746865206f776e6572", + "id": 961, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "12580:29:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_fe1f2fd5008784e7e36b999381f1742f307634673a00747c7e17263f99f9413f", + "typeString": "literal_string \"msg.sender is not the owner\"" + }, + "value": "msg.sender is not the owner" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_fe1f2fd5008784e7e36b999381f1742f307634673a00747c7e17263f99f9413f", + "typeString": "literal_string \"msg.sender is not the owner\"" + } + ], + "id": 952, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2823, + 2824 + ], + "referencedDeclaration": 2824, + "src": "12522:7:4", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 962, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "12522:88:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 963, + "nodeType": "ExpressionStatement", + "src": "12522:88:4" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 965, + "name": "_from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 945, + "src": "12660:5:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 966, + "name": "_to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 947, + "src": "12667:3:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 967, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 949, + "src": "12672:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 964, + "name": "_internalTransfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1025, + "src": "12642:17:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 968, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "12642:39:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 969, + "nodeType": "ExpressionStatement", + "src": "12642:39:4" + } + ] + }, + "documentation": null, + "id": 971, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "transferFrom", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 950, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 945, + "name": "_from", + "nodeType": "VariableDeclaration", + "scope": 971, + "src": "12457:13:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 944, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "12457:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 947, + "name": "_to", + "nodeType": "VariableDeclaration", + "scope": 971, + "src": "12472:11:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 946, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "12472:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 949, + "name": "_tokenId", + "nodeType": "VariableDeclaration", + "scope": 971, + "src": "12485:16:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 948, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "12485:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "12456:46:4" + }, + "returnParameters": { + "id": 951, + "nodeType": "ParameterList", + "parameters": [], + "src": "12516:0:4" + }, + "scope": 2805, + "src": "12435:251:4", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 1024, + "nodeType": "Block", + "src": "12846:337:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 987, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 981, + "name": "_from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 973, + "src": "12860:5:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 982, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "12869:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 984, + "indexExpression": { + "argumentTypes": null, + "id": 983, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 977, + "src": "12877:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "12869:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 985, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "addresses", + "nodeType": "MemberAccess", + "referencedDeclaration": 341, + "src": "12869:27:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAddresses_$298_storage", + "typeString": "struct SmartPiggies.DetailAddresses storage ref" + } + }, + "id": 986, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "holder", + "nodeType": "MemberAccess", + "referencedDeclaration": 289, + "src": "12869:34:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "12860:43:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "66726f6d2061646472657373206973206e6f7420746865206f776e6572", + "id": 988, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "12905:31:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_99843832e911c3c269d6e837b97801c2d642529f985a3b8389d66cfd6f915338", + "typeString": "literal_string \"from address is not the owner\"" + }, + "value": "from address is not the owner" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_99843832e911c3c269d6e837b97801c2d642529f985a3b8389d66cfd6f915338", + "typeString": "literal_string \"from address is not the owner\"" + } + ], + "id": 980, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2823, + 2824 + ], + "referencedDeclaration": 2824, + "src": "12852:7:4", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 989, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "12852:85:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 990, + "nodeType": "ExpressionStatement", + "src": "12852:85:4" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 996, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 992, + "name": "_to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 975, + "src": "12951:3:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 994, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "12966: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": 993, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "12958:7:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 995, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "12958:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "12951:17:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "746f2061646472657373206973207a65726f", + "id": 997, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "12970:20:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_ba95b908b4488c4477717d86e0713cc9cd35576f43001de482194a4df6630027", + "typeString": "literal_string \"to address is zero\"" + }, + "value": "to address is zero" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_ba95b908b4488c4477717d86e0713cc9cd35576f43001de482194a4df6630027", + "typeString": "literal_string \"to address is zero\"" + } + ], + "id": 991, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2823, + 2824 + ], + "referencedDeclaration": 2824, + "src": "12943:7:4", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 998, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "12943:48:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 999, + "nodeType": "ExpressionStatement", + "src": "12943:48:4" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1001, + "name": "_from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 973, + "src": "13026:5:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1002, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 977, + "src": "13033:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1000, + "name": "_removeTokenFromOwnedPiggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2635, + "src": "12997:28:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 1003, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "12997:45:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1004, + "nodeType": "ExpressionStatement", + "src": "12997:45:4" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1006, + "name": "_to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 975, + "src": "13072:3:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1007, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 977, + "src": "13077:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1005, + "name": "_addTokenToOwnedPiggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2578, + "src": "13048:23:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 1008, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "13048:38:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1009, + "nodeType": "ExpressionStatement", + "src": "13048:38:4" + }, + { + "expression": { + "argumentTypes": null, + "id": 1016, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1010, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "13092:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 1012, + "indexExpression": { + "argumentTypes": null, + "id": 1011, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 977, + "src": "13100:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "13092:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 1013, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "addresses", + "nodeType": "MemberAccess", + "referencedDeclaration": 341, + "src": "13092:27:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAddresses_$298_storage", + "typeString": "struct SmartPiggies.DetailAddresses storage ref" + } + }, + "id": 1014, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "holder", + "nodeType": "MemberAccess", + "referencedDeclaration": 289, + "src": "13092:34:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 1015, + "name": "_to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 975, + "src": "13129:3:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "13092:40:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 1017, + "nodeType": "ExpressionStatement", + "src": "13092:40:4" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1019, + "name": "_from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 973, + "src": "13157:5:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1020, + "name": "_to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 975, + "src": "13164:3:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1021, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 977, + "src": "13169:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1018, + "name": "TransferPiggy", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 389, + "src": "13143:13:4", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 1022, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "13143:35:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1023, + "nodeType": "EmitStatement", + "src": "13138:40:4" + } + ] + }, + "documentation": null, + "id": 1025, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_internalTransfer", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 978, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 973, + "name": "_from", + "nodeType": "VariableDeclaration", + "scope": 1025, + "src": "12785:13:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 972, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "12785:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 975, + "name": "_to", + "nodeType": "VariableDeclaration", + "scope": 1025, + "src": "12800:11:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 974, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "12800:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 977, + "name": "_tokenId", + "nodeType": "VariableDeclaration", + "scope": 1025, + "src": "12813:16:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 976, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "12813:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "12784:46:4" + }, + "returnParameters": { + "id": 979, + "nodeType": "ParameterList", + "parameters": [], + "src": "12846:0:4" + }, + "scope": 2805, + "src": "12758:425:4", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 1230, + "nodeType": "Block", + "src": "13902:1574:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 1060, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1053, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "13916:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 1055, + "indexExpression": { + "argumentTypes": null, + "id": 1054, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1027, + "src": "13924:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "13916:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 1056, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "addresses", + "nodeType": "MemberAccess", + "referencedDeclaration": 341, + "src": "13916:27:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAddresses_$298_storage", + "typeString": "struct SmartPiggies.DetailAddresses storage ref" + } + }, + "id": 1057, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "holder", + "nodeType": "MemberAccess", + "referencedDeclaration": 289, + "src": "13916:34:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1058, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2820, + "src": "13954:3:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1059, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "13954:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "13916:48:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "796f75206d757374206f776e207468652052465020746f20757064617465206974", + "id": 1061, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "13966:35:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_1e7bdd33272a5c5d01810a40a6212bfe78a37d0eecf21f79c5c83d78fb8884a2", + "typeString": "literal_string \"you must own the RFP to update it\"" + }, + "value": "you must own the RFP to update it" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_1e7bdd33272a5c5d01810a40a6212bfe78a37d0eecf21f79c5c83d78fb8884a2", + "typeString": "literal_string \"you must own the RFP to update it\"" + } + ], + "id": 1052, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2823, + 2824 + ], + "referencedDeclaration": 2824, + "src": "13908:7:4", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 1062, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "13908:94:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1063, + "nodeType": "ExpressionStatement", + "src": "13908:94:4" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1065, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "14016:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 1067, + "indexExpression": { + "argumentTypes": null, + "id": 1066, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1027, + "src": "14024:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "14016:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 1068, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "flags", + "nodeType": "MemberAccess", + "referencedDeclaration": 345, + "src": "14016:23:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BoolFlags_$322_storage", + "typeString": "struct SmartPiggies.BoolFlags storage ref" + } + }, + "id": 1069, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "isRequest", + "nodeType": "MemberAccess", + "referencedDeclaration": 315, + "src": "14016:33:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "796f752063616e206f6e6c792075706461746520616e20524650", + "id": 1070, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "14051:28:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_f6a873ed8c71059d518992e0b4cceea2bcfd7fa380403e709a78f342fbbb8a76", + "typeString": "literal_string \"you can only update an RFP\"" + }, + "value": "you can only update an RFP" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_f6a873ed8c71059d518992e0b4cceea2bcfd7fa380403e709a78f342fbbb8a76", + "typeString": "literal_string \"you can only update an RFP\"" + } + ], + "id": 1064, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2823, + 2824 + ], + "referencedDeclaration": 2824, + "src": "14008:7:4", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 1071, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "14008:72:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1072, + "nodeType": "ExpressionStatement", + "src": "14008:72:4" + }, + { + "assignments": [ + 1074 + ], + "declarations": [ + { + "constant": false, + "id": 1074, + "name": "expiryBlock", + "nodeType": "VariableDeclaration", + "scope": 1230, + "src": "14086:19:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1073, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "14086:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1075, + "initialValue": null, + "nodeType": "VariableDeclarationStatement", + "src": "14086:19:4" + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 1080, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1076, + "name": "_collateralERC", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1029, + "src": "14115:14:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 1078, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "14141: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": 1077, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "14133:7:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 1079, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "14133:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "14115:28:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 1090, + "nodeType": "IfStatement", + "src": "14111:107:4", + "trueBody": { + "id": 1089, + "nodeType": "Block", + "src": "14145:73:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 1087, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1081, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "14153:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 1083, + "indexExpression": { + "argumentTypes": null, + "id": 1082, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1027, + "src": "14161:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "14153:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 1084, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "addresses", + "nodeType": "MemberAccess", + "referencedDeclaration": 341, + "src": "14153:27:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAddresses_$298_storage", + "typeString": "struct SmartPiggies.DetailAddresses storage ref" + } + }, + "id": 1085, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "collateralERC", + "nodeType": "MemberAccess", + "referencedDeclaration": 291, + "src": "14153:41:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 1086, + "name": "_collateralERC", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1029, + "src": "14197:14:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "14153:58:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 1088, + "nodeType": "ExpressionStatement", + "src": "14153:58:4" + } + ] + } + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 1095, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1091, + "name": "_premiumERC", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1031, + "src": "14227:11:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 1093, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "14250: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": 1092, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "14242:7:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 1094, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "14242:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "14227:25:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 1105, + "nodeType": "IfStatement", + "src": "14223:98:4", + "trueBody": { + "id": 1104, + "nodeType": "Block", + "src": "14254:67:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 1102, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1096, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "14262:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 1098, + "indexExpression": { + "argumentTypes": null, + "id": 1097, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1027, + "src": "14270:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "14262:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 1099, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "addresses", + "nodeType": "MemberAccess", + "referencedDeclaration": 341, + "src": "14262:27:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAddresses_$298_storage", + "typeString": "struct SmartPiggies.DetailAddresses storage ref" + } + }, + "id": 1100, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "premiumERC", + "nodeType": "MemberAccess", + "referencedDeclaration": 293, + "src": "14262:38:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 1101, + "name": "_premiumERC", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1031, + "src": "14303:11:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "14262:52:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 1103, + "nodeType": "ExpressionStatement", + "src": "14262:52:4" + } + ] + } + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 1110, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1106, + "name": "_dataResolverNow", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1033, + "src": "14330:16:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 1108, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "14358: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": 1107, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "14350:7:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 1109, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "14350:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "14330:30:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 1120, + "nodeType": "IfStatement", + "src": "14326:113:4", + "trueBody": { + "id": 1119, + "nodeType": "Block", + "src": "14362:77:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 1117, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1111, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "14370:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 1113, + "indexExpression": { + "argumentTypes": null, + "id": 1112, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1027, + "src": "14378:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "14370:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 1114, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "addresses", + "nodeType": "MemberAccess", + "referencedDeclaration": 341, + "src": "14370:27:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAddresses_$298_storage", + "typeString": "struct SmartPiggies.DetailAddresses storage ref" + } + }, + "id": 1115, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "dataResolverNow", + "nodeType": "MemberAccess", + "referencedDeclaration": 295, + "src": "14370:43:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 1116, + "name": "_dataResolverNow", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1033, + "src": "14416:16:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "14370:62:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 1118, + "nodeType": "ExpressionStatement", + "src": "14370:62:4" + } + ] + } + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 1125, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1121, + "name": "_dataResolverAtExpiry", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1035, + "src": "14448:21:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 1123, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "14481: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": 1122, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "14473:7:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 1124, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "14473:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "14448:35:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 1135, + "nodeType": "IfStatement", + "src": "14444:128:4", + "trueBody": { + "id": 1134, + "nodeType": "Block", + "src": "14485:87:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 1132, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1126, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "14493:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 1128, + "indexExpression": { + "argumentTypes": null, + "id": 1127, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1027, + "src": "14501:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "14493:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 1129, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "addresses", + "nodeType": "MemberAccess", + "referencedDeclaration": 341, + "src": "14493:27:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAddresses_$298_storage", + "typeString": "struct SmartPiggies.DetailAddresses storage ref" + } + }, + "id": 1130, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "dataResolverAtExpiry", + "nodeType": "MemberAccess", + "referencedDeclaration": 297, + "src": "14493:48:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 1131, + "name": "_dataResolverAtExpiry", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1035, + "src": "14544:21:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "14493:72:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 1133, + "nodeType": "ExpressionStatement", + "src": "14493:72:4" + } + ] + } + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1138, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1136, + "name": "_reqCollateral", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1037, + "src": "14581:14:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 1137, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "14599:1:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "14581:19:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 1148, + "nodeType": "IfStatement", + "src": "14577:100:4", + "trueBody": { + "id": 1147, + "nodeType": "Block", + "src": "14602:75:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 1145, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1139, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "14610:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 1141, + "indexExpression": { + "argumentTypes": null, + "id": 1140, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1027, + "src": "14618:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "14610:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 1142, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "uintDetails", + "nodeType": "MemberAccess", + "referencedDeclaration": 343, + "src": "14610:29:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailUints_$313_storage", + "typeString": "struct SmartPiggies.DetailUints storage ref" + } + }, + "id": 1143, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "reqCollateral", + "nodeType": "MemberAccess", + "referencedDeclaration": 310, + "src": "14610:43:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 1144, + "name": "_reqCollateral", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1037, + "src": "14656:14:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "14610:60:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1146, + "nodeType": "ExpressionStatement", + "src": "14610:60:4" + } + ] + } + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1151, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1149, + "name": "_lotSize", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1039, + "src": "14686:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 1150, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "14698:1:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "14686:13:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 1161, + "nodeType": "IfStatement", + "src": "14682:82:4", + "trueBody": { + "id": 1160, + "nodeType": "Block", + "src": "14701:63:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 1158, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1152, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "14709:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 1154, + "indexExpression": { + "argumentTypes": null, + "id": 1153, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1027, + "src": "14717:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "14709:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 1155, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "uintDetails", + "nodeType": "MemberAccess", + "referencedDeclaration": 343, + "src": "14709:29:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailUints_$313_storage", + "typeString": "struct SmartPiggies.DetailUints storage ref" + } + }, + "id": 1156, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "lotSize", + "nodeType": "MemberAccess", + "referencedDeclaration": 302, + "src": "14709:37:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 1157, + "name": "_lotSize", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1039, + "src": "14749:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "14709:48:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1159, + "nodeType": "ExpressionStatement", + "src": "14709:48:4" + } + ] + } + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1164, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1162, + "name": "_strikePrice", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1041, + "src": "14773:12:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 1163, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "14789:1:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "14773:17:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 1174, + "nodeType": "IfStatement", + "src": "14769:95:4", + "trueBody": { + "id": 1173, + "nodeType": "Block", + "src": "14793:71:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 1171, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1165, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "14801:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 1167, + "indexExpression": { + "argumentTypes": null, + "id": 1166, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1027, + "src": "14809:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "14801:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 1168, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "uintDetails", + "nodeType": "MemberAccess", + "referencedDeclaration": 343, + "src": "14801:29:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailUints_$313_storage", + "typeString": "struct SmartPiggies.DetailUints storage ref" + } + }, + "id": 1169, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "strikePrice", + "nodeType": "MemberAccess", + "referencedDeclaration": 304, + "src": "14801:41:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 1170, + "name": "_strikePrice", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1041, + "src": "14845:12:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "14801:56:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1172, + "nodeType": "ExpressionStatement", + "src": "14801:56:4" + } + ] + } + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1177, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1175, + "name": "_expiry", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1043, + "src": "14873:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 1176, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "14884:1:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "14873:12:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 1195, + "nodeType": "IfStatement", + "src": "14869:234:4", + "trueBody": { + "id": 1194, + "nodeType": "Block", + "src": "14887:216:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 1184, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 1178, + "name": "expiryBlock", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1074, + "src": "14999:11:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1181, + "name": "block", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2810, + "src": "15025:5:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_block", + "typeString": "block" + } + }, + "id": 1182, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "number", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "15025:12:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 1179, + "name": "_expiry", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1043, + "src": "15013:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1180, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 224, + "src": "15013:11:4", + "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": 1183, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "15013:25:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "14999:39:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1185, + "nodeType": "ExpressionStatement", + "src": "14999:39:4" + }, + { + "expression": { + "argumentTypes": null, + "id": 1192, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1186, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "15046:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 1188, + "indexExpression": { + "argumentTypes": null, + "id": 1187, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1027, + "src": "15054:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "15046:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 1189, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "uintDetails", + "nodeType": "MemberAccess", + "referencedDeclaration": 343, + "src": "15046:29:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailUints_$313_storage", + "typeString": "struct SmartPiggies.DetailUints storage ref" + } + }, + "id": 1190, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "expiry", + "nodeType": "MemberAccess", + "referencedDeclaration": 306, + "src": "15046:36:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 1191, + "name": "expiryBlock", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1074, + "src": "15085:11:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "15046:50:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1193, + "nodeType": "ExpressionStatement", + "src": "15046:50:4" + } + ] + } + }, + { + "expression": { + "argumentTypes": null, + "id": 1202, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1196, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "15108:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 1198, + "indexExpression": { + "argumentTypes": null, + "id": 1197, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1027, + "src": "15116:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "15108:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 1199, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "flags", + "nodeType": "MemberAccess", + "referencedDeclaration": 345, + "src": "15108:23:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BoolFlags_$322_storage", + "typeString": "struct SmartPiggies.BoolFlags storage ref" + } + }, + "id": 1200, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "isEuro", + "nodeType": "MemberAccess", + "referencedDeclaration": 317, + "src": "15108:30:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 1201, + "name": "_isEuro", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1045, + "src": "15141:7:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "15108:40:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1203, + "nodeType": "ExpressionStatement", + "src": "15108:40:4" + }, + { + "expression": { + "argumentTypes": null, + "id": 1210, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1204, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "15154:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 1206, + "indexExpression": { + "argumentTypes": null, + "id": 1205, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1027, + "src": "15162:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "15154:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 1207, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "flags", + "nodeType": "MemberAccess", + "referencedDeclaration": 345, + "src": "15154:23:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BoolFlags_$322_storage", + "typeString": "struct SmartPiggies.BoolFlags storage ref" + } + }, + "id": 1208, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "isPut", + "nodeType": "MemberAccess", + "referencedDeclaration": 319, + "src": "15154:29:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 1209, + "name": "_isPut", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1047, + "src": "15186:6:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "15154:38:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1211, + "nodeType": "ExpressionStatement", + "src": "15154:38:4" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1213, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2820, + "src": "15221:3:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1214, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "15221:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 1215, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1027, + "src": "15239:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 1216, + "name": "_collateralERC", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1029, + "src": "15255:14:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1217, + "name": "_premiumERC", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1031, + "src": "15277:11:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1218, + "name": "_dataResolverNow", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1033, + "src": "15296:16:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1219, + "name": "_dataResolverAtExpiry", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1035, + "src": "15320:21:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1220, + "name": "_reqCollateral", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1037, + "src": "15349:14:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 1221, + "name": "_lotSize", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1039, + "src": "15371:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 1222, + "name": "_strikePrice", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1041, + "src": "15387:12:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 1223, + "name": "expiryBlock", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1074, + "src": "15407:11:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 1224, + "name": "_isEuro", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1045, + "src": "15426:7:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "id": 1225, + "name": "_isPut", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1047, + "src": "15441:6:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 1212, + "name": "UpdateRFP", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 415, + "src": "15204:9:4", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_address_$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_bool_$_t_bool_$returns$__$", + "typeString": "function (address,uint256,address,address,address,address,uint256,uint256,uint256,uint256,bool,bool)" + } + }, + "id": 1226, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "15204:249:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1227, + "nodeType": "EmitStatement", + "src": "15199:254:4" + }, + { + "expression": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 1228, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "15467:4:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 1051, + "id": 1229, + "nodeType": "Return", + "src": "15460:11:4" + } + ] + }, + "documentation": null, + "id": 1231, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "updateRFP", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1048, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1027, + "name": "_tokenId", + "nodeType": "VariableDeclaration", + "scope": 1231, + "src": "13553:16:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1026, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "13553:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1029, + "name": "_collateralERC", + "nodeType": "VariableDeclaration", + "scope": 1231, + "src": "13575:22:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1028, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "13575:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1031, + "name": "_premiumERC", + "nodeType": "VariableDeclaration", + "scope": 1231, + "src": "13603:19:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1030, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "13603:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1033, + "name": "_dataResolverNow", + "nodeType": "VariableDeclaration", + "scope": 1231, + "src": "13628:24:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1032, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "13628:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1035, + "name": "_dataResolverAtExpiry", + "nodeType": "VariableDeclaration", + "scope": 1231, + "src": "13658:29:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1034, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "13658:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1037, + "name": "_reqCollateral", + "nodeType": "VariableDeclaration", + "scope": 1231, + "src": "13693:22:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1036, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "13693:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1039, + "name": "_lotSize", + "nodeType": "VariableDeclaration", + "scope": 1231, + "src": "13721:16:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1038, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "13721:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1041, + "name": "_strikePrice", + "nodeType": "VariableDeclaration", + "scope": 1231, + "src": "13743:20:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1040, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "13743:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1043, + "name": "_expiry", + "nodeType": "VariableDeclaration", + "scope": 1231, + "src": "13769:15:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1042, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "13769:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1045, + "name": "_isEuro", + "nodeType": "VariableDeclaration", + "scope": 1231, + "src": "13790:12:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 1044, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "13790:4:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1047, + "name": "_isPut", + "nodeType": "VariableDeclaration", + "scope": 1231, + "src": "13830:11:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 1046, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "13830:4:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "13547:322:4" + }, + "returnParameters": { + "id": 1051, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1050, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 1231, + "src": "13894:4:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 1049, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "13894:4:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "13893:6:4" + }, + "scope": 2805, + "src": "13529:1947:4", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 1322, + "nodeType": "Block", + "src": "15662:818:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 1246, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1239, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2820, + "src": "15676:3:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1240, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "15676:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1241, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "15690:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 1243, + "indexExpression": { + "argumentTypes": null, + "id": 1242, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1233, + "src": "15698:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "15690:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 1244, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "addresses", + "nodeType": "MemberAccess", + "referencedDeclaration": 341, + "src": "15690:27:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAddresses_$298_storage", + "typeString": "struct SmartPiggies.DetailAddresses storage ref" + } + }, + "id": 1245, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "holder", + "nodeType": "MemberAccess", + "referencedDeclaration": 289, + "src": "15690:34:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "15676:48:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "796f75206d757374206f776e2074686520746f6b656e20746f206275726e206974", + "id": 1247, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "15726:35:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_ae5efd2f25cc052b288460f4af4064285c949a9fe14d0e09925196031bf6eb1c", + "typeString": "literal_string \"you must own the token to burn it\"" + }, + "value": "you must own the token to burn it" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_ae5efd2f25cc052b288460f4af4064285c949a9fe14d0e09925196031bf6eb1c", + "typeString": "literal_string \"you must own the token to burn it\"" + } + ], + "id": 1238, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2823, + 2824 + ], + "referencedDeclaration": 2824, + "src": "15668:7:4", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 1248, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "15668:94:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1249, + "nodeType": "ExpressionStatement", + "src": "15668:94:4" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1255, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "15776:33:4", + "subExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1251, + "name": "auctions", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 369, + "src": "15777:8:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_DetailAuction_$339_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.DetailAuction storage ref)" + } + }, + "id": 1253, + "indexExpression": { + "argumentTypes": null, + "id": 1252, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1233, + "src": "15786:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "15777:18:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAuction_$339_storage", + "typeString": "struct SmartPiggies.DetailAuction storage ref" + } + }, + "id": 1254, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "auctionActive", + "nodeType": "MemberAccess", + "referencedDeclaration": 336, + "src": "15777:32:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "796f752063616e6e6f74206275726e206120746f6b656e207768696368206973206f6e2061756374696f6e", + "id": 1256, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "15811:45:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_94906766d6c5f71acdbc2faad8a02da0c8731bc18b156d0371c37f687d0f8207", + "typeString": "literal_string \"you cannot burn a token which is on auction\"" + }, + "value": "you cannot burn a token which is on auction" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_94906766d6c5f71acdbc2faad8a02da0c8731bc18b156d0371c37f687d0f8207", + "typeString": "literal_string \"you cannot burn a token which is on auction\"" + } + ], + "id": 1250, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2823, + 2824 + ], + "referencedDeclaration": 2824, + "src": "15768:7:4", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 1257, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "15768:89:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1258, + "nodeType": "ExpressionStatement", + "src": "15768:89:4" + }, + { + "condition": { + "argumentTypes": null, + "id": 1264, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "15867:34:4", + "subExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1259, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "15868:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 1261, + "indexExpression": { + "argumentTypes": null, + "id": 1260, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1233, + "src": "15876:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "15868:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 1262, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "flags", + "nodeType": "MemberAccess", + "referencedDeclaration": 345, + "src": "15868:23:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BoolFlags_$322_storage", + "typeString": "struct SmartPiggies.BoolFlags storage ref" + } + }, + "id": 1263, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "isRequest", + "nodeType": "MemberAccess", + "referencedDeclaration": 315, + "src": "15868:33:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 1295, + "nodeType": "IfStatement", + "src": "15863:324:4", + "trueBody": { + "id": 1294, + "nodeType": "Block", + "src": "15903:284:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 1273, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1266, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2820, + "src": "15919:3:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1267, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "15919:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1268, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "15933:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 1270, + "indexExpression": { + "argumentTypes": null, + "id": 1269, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1233, + "src": "15941:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "15933:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 1271, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "addresses", + "nodeType": "MemberAccess", + "referencedDeclaration": 341, + "src": "15933:27:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAddresses_$298_storage", + "typeString": "struct SmartPiggies.DetailAddresses storage ref" + } + }, + "id": 1272, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "writer", + "nodeType": "MemberAccess", + "referencedDeclaration": 287, + "src": "15933:34:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "15919:48:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "796f75206d757374206f776e2074686520636f6c6c61746572616c20746f207265636c61696d206974", + "id": 1274, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "15969:43:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_e1a37be9c1372dff3a2267a67b092292ca46345df721c9020edbf06b5199d701", + "typeString": "literal_string \"you must own the collateral to reclaim it\"" + }, + "value": "you must own the collateral to reclaim it" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_e1a37be9c1372dff3a2267a67b092292ca46345df721c9020edbf06b5199d701", + "typeString": "literal_string \"you must own the collateral to reclaim it\"" + } + ], + "id": 1265, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2823, + 2824 + ], + "referencedDeclaration": 2824, + "src": "15911:7:4", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 1275, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "15911:102:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1276, + "nodeType": "ExpressionStatement", + "src": "15911:102:4" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1285, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2820, + "src": "16127:3:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1286, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "16127:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1287, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "16139:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 1289, + "indexExpression": { + "argumentTypes": null, + "id": 1288, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1233, + "src": "16147:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "16139:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 1290, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "uintDetails", + "nodeType": "MemberAccess", + "referencedDeclaration": 343, + "src": "16139:29:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailUints_$313_storage", + "typeString": "struct SmartPiggies.DetailUints storage ref" + } + }, + "id": 1291, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "collateral", + "nodeType": "MemberAccess", + "referencedDeclaration": 300, + "src": "16139:40:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1278, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "16075:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 1280, + "indexExpression": { + "argumentTypes": null, + "id": 1279, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1233, + "src": "16083:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "16075:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 1281, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "addresses", + "nodeType": "MemberAccess", + "referencedDeclaration": 341, + "src": "16075:27:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAddresses_$298_storage", + "typeString": "struct SmartPiggies.DetailAddresses storage ref" + } + }, + "id": 1282, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "collateralERC", + "nodeType": "MemberAccess", + "referencedDeclaration": 291, + "src": "16075:41:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1277, + "name": "PaymentToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 274, + "src": "16062:12:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_PaymentToken_$274_$", + "typeString": "type(contract PaymentToken)" + } + }, + "id": 1283, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "16062:55:4", + "typeDescriptions": { + "typeIdentifier": "t_contract$_PaymentToken_$274", + "typeString": "contract PaymentToken" + } + }, + "id": 1284, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "transfer", + "nodeType": "MemberAccess", + "referencedDeclaration": 268, + "src": "16062:64:4", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,uint256) external returns (bool)" + } + }, + "id": 1292, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "16062:118:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1293, + "nodeType": "ExpressionStatement", + "src": "16062:118:4" + } + ] + } + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1297, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2820, + "src": "16212:3:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1298, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "16212:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 1299, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1233, + "src": "16224:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1300, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "16234:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 1302, + "indexExpression": { + "argumentTypes": null, + "id": 1301, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1233, + "src": "16242:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "16234:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 1303, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "flags", + "nodeType": "MemberAccess", + "referencedDeclaration": 345, + "src": "16234:23:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BoolFlags_$322_storage", + "typeString": "struct SmartPiggies.BoolFlags storage ref" + } + }, + "id": 1304, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "isRequest", + "nodeType": "MemberAccess", + "referencedDeclaration": 315, + "src": "16234:33:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 1296, + "name": "ReclaimAndBurn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 423, + "src": "16197:14:4", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_bool_$returns$__$", + "typeString": "function (address,uint256,bool)" + } + }, + "id": 1305, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "16197:71:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1306, + "nodeType": "EmitStatement", + "src": "16192:76:4" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1308, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "16338:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 1310, + "indexExpression": { + "argumentTypes": null, + "id": 1309, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1233, + "src": "16346:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "16338:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 1311, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "addresses", + "nodeType": "MemberAccess", + "referencedDeclaration": 341, + "src": "16338:27:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAddresses_$298_storage", + "typeString": "struct SmartPiggies.DetailAddresses storage ref" + } + }, + "id": 1312, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "holder", + "nodeType": "MemberAccess", + "referencedDeclaration": 289, + "src": "16338:34:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1313, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1233, + "src": "16374:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1307, + "name": "_removeTokenFromOwnedPiggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2635, + "src": "16309:28:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 1314, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "16309:74:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1315, + "nodeType": "ExpressionStatement", + "src": "16309:74:4" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1317, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1233, + "src": "16449:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1316, + "name": "_resetPiggy", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2789, + "src": "16437:11:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$__$", + "typeString": "function (uint256)" + } + }, + "id": 1318, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "16437:21:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1319, + "nodeType": "ExpressionStatement", + "src": "16437:21:4" + }, + { + "expression": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 1320, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "16471:4:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 1237, + "id": 1321, + "nodeType": "Return", + "src": "16464:11:4" + } + ] + }, + "documentation": null, + "id": 1323, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "reclaimAndBurn", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1234, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1233, + "name": "_tokenId", + "nodeType": "VariableDeclaration", + "scope": 1323, + "src": "15612:16:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1232, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "15612:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "15611:18:4" + }, + "returnParameters": { + "id": 1237, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1236, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 1323, + "src": "15654:4:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 1235, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "15654:4:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "15653:6:4" + }, + "scope": 2805, + "src": "15588:892:4", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 1377, + "nodeType": "Block", + "src": "16547:501:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 1333, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1328, + "name": "auctions", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 369, + "src": "16553:8:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_DetailAuction_$339_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.DetailAuction storage ref)" + } + }, + "id": 1330, + "indexExpression": { + "argumentTypes": null, + "id": 1329, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1325, + "src": "16562:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "16553:18:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAuction_$339_storage", + "typeString": "struct SmartPiggies.DetailAuction storage ref" + } + }, + "id": 1331, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "startBlock", + "nodeType": "MemberAccess", + "referencedDeclaration": 324, + "src": "16553:29:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "30", + "id": 1332, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "16585:1:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "16553:33:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1334, + "nodeType": "ExpressionStatement", + "src": "16553:33:4" + }, + { + "expression": { + "argumentTypes": null, + "id": 1340, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1335, + "name": "auctions", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 369, + "src": "16592:8:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_DetailAuction_$339_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.DetailAuction storage ref)" + } + }, + "id": 1337, + "indexExpression": { + "argumentTypes": null, + "id": 1336, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1325, + "src": "16601:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "16592:18:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAuction_$339_storage", + "typeString": "struct SmartPiggies.DetailAuction storage ref" + } + }, + "id": 1338, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "expiryBlock", + "nodeType": "MemberAccess", + "referencedDeclaration": 326, + "src": "16592:30:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "30", + "id": 1339, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "16625:1:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "16592:34:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1341, + "nodeType": "ExpressionStatement", + "src": "16592:34:4" + }, + { + "expression": { + "argumentTypes": null, + "id": 1347, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1342, + "name": "auctions", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 369, + "src": "16632:8:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_DetailAuction_$339_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.DetailAuction storage ref)" + } + }, + "id": 1344, + "indexExpression": { + "argumentTypes": null, + "id": 1343, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1325, + "src": "16641:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "16632:18:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAuction_$339_storage", + "typeString": "struct SmartPiggies.DetailAuction storage ref" + } + }, + "id": 1345, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "startPrice", + "nodeType": "MemberAccess", + "referencedDeclaration": 328, + "src": "16632:29:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "30", + "id": 1346, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "16664:1:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "16632:33:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1348, + "nodeType": "ExpressionStatement", + "src": "16632:33:4" + }, + { + "expression": { + "argumentTypes": null, + "id": 1354, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1349, + "name": "auctions", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 369, + "src": "16671:8:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_DetailAuction_$339_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.DetailAuction storage ref)" + } + }, + "id": 1351, + "indexExpression": { + "argumentTypes": null, + "id": 1350, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1325, + "src": "16680:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "16671:18:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAuction_$339_storage", + "typeString": "struct SmartPiggies.DetailAuction storage ref" + } + }, + "id": 1352, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "reservePrice", + "nodeType": "MemberAccess", + "referencedDeclaration": 330, + "src": "16671:31:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "30", + "id": 1353, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "16705:1:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "16671:35:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1355, + "nodeType": "ExpressionStatement", + "src": "16671:35:4" + }, + { + "expression": { + "argumentTypes": null, + "id": 1361, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1356, + "name": "auctions", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 369, + "src": "16712:8:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_DetailAuction_$339_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.DetailAuction storage ref)" + } + }, + "id": 1358, + "indexExpression": { + "argumentTypes": null, + "id": 1357, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1325, + "src": "16721:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "16712:18:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAuction_$339_storage", + "typeString": "struct SmartPiggies.DetailAuction storage ref" + } + }, + "id": 1359, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "timeStep", + "nodeType": "MemberAccess", + "referencedDeclaration": 332, + "src": "16712:27:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "30", + "id": 1360, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "16742:1:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "16712:31:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1362, + "nodeType": "ExpressionStatement", + "src": "16712:31:4" + }, + { + "expression": { + "argumentTypes": null, + "id": 1368, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1363, + "name": "auctions", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 369, + "src": "16749:8:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_DetailAuction_$339_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.DetailAuction storage ref)" + } + }, + "id": 1365, + "indexExpression": { + "argumentTypes": null, + "id": 1364, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1325, + "src": "16758:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "16749:18:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAuction_$339_storage", + "typeString": "struct SmartPiggies.DetailAuction storage ref" + } + }, + "id": 1366, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "priceStep", + "nodeType": "MemberAccess", + "referencedDeclaration": 334, + "src": "16749:28:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "30", + "id": 1367, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "16780:1:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "16749:32:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1369, + "nodeType": "ExpressionStatement", + "src": "16749:32:4" + }, + { + "expression": { + "argumentTypes": null, + "id": 1375, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1370, + "name": "auctions", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 369, + "src": "16787:8:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_DetailAuction_$339_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.DetailAuction storage ref)" + } + }, + "id": 1372, + "indexExpression": { + "argumentTypes": null, + "id": 1371, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1325, + "src": "16796:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "16787:18:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAuction_$339_storage", + "typeString": "struct SmartPiggies.DetailAuction storage ref" + } + }, + "id": 1373, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "auctionActive", + "nodeType": "MemberAccess", + "referencedDeclaration": 336, + "src": "16787:32:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "66616c7365", + "id": 1374, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "16822:5:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "src": "16787:40:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1376, + "nodeType": "ExpressionStatement", + "src": "16787:40:4" + } + ] + }, + "documentation": null, + "id": 1378, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_clearAuctionDetails", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1326, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1325, + "name": "_tokenId", + "nodeType": "VariableDeclaration", + "scope": 1378, + "src": "16514:16:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1324, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "16514:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "16513:18:4" + }, + "returnParameters": { + "id": 1327, + "nodeType": "ParameterList", + "parameters": [], + "src": "16547:0:4" + }, + "scope": 2805, + "src": "16484:564:4", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 1548, + "nodeType": "Block", + "src": "17261:1866:4", + "statements": [ + { + "assignments": [ + 1396 + ], + "declarations": [ + { + "constant": false, + "id": 1396, + "name": "_auctionExpiry", + "nodeType": "VariableDeclaration", + "scope": 1548, + "src": "17267:22:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1395, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "17267:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1402, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1400, + "name": "_auctionLength", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1386, + "src": "17309:14:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1397, + "name": "block", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2810, + "src": "17292:5:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_block", + "typeString": "block" + } + }, + "id": 1398, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "number", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "17292:12:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1399, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 224, + "src": "17292:16:4", + "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": 1401, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "17292:32:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "17267:57:4" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 1411, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1404, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "17338:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 1406, + "indexExpression": { + "argumentTypes": null, + "id": 1405, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1380, + "src": "17346:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "17338:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 1407, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "addresses", + "nodeType": "MemberAccess", + "referencedDeclaration": 341, + "src": "17338:27:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAddresses_$298_storage", + "typeString": "struct SmartPiggies.DetailAddresses storage ref" + } + }, + "id": 1408, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "holder", + "nodeType": "MemberAccess", + "referencedDeclaration": 289, + "src": "17338:34:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1409, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2820, + "src": "17376:3:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1410, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "17376:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "17338:48:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "796f75206d757374206f776e206120746f6b656e20746f2061756374696f6e206974", + "id": 1412, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "17388:36:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_347b553f3479dd6198fdca821cd75f6d27d0336c41b4547759f0a4c4f21c9a92", + "typeString": "literal_string \"you must own a token to auction it\"" + }, + "value": "you must own a token to auction it" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_347b553f3479dd6198fdca821cd75f6d27d0336c41b4547759f0a4c4f21c9a92", + "typeString": "literal_string \"you must own a token to auction it\"" + } + ], + "id": 1403, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2823, + 2824 + ], + "referencedDeclaration": 2824, + "src": "17330:7:4", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 1413, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "17330:95:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1414, + "nodeType": "ExpressionStatement", + "src": "17330:95:4" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1423, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1416, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "17439:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 1418, + "indexExpression": { + "argumentTypes": null, + "id": 1417, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1380, + "src": "17447:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "17439:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 1419, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "uintDetails", + "nodeType": "MemberAccess", + "referencedDeclaration": 343, + "src": "17439:29:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailUints_$313_storage", + "typeString": "struct SmartPiggies.DetailUints storage ref" + } + }, + "id": 1420, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "expiry", + "nodeType": "MemberAccess", + "referencedDeclaration": 306, + "src": "17439:36:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1421, + "name": "block", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2810, + "src": "17478:5:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_block", + "typeString": "block" + } + }, + "id": 1422, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "number", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "17478:12:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "17439:51:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "6f7074696f6e206d757374206e6f742062652065787069726564", + "id": 1424, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "17492:28:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_ba126d0c204e17df1d0c888d9310fb1a71bf1e5ac964bdfd20946754b0eb84fe", + "typeString": "literal_string \"option must not be expired\"" + }, + "value": "option must not be expired" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_ba126d0c204e17df1d0c888d9310fb1a71bf1e5ac964bdfd20946754b0eb84fe", + "typeString": "literal_string \"option must not be expired\"" + } + ], + "id": 1415, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2823, + 2824 + ], + "referencedDeclaration": 2824, + "src": "17431:7:4", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 1425, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "17431:90:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1426, + "nodeType": "ExpressionStatement", + "src": "17431:90:4" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1434, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1428, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "17535:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 1430, + "indexExpression": { + "argumentTypes": null, + "id": 1429, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1380, + "src": "17543:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "17535:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 1431, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "uintDetails", + "nodeType": "MemberAccess", + "referencedDeclaration": 343, + "src": "17535:29:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailUints_$313_storage", + "typeString": "struct SmartPiggies.DetailUints storage ref" + } + }, + "id": 1432, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "expiry", + "nodeType": "MemberAccess", + "referencedDeclaration": 306, + "src": "17535:36:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "id": 1433, + "name": "_auctionExpiry", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1396, + "src": "17574:14:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "17535:53:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "61756374696f6e2063616e6e6f742065787069726520616674657220746865206f7074696f6e", + "id": 1435, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "17590:40:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_daf46ad355eb83d623c4a90b6054984c4a49e4edba5a28880e2c350c8e4a5235", + "typeString": "literal_string \"auction cannot expire after the option\"" + }, + "value": "auction cannot expire after the option" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_daf46ad355eb83d623c4a90b6054984c4a49e4edba5a28880e2c350c8e4a5235", + "typeString": "literal_string \"auction cannot expire after the option\"" + } + ], + "id": 1427, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2823, + 2824 + ], + "referencedDeclaration": 2824, + "src": "17527:7:4", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 1436, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "17527:104:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1437, + "nodeType": "ExpressionStatement", + "src": "17527:104:4" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1444, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "17645:39:4", + "subExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1439, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "17646:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 1441, + "indexExpression": { + "argumentTypes": null, + "id": 1440, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1380, + "src": "17654:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "17646:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 1442, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "flags", + "nodeType": "MemberAccess", + "referencedDeclaration": 345, + "src": "17646:23:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BoolFlags_$322_storage", + "typeString": "struct SmartPiggies.BoolFlags storage ref" + } + }, + "id": 1443, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "hasBeenCleared", + "nodeType": "MemberAccess", + "referencedDeclaration": 321, + "src": "17646:38:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "6f7074696f6e2063616e6e6f742068617665206265656e20636c6561726564", + "id": 1445, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "17686:33:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_27073f39ec9976896b20149ca5e815b73111f8a75112e9c5d8b9ee35967e8927", + "typeString": "literal_string \"option cannot have been cleared\"" + }, + "value": "option cannot have been cleared" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_27073f39ec9976896b20149ca5e815b73111f8a75112e9c5d8b9ee35967e8927", + "typeString": "literal_string \"option cannot have been cleared\"" + } + ], + "id": 1438, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2823, + 2824 + ], + "referencedDeclaration": 2824, + "src": "17637:7:4", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 1446, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "17637:83:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1447, + "nodeType": "ExpressionStatement", + "src": "17637:83:4" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1453, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "17734:33:4", + "subExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1449, + "name": "auctions", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 369, + "src": "17735:8:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_DetailAuction_$339_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.DetailAuction storage ref)" + } + }, + "id": 1451, + "indexExpression": { + "argumentTypes": null, + "id": 1450, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1380, + "src": "17744:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "17735:18:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAuction_$339_storage", + "typeString": "struct SmartPiggies.DetailAuction storage ref" + } + }, + "id": 1452, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "auctionActive", + "nodeType": "MemberAccess", + "referencedDeclaration": 336, + "src": "17735:32:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "61756374696f6e2063616e6e6f7420616c72656164792062652072756e6e696e67", + "id": 1454, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "17769:35:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_75e7be135ed90dd1a70249ea02e2cf969271d5c8707ac2d8fa92cff139cff01a", + "typeString": "literal_string \"auction cannot already be running\"" + }, + "value": "auction cannot already be running" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_75e7be135ed90dd1a70249ea02e2cf969271d5c8707ac2d8fa92cff139cff01a", + "typeString": "literal_string \"auction cannot already be running\"" + } + ], + "id": 1448, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2823, + 2824 + ], + "referencedDeclaration": 2824, + "src": "17726:7:4", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 1455, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "17726:79:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1456, + "nodeType": "ExpressionStatement", + "src": "17726:79:4" + }, + { + "condition": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1457, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "18153:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 1459, + "indexExpression": { + "argumentTypes": null, + "id": 1458, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1380, + "src": "18161:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "18153:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 1460, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "flags", + "nodeType": "MemberAccess", + "referencedDeclaration": 345, + "src": "18153:23:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BoolFlags_$322_storage", + "typeString": "struct SmartPiggies.BoolFlags storage ref" + } + }, + "id": 1461, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "isRequest", + "nodeType": "MemberAccess", + "referencedDeclaration": 315, + "src": "18153:33:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 1484, + "nodeType": "IfStatement", + "src": "18149:359:4", + "trueBody": { + "id": 1483, + "nodeType": "Block", + "src": "18188:320:4", + "statements": [ + { + "assignments": [ + 1463 + ], + "declarations": [ + { + "constant": false, + "id": 1463, + "name": "success", + "nodeType": "VariableDeclaration", + "scope": 1483, + "src": "18196:12:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 1462, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "18196:4:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1477, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1465, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "18243:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 1467, + "indexExpression": { + "argumentTypes": null, + "id": 1466, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1380, + "src": "18251:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "18243:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 1468, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "addresses", + "nodeType": "MemberAccess", + "referencedDeclaration": 341, + "src": "18243:27:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAddresses_$298_storage", + "typeString": "struct SmartPiggies.DetailAddresses storage ref" + } + }, + "id": 1469, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "premiumERC", + "nodeType": "MemberAccess", + "referencedDeclaration": 293, + "src": "18243:38:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1470, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2820, + "src": "18291:3:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1471, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "18291:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1473, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2843, + "src": "18319:4:4", + "typeDescriptions": { + "typeIdentifier": "t_contract$_SmartPiggies_$2805", + "typeString": "contract SmartPiggies" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_SmartPiggies_$2805", + "typeString": "contract SmartPiggies" + } + ], + "id": 1472, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "18311:7:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 1474, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "18311:13:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1475, + "name": "_reservePrice", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1384, + "src": "18334:13:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1464, + "name": "attemptPaymentTransfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 537, + "src": "18211:22:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,address,address,uint256) returns (bool)" + } + }, + "id": 1476, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "18211:230:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "18196:245:4" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1479, + "name": "success", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1463, + "src": "18457:7:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "7472616e7366657246726f6d20646964206e6f742072657475726e2074727565", + "id": 1480, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "18466:34:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_35b8e48e80d109dedabaecc36aa806b1e346b95a74c9bec1da46923b6d341700", + "typeString": "literal_string \"transferFrom did not return true\"" + }, + "value": "transferFrom did not return true" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_35b8e48e80d109dedabaecc36aa806b1e346b95a74c9bec1da46923b6d341700", + "typeString": "literal_string \"transferFrom did not return true\"" + } + ], + "id": 1478, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2823, + 2824 + ], + "referencedDeclaration": 2824, + "src": "18449:7:4", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 1481, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "18449:52:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1482, + "nodeType": "ExpressionStatement", + "src": "18449:52:4" + } + ] + } + }, + { + "expression": { + "argumentTypes": null, + "id": 1491, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1485, + "name": "auctions", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 369, + "src": "18607:8:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_DetailAuction_$339_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.DetailAuction storage ref)" + } + }, + "id": 1487, + "indexExpression": { + "argumentTypes": null, + "id": 1486, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1380, + "src": "18616:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "18607:18:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAuction_$339_storage", + "typeString": "struct SmartPiggies.DetailAuction storage ref" + } + }, + "id": 1488, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "startBlock", + "nodeType": "MemberAccess", + "referencedDeclaration": 324, + "src": "18607:29:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1489, + "name": "block", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2810, + "src": "18639:5:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_block", + "typeString": "block" + } + }, + "id": 1490, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "number", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "18639:12:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "18607:44:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1492, + "nodeType": "ExpressionStatement", + "src": "18607:44:4" + }, + { + "expression": { + "argumentTypes": null, + "id": 1498, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1493, + "name": "auctions", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 369, + "src": "18657:8:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_DetailAuction_$339_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.DetailAuction storage ref)" + } + }, + "id": 1495, + "indexExpression": { + "argumentTypes": null, + "id": 1494, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1380, + "src": "18666:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "18657:18:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAuction_$339_storage", + "typeString": "struct SmartPiggies.DetailAuction storage ref" + } + }, + "id": 1496, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "expiryBlock", + "nodeType": "MemberAccess", + "referencedDeclaration": 326, + "src": "18657:30:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 1497, + "name": "_auctionExpiry", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1396, + "src": "18690:14:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "18657:47:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1499, + "nodeType": "ExpressionStatement", + "src": "18657:47:4" + }, + { + "expression": { + "argumentTypes": null, + "id": 1505, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1500, + "name": "auctions", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 369, + "src": "18710:8:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_DetailAuction_$339_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.DetailAuction storage ref)" + } + }, + "id": 1502, + "indexExpression": { + "argumentTypes": null, + "id": 1501, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1380, + "src": "18719:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "18710:18:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAuction_$339_storage", + "typeString": "struct SmartPiggies.DetailAuction storage ref" + } + }, + "id": 1503, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "startPrice", + "nodeType": "MemberAccess", + "referencedDeclaration": 328, + "src": "18710:29:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 1504, + "name": "_startPrice", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1382, + "src": "18742:11:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "18710:43:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1506, + "nodeType": "ExpressionStatement", + "src": "18710:43:4" + }, + { + "expression": { + "argumentTypes": null, + "id": 1512, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1507, + "name": "auctions", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 369, + "src": "18759:8:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_DetailAuction_$339_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.DetailAuction storage ref)" + } + }, + "id": 1509, + "indexExpression": { + "argumentTypes": null, + "id": 1508, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1380, + "src": "18768:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "18759:18:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAuction_$339_storage", + "typeString": "struct SmartPiggies.DetailAuction storage ref" + } + }, + "id": 1510, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "reservePrice", + "nodeType": "MemberAccess", + "referencedDeclaration": 330, + "src": "18759:31:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 1511, + "name": "_reservePrice", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1384, + "src": "18793:13:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "18759:47:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1513, + "nodeType": "ExpressionStatement", + "src": "18759:47:4" + }, + { + "expression": { + "argumentTypes": null, + "id": 1519, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1514, + "name": "auctions", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 369, + "src": "18812:8:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_DetailAuction_$339_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.DetailAuction storage ref)" + } + }, + "id": 1516, + "indexExpression": { + "argumentTypes": null, + "id": 1515, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1380, + "src": "18821:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "18812:18:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAuction_$339_storage", + "typeString": "struct SmartPiggies.DetailAuction storage ref" + } + }, + "id": 1517, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "timeStep", + "nodeType": "MemberAccess", + "referencedDeclaration": 332, + "src": "18812:27:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 1518, + "name": "_timeStep", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1388, + "src": "18842:9:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "18812:39:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1520, + "nodeType": "ExpressionStatement", + "src": "18812:39:4" + }, + { + "expression": { + "argumentTypes": null, + "id": 1526, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1521, + "name": "auctions", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 369, + "src": "18857:8:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_DetailAuction_$339_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.DetailAuction storage ref)" + } + }, + "id": 1523, + "indexExpression": { + "argumentTypes": null, + "id": 1522, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1380, + "src": "18866:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "18857:18:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAuction_$339_storage", + "typeString": "struct SmartPiggies.DetailAuction storage ref" + } + }, + "id": 1524, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "priceStep", + "nodeType": "MemberAccess", + "referencedDeclaration": 334, + "src": "18857:28:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 1525, + "name": "_priceStep", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1390, + "src": "18888:10:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "18857:41:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1527, + "nodeType": "ExpressionStatement", + "src": "18857:41:4" + }, + { + "expression": { + "argumentTypes": null, + "id": 1533, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1528, + "name": "auctions", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 369, + "src": "18904:8:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_DetailAuction_$339_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.DetailAuction storage ref)" + } + }, + "id": 1530, + "indexExpression": { + "argumentTypes": null, + "id": 1529, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1380, + "src": "18913:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "18904:18:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAuction_$339_storage", + "typeString": "struct SmartPiggies.DetailAuction storage ref" + } + }, + "id": 1531, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "auctionActive", + "nodeType": "MemberAccess", + "referencedDeclaration": 336, + "src": "18904:32:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 1532, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "18939:4:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "src": "18904:39:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1534, + "nodeType": "ExpressionStatement", + "src": "18904:39:4" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1536, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2820, + "src": "18975:3:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1537, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "18975:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 1538, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1380, + "src": "18993:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 1539, + "name": "_startPrice", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1382, + "src": "19009:11:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 1540, + "name": "_reservePrice", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1384, + "src": "19028:13:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 1541, + "name": "_auctionLength", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1386, + "src": "19049:14:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 1542, + "name": "_timeStep", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1388, + "src": "19071:9:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 1543, + "name": "_priceStep", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1390, + "src": "19088:10:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1535, + "name": "StartAuction", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 439, + "src": "18955:12:4", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256,uint256,uint256,uint256,uint256,uint256)" + } + }, + "id": 1544, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "18955:149:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1545, + "nodeType": "EmitStatement", + "src": "18950:154:4" + }, + { + "expression": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 1546, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "19118:4:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 1394, + "id": 1547, + "nodeType": "Return", + "src": "19111:11:4" + } + ] + }, + "documentation": null, + "id": 1549, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "startAuction", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1391, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1380, + "name": "_tokenId", + "nodeType": "VariableDeclaration", + "scope": 1549, + "src": "17079:16:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1379, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "17079:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1382, + "name": "_startPrice", + "nodeType": "VariableDeclaration", + "scope": 1549, + "src": "17101:19:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1381, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "17101:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1384, + "name": "_reservePrice", + "nodeType": "VariableDeclaration", + "scope": 1549, + "src": "17126:21:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1383, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "17126:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1386, + "name": "_auctionLength", + "nodeType": "VariableDeclaration", + "scope": 1549, + "src": "17153:22:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1385, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "17153:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1388, + "name": "_timeStep", + "nodeType": "VariableDeclaration", + "scope": 1549, + "src": "17181:17:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1387, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "17181:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1390, + "name": "_priceStep", + "nodeType": "VariableDeclaration", + "scope": 1549, + "src": "17204:18:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1389, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "17204:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "17073:153:4" + }, + "returnParameters": { + "id": 1394, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1393, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 1549, + "src": "17253:4:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 1392, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "17253:4:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "17252:6:4" + }, + "scope": 2805, + "src": "17052:2075:4", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "external" + }, + { + "body": { + "id": 1629, + "nodeType": "Block", + "src": "19201:936:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 1564, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1557, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "19215:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 1559, + "indexExpression": { + "argumentTypes": null, + "id": 1558, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1551, + "src": "19223:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "19215:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 1560, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "addresses", + "nodeType": "MemberAccess", + "referencedDeclaration": 341, + "src": "19215:27:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAddresses_$298_storage", + "typeString": "struct SmartPiggies.DetailAddresses storage ref" + } + }, + "id": 1561, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "holder", + "nodeType": "MemberAccess", + "referencedDeclaration": 289, + "src": "19215:34:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1562, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2820, + "src": "19253:3:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1563, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "19253:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "19215:48:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "796f75206d757374206f776e206120746f6b656e20746f2061756374696f6e206974", + "id": 1565, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "19265:36:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_347b553f3479dd6198fdca821cd75f6d27d0336c41b4547759f0a4c4f21c9a92", + "typeString": "literal_string \"you must own a token to auction it\"" + }, + "value": "you must own a token to auction it" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_347b553f3479dd6198fdca821cd75f6d27d0336c41b4547759f0a4c4f21c9a92", + "typeString": "literal_string \"you must own a token to auction it\"" + } + ], + "id": 1556, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2823, + 2824 + ], + "referencedDeclaration": 2824, + "src": "19207:7:4", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 1566, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "19207:95:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1567, + "nodeType": "ExpressionStatement", + "src": "19207:95:4" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1569, + "name": "auctions", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 369, + "src": "19316:8:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_DetailAuction_$339_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.DetailAuction storage ref)" + } + }, + "id": 1571, + "indexExpression": { + "argumentTypes": null, + "id": 1570, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1551, + "src": "19325:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "19316:18:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAuction_$339_storage", + "typeString": "struct SmartPiggies.DetailAuction storage ref" + } + }, + "id": 1572, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "auctionActive", + "nodeType": "MemberAccess", + "referencedDeclaration": 336, + "src": "19316:32:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "61756374696f6e206d7573742062652061637469766520746f2063616e63656c206974", + "id": 1573, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "19350:37:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_d628b799737a92349c6ea16e9a2c5925f97e27b7f8836620f38d9e95dcb51daa", + "typeString": "literal_string \"auction must be active to cancel it\"" + }, + "value": "auction must be active to cancel it" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_d628b799737a92349c6ea16e9a2c5925f97e27b7f8836620f38d9e95dcb51daa", + "typeString": "literal_string \"auction must be active to cancel it\"" + } + ], + "id": 1568, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2823, + 2824 + ], + "referencedDeclaration": 2824, + "src": "19308:7:4", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 1574, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "19308:80:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1575, + "nodeType": "ExpressionStatement", + "src": "19308:80:4" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1581, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "19402:37:4", + "subExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1577, + "name": "auctions", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 369, + "src": "19403:8:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_DetailAuction_$339_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.DetailAuction storage ref)" + } + }, + "id": 1579, + "indexExpression": { + "argumentTypes": null, + "id": 1578, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1551, + "src": "19412:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "19403:18:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAuction_$339_storage", + "typeString": "struct SmartPiggies.DetailAuction storage ref" + } + }, + "id": 1580, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "satisfyInProgress", + "nodeType": "MemberAccess", + "referencedDeclaration": 338, + "src": "19403:36:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "61756374696f6e2063616e6e6f7420626520696e207468652070726f63657373206f66206265696e6720736174697366696564", + "id": 1582, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "19441:53:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_2e85065a51dd5ddc3b550cdcec6a89d37b41e2021606af9209014f7e9b3e3717", + "typeString": "literal_string \"auction cannot be in the process of being satisfied\"" + }, + "value": "auction cannot be in the process of being satisfied" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_2e85065a51dd5ddc3b550cdcec6a89d37b41e2021606af9209014f7e9b3e3717", + "typeString": "literal_string \"auction cannot be in the process of being satisfied\"" + } + ], + "id": 1576, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2823, + 2824 + ], + "referencedDeclaration": 2824, + "src": "19394:7:4", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 1583, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "19394:101:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1584, + "nodeType": "ExpressionStatement", + "src": "19394:101:4" + }, + { + "condition": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1585, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "19557:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 1587, + "indexExpression": { + "argumentTypes": null, + "id": 1586, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1551, + "src": "19565:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "19557:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 1588, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "flags", + "nodeType": "MemberAccess", + "referencedDeclaration": 345, + "src": "19557:23:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BoolFlags_$322_storage", + "typeString": "struct SmartPiggies.BoolFlags storage ref" + } + }, + "id": 1589, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "isRequest", + "nodeType": "MemberAccess", + "referencedDeclaration": 315, + "src": "19557:33:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 1611, + "nodeType": "IfStatement", + "src": "19553:449:4", + "trueBody": { + "id": 1610, + "nodeType": "Block", + "src": "19592:410:4", + "statements": [ + { + "assignments": [ + 1591 + ], + "declarations": [ + { + "constant": false, + "id": 1591, + "name": "_premiumToReturn", + "nodeType": "VariableDeclaration", + "scope": 1610, + "src": "19642:24:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1590, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "19642:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1596, + "initialValue": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1592, + "name": "auctions", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 369, + "src": "19669:8:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_DetailAuction_$339_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.DetailAuction storage ref)" + } + }, + "id": 1594, + "indexExpression": { + "argumentTypes": null, + "id": 1593, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1551, + "src": "19678:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "19669:18:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAuction_$339_storage", + "typeString": "struct SmartPiggies.DetailAuction storage ref" + } + }, + "id": 1595, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "reservePrice", + "nodeType": "MemberAccess", + "referencedDeclaration": 330, + "src": "19669:31:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "19642:58:4" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1605, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2820, + "src": "19966:3:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1606, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "19966:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 1607, + "name": "_premiumToReturn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1591, + "src": "19978:16:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1598, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "19917:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 1600, + "indexExpression": { + "argumentTypes": null, + "id": 1599, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1551, + "src": "19925:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "19917:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 1601, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "addresses", + "nodeType": "MemberAccess", + "referencedDeclaration": 341, + "src": "19917:27:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAddresses_$298_storage", + "typeString": "struct SmartPiggies.DetailAddresses storage ref" + } + }, + "id": 1602, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "premiumERC", + "nodeType": "MemberAccess", + "referencedDeclaration": 293, + "src": "19917:38:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1597, + "name": "PaymentToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 274, + "src": "19904:12:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_PaymentToken_$274_$", + "typeString": "type(contract PaymentToken)" + } + }, + "id": 1603, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "19904:52:4", + "typeDescriptions": { + "typeIdentifier": "t_contract$_PaymentToken_$274", + "typeString": "contract PaymentToken" + } + }, + "id": 1604, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "transfer", + "nodeType": "MemberAccess", + "referencedDeclaration": 268, + "src": "19904:61:4", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,uint256) external returns (bool)" + } + }, + "id": 1608, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "19904:91:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1609, + "nodeType": "ExpressionStatement", + "src": "19904:91:4" + } + ] + } + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1613, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1551, + "src": "20028:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1612, + "name": "_clearAuctionDetails", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1378, + "src": "20007:20:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$__$", + "typeString": "function (uint256)" + } + }, + "id": 1614, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "20007:30:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1615, + "nodeType": "ExpressionStatement", + "src": "20007:30:4" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1617, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2820, + "src": "20059:3:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1618, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "20059:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 1619, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1551, + "src": "20071:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1620, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "20081:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 1622, + "indexExpression": { + "argumentTypes": null, + "id": 1621, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1551, + "src": "20089:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "20081:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 1623, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "flags", + "nodeType": "MemberAccess", + "referencedDeclaration": 345, + "src": "20081:23:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BoolFlags_$322_storage", + "typeString": "struct SmartPiggies.BoolFlags storage ref" + } + }, + "id": 1624, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "isRequest", + "nodeType": "MemberAccess", + "referencedDeclaration": 315, + "src": "20081:33:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 1616, + "name": "EndAuction", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 447, + "src": "20048:10:4", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_bool_$returns$__$", + "typeString": "function (address,uint256,bool)" + } + }, + "id": 1625, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "20048:67:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1626, + "nodeType": "EmitStatement", + "src": "20043:72:4" + }, + { + "expression": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 1627, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "20128:4:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 1555, + "id": 1628, + "nodeType": "Return", + "src": "20121:11:4" + } + ] + }, + "documentation": null, + "id": 1630, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "endAuction", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1552, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1551, + "name": "_tokenId", + "nodeType": "VariableDeclaration", + "scope": 1630, + "src": "19151:16:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1550, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "19151:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "19150:18:4" + }, + "returnParameters": { + "id": 1555, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1554, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 1630, + "src": "19193:4:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 1553, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "19193:4:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "19192:6:4" + }, + "scope": 2805, + "src": "19131:1006:4", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 1687, + "nodeType": "Block", + "src": "20396:578:4", + "statements": [ + { + "assignments": [ + 1638 + ], + "declarations": [ + { + "constant": false, + "id": 1638, + "name": "_pStart", + "nodeType": "VariableDeclaration", + "scope": 1687, + "src": "20578:15:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1637, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "20578:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1643, + "initialValue": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1639, + "name": "auctions", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 369, + "src": "20596:8:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_DetailAuction_$339_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.DetailAuction storage ref)" + } + }, + "id": 1641, + "indexExpression": { + "argumentTypes": null, + "id": 1640, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1632, + "src": "20605:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "20596:18:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAuction_$339_storage", + "typeString": "struct SmartPiggies.DetailAuction storage ref" + } + }, + "id": 1642, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "startPrice", + "nodeType": "MemberAccess", + "referencedDeclaration": 328, + "src": "20596:29:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "20578:47:4" + }, + { + "assignments": [ + 1645 + ], + "declarations": [ + { + "constant": false, + "id": 1645, + "name": "_pDelta", + "nodeType": "VariableDeclaration", + "scope": 1687, + "src": "20699:15:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1644, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "20699:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1667, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1662, + "name": "auctions", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 369, + "src": "20805:8:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_DetailAuction_$339_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.DetailAuction storage ref)" + } + }, + "id": 1664, + "indexExpression": { + "argumentTypes": null, + "id": 1663, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1632, + "src": "20814:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "20805:18:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAuction_$339_storage", + "typeString": "struct SmartPiggies.DetailAuction storage ref" + } + }, + "id": 1665, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "timeStep", + "nodeType": "MemberAccess", + "referencedDeclaration": 332, + "src": "20805:27:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1656, + "name": "auctions", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 369, + "src": "20771:8:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_DetailAuction_$339_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.DetailAuction storage ref)" + } + }, + "id": 1658, + "indexExpression": { + "argumentTypes": null, + "id": 1657, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1632, + "src": "20780:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "20771:18:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAuction_$339_storage", + "typeString": "struct SmartPiggies.DetailAuction storage ref" + } + }, + "id": 1659, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "priceStep", + "nodeType": "MemberAccess", + "referencedDeclaration": 334, + "src": "20771:28:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1650, + "name": "auctions", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 369, + "src": "20736:8:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_DetailAuction_$339_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.DetailAuction storage ref)" + } + }, + "id": 1652, + "indexExpression": { + "argumentTypes": null, + "id": 1651, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1632, + "src": "20745:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "20736:18:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAuction_$339_storage", + "typeString": "struct SmartPiggies.DetailAuction storage ref" + } + }, + "id": 1653, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "startBlock", + "nodeType": "MemberAccess", + "referencedDeclaration": 324, + "src": "20736:29:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1646, + "name": "block", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2810, + "src": "20718:5:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_block", + "typeString": "block" + } + }, + "id": 1647, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "number", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "20718:12:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 1648, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "20717:14:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1649, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sub", + "nodeType": "MemberAccess", + "referencedDeclaration": 200, + "src": "20717:18:4", + "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": 1654, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "20717:49:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1655, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "mul", + "nodeType": "MemberAccess", + "referencedDeclaration": 152, + "src": "20717:53:4", + "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": 1660, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "20717:83:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1661, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "div", + "nodeType": "MemberAccess", + "referencedDeclaration": 176, + "src": "20717:87:4", + "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": 1666, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "20717:116:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "20699:134:4" + }, + { + "condition": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1668, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "20843:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 1670, + "indexExpression": { + "argumentTypes": null, + "id": 1669, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1632, + "src": "20851:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "20843:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 1671, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "flags", + "nodeType": "MemberAccess", + "referencedDeclaration": 345, + "src": "20843:23:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BoolFlags_$322_storage", + "typeString": "struct SmartPiggies.BoolFlags storage ref" + } + }, + "id": 1672, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "isRequest", + "nodeType": "MemberAccess", + "referencedDeclaration": 315, + "src": "20843:33:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 1685, + "nodeType": "Block", + "src": "20926:44:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1681, + "name": "_pDelta", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1645, + "src": "20954:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 1679, + "name": "_pStart", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1638, + "src": "20942:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1680, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sub", + "nodeType": "MemberAccess", + "referencedDeclaration": 200, + "src": "20942:11:4", + "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": 1682, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "20942:20:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 1683, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "20941:22:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 1636, + "id": 1684, + "nodeType": "Return", + "src": "20934:29:4" + } + ] + }, + "id": 1686, + "nodeType": "IfStatement", + "src": "20839:131:4", + "trueBody": { + "id": 1678, + "nodeType": "Block", + "src": "20878:42:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1675, + "name": "_pDelta", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1645, + "src": "20905:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 1673, + "name": "_pStart", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1638, + "src": "20893:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1674, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 224, + "src": "20893:11:4", + "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": 1676, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "20893:20:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 1636, + "id": 1677, + "nodeType": "Return", + "src": "20886:27:4" + } + ] + } + } + ] + }, + "documentation": null, + "id": 1688, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getAuctionPrice", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1633, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1632, + "name": "_tokenId", + "nodeType": "VariableDeclaration", + "scope": 1688, + "src": "20332:16:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1631, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "20332:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "20331:18:4" + }, + "returnParameters": { + "id": 1636, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1635, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 1688, + "src": "20385:7:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1634, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "20385:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "20384:9:4" + }, + "scope": 2805, + "src": "20307:667:4", + "stateMutability": "view", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 1982, + "nodeType": "Block", + "src": "21106:3569:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1700, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "21120:37:4", + "subExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1696, + "name": "auctions", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 369, + "src": "21121:8:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_DetailAuction_$339_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.DetailAuction storage ref)" + } + }, + "id": 1698, + "indexExpression": { + "argumentTypes": null, + "id": 1697, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1690, + "src": "21130:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "21121:18:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAuction_$339_storage", + "typeString": "struct SmartPiggies.DetailAuction storage ref" + } + }, + "id": 1699, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "satisfyInProgress", + "nodeType": "MemberAccess", + "referencedDeclaration": 338, + "src": "21121:36:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "63616e6e6f74207265656e74657220746869732066756e6374696f6e207768696c6520697420697320696e2070726f6772657373", + "id": 1701, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "21159:54:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_6a34dcd3ede81bbd1e22bc4d5fb3a35a06c8f704b873ce69d53ec62180454676", + "typeString": "literal_string \"cannot reenter this function while it is in progress\"" + }, + "value": "cannot reenter this function while it is in progress" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_6a34dcd3ede81bbd1e22bc4d5fb3a35a06c8f704b873ce69d53ec62180454676", + "typeString": "literal_string \"cannot reenter this function while it is in progress\"" + } + ], + "id": 1695, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2823, + 2824 + ], + "referencedDeclaration": 2824, + "src": "21112:7:4", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 1702, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "21112:102:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1703, + "nodeType": "ExpressionStatement", + "src": "21112:102:4" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 1712, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1705, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "21228:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 1707, + "indexExpression": { + "argumentTypes": null, + "id": 1706, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1690, + "src": "21236:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "21228:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 1708, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "addresses", + "nodeType": "MemberAccess", + "referencedDeclaration": 341, + "src": "21228:27:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAddresses_$298_storage", + "typeString": "struct SmartPiggies.DetailAddresses storage ref" + } + }, + "id": 1709, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "holder", + "nodeType": "MemberAccess", + "referencedDeclaration": 289, + "src": "21228:34:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1710, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2820, + "src": "21266:3:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1711, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "21266:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "21228:48:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "63616e6e6f74207361746973667920796f7572206f776e2061756374696f6e3b2075736520656e6441756374696f6e20696e7374656164", + "id": 1713, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "21278:57:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_112f3e3ad5bb7a63f742b0817bbe32876de85d03ad362398959d793954c3e061", + "typeString": "literal_string \"cannot satisfy your own auction; use endAuction instead\"" + }, + "value": "cannot satisfy your own auction; use endAuction instead" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_112f3e3ad5bb7a63f742b0817bbe32876de85d03ad362398959d793954c3e061", + "typeString": "literal_string \"cannot satisfy your own auction; use endAuction instead\"" + } + ], + "id": 1704, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2823, + 2824 + ], + "referencedDeclaration": 2824, + "src": "21220:7:4", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 1714, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "21220:116:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1715, + "nodeType": "ExpressionStatement", + "src": "21220:116:4" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1717, + "name": "auctions", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 369, + "src": "21350:8:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_DetailAuction_$339_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.DetailAuction storage ref)" + } + }, + "id": 1719, + "indexExpression": { + "argumentTypes": null, + "id": 1718, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1690, + "src": "21359:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "21350:18:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAuction_$339_storage", + "typeString": "struct SmartPiggies.DetailAuction storage ref" + } + }, + "id": 1720, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "auctionActive", + "nodeType": "MemberAccess", + "referencedDeclaration": 336, + "src": "21350:32:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "61756374696f6e206d7573742062652061637469766520746f2073617469736679206974", + "id": 1721, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "21384:38:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_47fbac54a3159745f1291bcc5f2bf48b19397de937c242968b64ec1bba31c110", + "typeString": "literal_string \"auction must be active to satisfy it\"" + }, + "value": "auction must be active to satisfy it" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_47fbac54a3159745f1291bcc5f2bf48b19397de937c242968b64ec1bba31c110", + "typeString": "literal_string \"auction must be active to satisfy it\"" + } + ], + "id": 1716, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2823, + 2824 + ], + "referencedDeclaration": 2824, + "src": "21342:7:4", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 1722, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "21342:81:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1723, + "nodeType": "ExpressionStatement", + "src": "21342:81:4" + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1730, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1724, + "name": "auctions", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 369, + "src": "21512:8:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_DetailAuction_$339_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.DetailAuction storage ref)" + } + }, + "id": 1726, + "indexExpression": { + "argumentTypes": null, + "id": 1725, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1690, + "src": "21521:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "21512:18:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAuction_$339_storage", + "typeString": "struct SmartPiggies.DetailAuction storage ref" + } + }, + "id": 1727, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "expiryBlock", + "nodeType": "MemberAccess", + "referencedDeclaration": 326, + "src": "21512:30:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1728, + "name": "block", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2810, + "src": "21545:5:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_block", + "typeString": "block" + } + }, + "id": 1729, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "number", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "21545:12:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "21512:45:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 1738, + "nodeType": "IfStatement", + "src": "21508:206:4", + "trueBody": { + "id": 1737, + "nodeType": "Block", + "src": "21559:155:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1732, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1690, + "src": "21678:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1731, + "name": "_clearAuctionDetails", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1378, + "src": "21657:20:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$__$", + "typeString": "function (uint256)" + } + }, + "id": 1733, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "21657:30:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1734, + "nodeType": "ExpressionStatement", + "src": "21657:30:4" + }, + { + "expression": { + "argumentTypes": null, + "hexValue": "66616c7365", + "id": 1735, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "21702:5:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "functionReturnParameters": 1694, + "id": 1736, + "nodeType": "Return", + "src": "21695:12:4" + } + ] + } + }, + { + "assignments": [ + 1740 + ], + "declarations": [ + { + "constant": false, + "id": 1740, + "name": "_auctionPremium", + "nodeType": "VariableDeclaration", + "scope": 1982, + "src": "21860:23:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1739, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "21860:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1744, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1742, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1690, + "src": "21902:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1741, + "name": "getAuctionPrice", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1688, + "src": "21886:15:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256) view returns (uint256)" + } + }, + "id": 1743, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "21886:25:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "21860:51:4" + }, + { + "expression": { + "argumentTypes": null, + "id": 1750, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1745, + "name": "auctions", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 369, + "src": "21935:8:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_DetailAuction_$339_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.DetailAuction storage ref)" + } + }, + "id": 1747, + "indexExpression": { + "argumentTypes": null, + "id": 1746, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1690, + "src": "21944:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "21935:18:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAuction_$339_storage", + "typeString": "struct SmartPiggies.DetailAuction storage ref" + } + }, + "id": 1748, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "satisfyInProgress", + "nodeType": "MemberAccess", + "referencedDeclaration": 338, + "src": "21935:36:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 1749, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "21974:4:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "src": "21935:43:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1751, + "nodeType": "ExpressionStatement", + "src": "21935:43:4" + }, + { + "condition": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1752, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "21988:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 1754, + "indexExpression": { + "argumentTypes": null, + "id": 1753, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1690, + "src": "21996:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "21988:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 1755, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "flags", + "nodeType": "MemberAccess", + "referencedDeclaration": 345, + "src": "21988:23:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BoolFlags_$322_storage", + "typeString": "struct SmartPiggies.BoolFlags storage ref" + } + }, + "id": 1756, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "isRequest", + "nodeType": "MemberAccess", + "referencedDeclaration": 315, + "src": "21988:33:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 1967, + "nodeType": "Block", + "src": "23656:866:4", + "statements": [ + { + "assignments": [ + 1898 + ], + "declarations": [ + { + "constant": false, + "id": 1898, + "name": "_adjPremium", + "nodeType": "VariableDeclaration", + "scope": 1967, + "src": "23726:19:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1897, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "23726:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1900, + "initialValue": { + "argumentTypes": null, + "id": 1899, + "name": "_auctionPremium", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1740, + "src": "23748:15:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "23726:37:4" + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1906, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1901, + "name": "_adjPremium", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1898, + "src": "23775:11:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1902, + "name": "auctions", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 369, + "src": "23789:8:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_DetailAuction_$339_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.DetailAuction storage ref)" + } + }, + "id": 1904, + "indexExpression": { + "argumentTypes": null, + "id": 1903, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1690, + "src": "23798:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "23789:18:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAuction_$339_storage", + "typeString": "struct SmartPiggies.DetailAuction storage ref" + } + }, + "id": 1905, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "reservePrice", + "nodeType": "MemberAccess", + "referencedDeclaration": 330, + "src": "23789:31:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "23775:45:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 1915, + "nodeType": "IfStatement", + "src": "23771:115:4", + "trueBody": { + "id": 1914, + "nodeType": "Block", + "src": "23822:64:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 1912, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 1907, + "name": "_adjPremium", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1898, + "src": "23832:11:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1908, + "name": "auctions", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 369, + "src": "23846:8:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_DetailAuction_$339_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.DetailAuction storage ref)" + } + }, + "id": 1910, + "indexExpression": { + "argumentTypes": null, + "id": 1909, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1690, + "src": "23855:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "23846:18:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAuction_$339_storage", + "typeString": "struct SmartPiggies.DetailAuction storage ref" + } + }, + "id": 1911, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "reservePrice", + "nodeType": "MemberAccess", + "referencedDeclaration": 330, + "src": "23846:31:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "23832:45:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1913, + "nodeType": "ExpressionStatement", + "src": "23832:45:4" + } + ] + } + }, + { + "assignments": [ + 1917 + ], + "declarations": [ + { + "constant": false, + "id": 1917, + "name": "success", + "nodeType": "VariableDeclaration", + "scope": 1967, + "src": "23937:12:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 1916, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "23937:4:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1933, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1919, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "23984:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 1921, + "indexExpression": { + "argumentTypes": null, + "id": 1920, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1690, + "src": "23992:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "23984:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 1922, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "addresses", + "nodeType": "MemberAccess", + "referencedDeclaration": 341, + "src": "23984:27:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAddresses_$298_storage", + "typeString": "struct SmartPiggies.DetailAddresses storage ref" + } + }, + "id": 1923, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "premiumERC", + "nodeType": "MemberAccess", + "referencedDeclaration": 293, + "src": "23984:38:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1924, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2820, + "src": "24032:3:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1925, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "24032:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1926, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "24052:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 1928, + "indexExpression": { + "argumentTypes": null, + "id": 1927, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1690, + "src": "24060:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "24052:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 1929, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "addresses", + "nodeType": "MemberAccess", + "referencedDeclaration": 341, + "src": "24052:27:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAddresses_$298_storage", + "typeString": "struct SmartPiggies.DetailAddresses storage ref" + } + }, + "id": 1930, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "holder", + "nodeType": "MemberAccess", + "referencedDeclaration": 289, + "src": "24052:34:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1931, + "name": "_adjPremium", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1898, + "src": "24140:11:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1918, + "name": "attemptPaymentTransfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 537, + "src": "23952:22:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,address,address,uint256) returns (bool)" + } + }, + "id": 1932, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "23952:207:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "23937:222:4" + }, + { + "condition": { + "argumentTypes": null, + "id": 1935, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "24171:8:4", + "subExpression": { + "argumentTypes": null, + "id": 1934, + "name": "success", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1917, + "src": "24172:7:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 1946, + "nodeType": "IfStatement", + "src": "24167:99:4", + "trueBody": { + "id": 1945, + "nodeType": "Block", + "src": "24181:85:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 1941, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1936, + "name": "auctions", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 369, + "src": "24191:8:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_DetailAuction_$339_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.DetailAuction storage ref)" + } + }, + "id": 1938, + "indexExpression": { + "argumentTypes": null, + "id": 1937, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1690, + "src": "24200:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "24191:18:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAuction_$339_storage", + "typeString": "struct SmartPiggies.DetailAuction storage ref" + } + }, + "id": 1939, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "satisfyInProgress", + "nodeType": "MemberAccess", + "referencedDeclaration": 338, + "src": "24191:36:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "66616c7365", + "id": 1940, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "24230:5:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "src": "24191:44:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1942, + "nodeType": "ExpressionStatement", + "src": "24191:44:4" + }, + { + "expression": { + "argumentTypes": null, + "hexValue": "66616c7365", + "id": 1943, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "24252:5:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "functionReturnParameters": 1694, + "id": 1944, + "nodeType": "Return", + "src": "24245:12:4" + } + ] + } + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1948, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "24326:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 1950, + "indexExpression": { + "argumentTypes": null, + "id": 1949, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1690, + "src": "24334:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "24326:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 1951, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "addresses", + "nodeType": "MemberAccess", + "referencedDeclaration": 341, + "src": "24326:27:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAddresses_$298_storage", + "typeString": "struct SmartPiggies.DetailAddresses storage ref" + } + }, + "id": 1952, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "holder", + "nodeType": "MemberAccess", + "referencedDeclaration": 289, + "src": "24326:34:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1953, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2820, + "src": "24362:3:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1954, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "24362:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 1955, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1690, + "src": "24374:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1947, + "name": "_internalTransfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1025, + "src": "24308:17:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 1956, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "24308:75:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1957, + "nodeType": "ExpressionStatement", + "src": "24308:75:4" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1959, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2820, + "src": "24421:3:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1960, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "24421:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 1961, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1690, + "src": "24441:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 1962, + "name": "_adjPremium", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1898, + "src": "24459:11:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "hexValue": "30", + "id": 1963, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "24480:1:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + { + "argumentTypes": null, + "id": 1964, + "name": "_auctionPremium", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1740, + "src": "24491:15:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1958, + "name": "SatisfyAuction", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 459, + "src": "24397:14:4", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256,uint256,uint256,uint256)" + } + }, + "id": 1965, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "24397:117:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1966, + "nodeType": "EmitStatement", + "src": "24392:122:4" + } + ] + }, + "id": 1968, + "nodeType": "IfStatement", + "src": "21984:2538:4", + "trueBody": { + "id": 1896, + "nodeType": "Block", + "src": "22023:1627:4", + "statements": [ + { + "assignments": [ + 1758 + ], + "declarations": [ + { + "constant": false, + "id": 1758, + "name": "success", + "nodeType": "VariableDeclaration", + "scope": 1896, + "src": "22083:12:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 1757, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "22083:4:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1776, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1760, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "22130:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 1762, + "indexExpression": { + "argumentTypes": null, + "id": 1761, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1690, + "src": "22138:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "22130:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 1763, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "addresses", + "nodeType": "MemberAccess", + "referencedDeclaration": 341, + "src": "22130:27:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAddresses_$298_storage", + "typeString": "struct SmartPiggies.DetailAddresses storage ref" + } + }, + "id": 1764, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "collateralERC", + "nodeType": "MemberAccess", + "referencedDeclaration": 291, + "src": "22130:41:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1765, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2820, + "src": "22181:3:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1766, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "22181:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1768, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2843, + "src": "22209:4:4", + "typeDescriptions": { + "typeIdentifier": "t_contract$_SmartPiggies_$2805", + "typeString": "contract SmartPiggies" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_SmartPiggies_$2805", + "typeString": "contract SmartPiggies" + } + ], + "id": 1767, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "22201:7:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 1769, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "22201:13:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1770, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "22224:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 1772, + "indexExpression": { + "argumentTypes": null, + "id": 1771, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1690, + "src": "22232:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "22224:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 1773, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "uintDetails", + "nodeType": "MemberAccess", + "referencedDeclaration": 343, + "src": "22224:29:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailUints_$313_storage", + "typeString": "struct SmartPiggies.DetailUints storage ref" + } + }, + "id": 1774, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "reqCollateral", + "nodeType": "MemberAccess", + "referencedDeclaration": 310, + "src": "22224:43:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1759, + "name": "attemptPaymentTransfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 537, + "src": "22098:22:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,address,address,uint256) returns (bool)" + } + }, + "id": 1775, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "22098:177:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "22083:192:4" + }, + { + "condition": { + "argumentTypes": null, + "id": 1778, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "22287:8:4", + "subExpression": { + "argumentTypes": null, + "id": 1777, + "name": "success", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1758, + "src": "22288:7:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 1789, + "nodeType": "IfStatement", + "src": "22283:99:4", + "trueBody": { + "id": 1788, + "nodeType": "Block", + "src": "22297:85:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 1784, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1779, + "name": "auctions", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 369, + "src": "22307:8:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_DetailAuction_$339_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.DetailAuction storage ref)" + } + }, + "id": 1781, + "indexExpression": { + "argumentTypes": null, + "id": 1780, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1690, + "src": "22316:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "22307:18:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAuction_$339_storage", + "typeString": "struct SmartPiggies.DetailAuction storage ref" + } + }, + "id": 1782, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "satisfyInProgress", + "nodeType": "MemberAccess", + "referencedDeclaration": 338, + "src": "22307:36:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "66616c7365", + "id": 1783, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "22346:5:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "src": "22307:44:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1785, + "nodeType": "ExpressionStatement", + "src": "22307:44:4" + }, + { + "expression": { + "argumentTypes": null, + "hexValue": "66616c7365", + "id": 1786, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "22368:5:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "functionReturnParameters": 1694, + "id": 1787, + "nodeType": "Return", + "src": "22361:12:4" + } + ] + } + }, + { + "expression": { + "argumentTypes": null, + "id": 1800, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1790, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "22473:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 1792, + "indexExpression": { + "argumentTypes": null, + "id": 1791, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1690, + "src": "22481:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "22473:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 1793, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "uintDetails", + "nodeType": "MemberAccess", + "referencedDeclaration": 343, + "src": "22473:29:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailUints_$313_storage", + "typeString": "struct SmartPiggies.DetailUints storage ref" + } + }, + "id": 1794, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "collateral", + "nodeType": "MemberAccess", + "referencedDeclaration": 300, + "src": "22473:40:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1795, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "22516:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 1797, + "indexExpression": { + "argumentTypes": null, + "id": 1796, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1690, + "src": "22524:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "22516:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 1798, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "uintDetails", + "nodeType": "MemberAccess", + "referencedDeclaration": 343, + "src": "22516:29:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailUints_$313_storage", + "typeString": "struct SmartPiggies.DetailUints storage ref" + } + }, + "id": 1799, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "reqCollateral", + "nodeType": "MemberAccess", + "referencedDeclaration": 310, + "src": "22516:43:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "22473:86:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1801, + "nodeType": "ExpressionStatement", + "src": "22473:86:4" + }, + { + "assignments": [ + 1803 + ], + "declarations": [ + { + "constant": false, + "id": 1803, + "name": "_change", + "nodeType": "VariableDeclaration", + "scope": 1896, + "src": "22672:15:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1802, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "22672:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1805, + "initialValue": { + "argumentTypes": null, + "hexValue": "30", + "id": 1804, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "22690:1:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "22672:19:4" + }, + { + "assignments": [ + 1807 + ], + "declarations": [ + { + "constant": false, + "id": 1807, + "name": "_adjPremium", + "nodeType": "VariableDeclaration", + "scope": 1896, + "src": "22699:19:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1806, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "22699:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1809, + "initialValue": { + "argumentTypes": null, + "id": 1808, + "name": "_auctionPremium", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1740, + "src": "22721:15:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "22699:37:4" + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1815, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1810, + "name": "_adjPremium", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1807, + "src": "22748:11:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1811, + "name": "auctions", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 369, + "src": "22762:8:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_DetailAuction_$339_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.DetailAuction storage ref)" + } + }, + "id": 1813, + "indexExpression": { + "argumentTypes": null, + "id": 1812, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1690, + "src": "22771:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "22762:18:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAuction_$339_storage", + "typeString": "struct SmartPiggies.DetailAuction storage ref" + } + }, + "id": 1814, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "reservePrice", + "nodeType": "MemberAccess", + "referencedDeclaration": 330, + "src": "22762:31:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "22748:45:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 1834, + "nodeType": "Block", + "src": "22865:77:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 1832, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 1824, + "name": "_change", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1803, + "src": "22875:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1830, + "name": "_adjPremium", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1807, + "src": "22921:11:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1825, + "name": "auctions", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 369, + "src": "22885:8:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_DetailAuction_$339_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.DetailAuction storage ref)" + } + }, + "id": 1827, + "indexExpression": { + "argumentTypes": null, + "id": 1826, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1690, + "src": "22894:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "22885:18:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAuction_$339_storage", + "typeString": "struct SmartPiggies.DetailAuction storage ref" + } + }, + "id": 1828, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "reservePrice", + "nodeType": "MemberAccess", + "referencedDeclaration": 330, + "src": "22885:31:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1829, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sub", + "nodeType": "MemberAccess", + "referencedDeclaration": 200, + "src": "22885:35:4", + "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": 1831, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "22885:48:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "22875:58:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1833, + "nodeType": "ExpressionStatement", + "src": "22875:58:4" + } + ] + }, + "id": 1835, + "nodeType": "IfStatement", + "src": "22744:198:4", + "trueBody": { + "id": 1823, + "nodeType": "Block", + "src": "22795:64:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 1821, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 1816, + "name": "_adjPremium", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1807, + "src": "22805:11:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1817, + "name": "auctions", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 369, + "src": "22819:8:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_DetailAuction_$339_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.DetailAuction storage ref)" + } + }, + "id": 1819, + "indexExpression": { + "argumentTypes": null, + "id": 1818, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1690, + "src": "22828:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "22819:18:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAuction_$339_storage", + "typeString": "struct SmartPiggies.DetailAuction storage ref" + } + }, + "id": 1820, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "reservePrice", + "nodeType": "MemberAccess", + "referencedDeclaration": 330, + "src": "22819:31:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "22805:45:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1822, + "nodeType": "ExpressionStatement", + "src": "22805:45:4" + } + ] + } + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1844, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2820, + "src": "23112:3:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1845, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "23112:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 1846, + "name": "_adjPremium", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1807, + "src": "23124:11:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1837, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "23063:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 1839, + "indexExpression": { + "argumentTypes": null, + "id": 1838, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1690, + "src": "23071:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "23063:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 1840, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "addresses", + "nodeType": "MemberAccess", + "referencedDeclaration": 341, + "src": "23063:27:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAddresses_$298_storage", + "typeString": "struct SmartPiggies.DetailAddresses storage ref" + } + }, + "id": 1841, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "premiumERC", + "nodeType": "MemberAccess", + "referencedDeclaration": 293, + "src": "23063:38:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1836, + "name": "PaymentToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 274, + "src": "23050:12:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_PaymentToken_$274_$", + "typeString": "type(contract PaymentToken)" + } + }, + "id": 1842, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "23050:52:4", + "typeDescriptions": { + "typeIdentifier": "t_contract$_PaymentToken_$274", + "typeString": "contract PaymentToken" + } + }, + "id": 1843, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "transfer", + "nodeType": "MemberAccess", + "referencedDeclaration": 268, + "src": "23050:61:4", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,uint256) external returns (bool)" + } + }, + "id": 1847, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "23050:86:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1848, + "nodeType": "ExpressionStatement", + "src": "23050:86:4" + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1851, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1849, + "name": "_change", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1803, + "src": "23196:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 1850, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "23206:1:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "23196:11:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 1869, + "nodeType": "IfStatement", + "src": "23192:142:4", + "trueBody": { + "id": 1868, + "nodeType": "Block", + "src": "23209:125:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1860, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "23281:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 1862, + "indexExpression": { + "argumentTypes": null, + "id": 1861, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1690, + "src": "23289:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "23281:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 1863, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "addresses", + "nodeType": "MemberAccess", + "referencedDeclaration": 341, + "src": "23281:27:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAddresses_$298_storage", + "typeString": "struct SmartPiggies.DetailAddresses storage ref" + } + }, + "id": 1864, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "holder", + "nodeType": "MemberAccess", + "referencedDeclaration": 289, + "src": "23281:34:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1865, + "name": "_change", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1803, + "src": "23317:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1853, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "23232:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 1855, + "indexExpression": { + "argumentTypes": null, + "id": 1854, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1690, + "src": "23240:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "23232:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 1856, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "addresses", + "nodeType": "MemberAccess", + "referencedDeclaration": 341, + "src": "23232:27:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAddresses_$298_storage", + "typeString": "struct SmartPiggies.DetailAddresses storage ref" + } + }, + "id": 1857, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "premiumERC", + "nodeType": "MemberAccess", + "referencedDeclaration": 293, + "src": "23232:38:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1852, + "name": "PaymentToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 274, + "src": "23219:12:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_PaymentToken_$274_$", + "typeString": "type(contract PaymentToken)" + } + }, + "id": 1858, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "23219:52:4", + "typeDescriptions": { + "typeIdentifier": "t_contract$_PaymentToken_$274", + "typeString": "contract PaymentToken" + } + }, + "id": 1859, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "transfer", + "nodeType": "MemberAccess", + "referencedDeclaration": 268, + "src": "23219:61:4", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,uint256) external returns (bool)" + } + }, + "id": 1866, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "23219:106:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1867, + "nodeType": "ExpressionStatement", + "src": "23219:106:4" + } + ] + } + }, + { + "expression": { + "argumentTypes": null, + "id": 1876, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1870, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "23374:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 1872, + "indexExpression": { + "argumentTypes": null, + "id": 1871, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1690, + "src": "23382:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "23374:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 1873, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "flags", + "nodeType": "MemberAccess", + "referencedDeclaration": 345, + "src": "23374:23:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BoolFlags_$322_storage", + "typeString": "struct SmartPiggies.BoolFlags storage ref" + } + }, + "id": 1874, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "isRequest", + "nodeType": "MemberAccess", + "referencedDeclaration": 315, + "src": "23374:33:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "66616c7365", + "id": 1875, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "23410:5:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "src": "23374:41:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1877, + "nodeType": "ExpressionStatement", + "src": "23374:41:4" + }, + { + "expression": { + "argumentTypes": null, + "id": 1885, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1878, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "23458:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 1880, + "indexExpression": { + "argumentTypes": null, + "id": 1879, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1690, + "src": "23466:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "23458:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 1881, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "addresses", + "nodeType": "MemberAccess", + "referencedDeclaration": 341, + "src": "23458:27:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAddresses_$298_storage", + "typeString": "struct SmartPiggies.DetailAddresses storage ref" + } + }, + "id": 1882, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "writer", + "nodeType": "MemberAccess", + "referencedDeclaration": 287, + "src": "23458:34:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1883, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2820, + "src": "23495:3:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1884, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "23495:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "23458:47:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 1886, + "nodeType": "ExpressionStatement", + "src": "23458:47:4" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1888, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2820, + "src": "23543:3:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1889, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "23543:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 1890, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1690, + "src": "23563:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 1891, + "name": "_adjPremium", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1807, + "src": "23581:11:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 1892, + "name": "_change", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1803, + "src": "23602:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 1893, + "name": "_auctionPremium", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1740, + "src": "23619:15:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1887, + "name": "SatisfyAuction", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 459, + "src": "23519:14:4", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256,uint256,uint256,uint256)" + } + }, + "id": 1894, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "23519:123:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1895, + "nodeType": "EmitStatement", + "src": "23514:128:4" + } + ] + } + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1970, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1690, + "src": "24572:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1969, + "name": "_clearAuctionDetails", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1378, + "src": "24551:20:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$__$", + "typeString": "function (uint256)" + } + }, + "id": 1971, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "24551:30:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1972, + "nodeType": "ExpressionStatement", + "src": "24551:30:4" + }, + { + "expression": { + "argumentTypes": null, + "id": 1978, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1973, + "name": "auctions", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 369, + "src": "24609:8:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_DetailAuction_$339_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.DetailAuction storage ref)" + } + }, + "id": 1975, + "indexExpression": { + "argumentTypes": null, + "id": 1974, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1690, + "src": "24618:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "24609:18:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAuction_$339_storage", + "typeString": "struct SmartPiggies.DetailAuction storage ref" + } + }, + "id": 1976, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "satisfyInProgress", + "nodeType": "MemberAccess", + "referencedDeclaration": 338, + "src": "24609:36:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "66616c7365", + "id": 1977, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "24648:5:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "src": "24609:44:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1979, + "nodeType": "ExpressionStatement", + "src": "24609:44:4" + }, + { + "expression": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 1980, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "24666:4:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 1694, + "id": 1981, + "nodeType": "Return", + "src": "24659:11:4" + } + ] + }, + "documentation": null, + "id": 1983, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "satisfyAuction", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1691, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1690, + "name": "_tokenId", + "nodeType": "VariableDeclaration", + "scope": 1983, + "src": "21056:16:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1689, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "21056:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "21055:18:4" + }, + "returnParameters": { + "id": 1694, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1693, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 1983, + "src": "21098:4:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 1692, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "21098:4:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "21097:6:4" + }, + "scope": 2805, + "src": "21032:3643:4", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 2115, + "nodeType": "Block", + "src": "26380:1259:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + "id": 1998, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1993, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2820, + "src": "26394:3:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1994, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "26394:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 1996, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "26416: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": 1995, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "26408:7:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 1997, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "26408:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "26394:24:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "73656e6465722063616e6e6f7420626520746865207a65726f2061646472657373", + "id": 1999, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "26420:35:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_ad4115bea56432736ed27c403a062ee25e09cc9064ddb968ec7ebe18284352ba", + "typeString": "literal_string \"sender cannot be the zero address\"" + }, + "value": "sender cannot be the zero address" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_ad4115bea56432736ed27c403a062ee25e09cc9064ddb968ec7ebe18284352ba", + "typeString": "literal_string \"sender cannot be the zero address\"" + } + ], + "id": 1992, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2823, + 2824 + ], + "referencedDeclaration": 2824, + "src": "26386:7:4", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 2000, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "26386:70:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2001, + "nodeType": "ExpressionStatement", + "src": "26386:70:4" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2007, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "26533:33:4", + "subExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2003, + "name": "auctions", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 369, + "src": "26534:8:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_DetailAuction_$339_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.DetailAuction storage ref)" + } + }, + "id": 2005, + "indexExpression": { + "argumentTypes": null, + "id": 2004, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1985, + "src": "26543:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "26534:18:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAuction_$339_storage", + "typeString": "struct SmartPiggies.DetailAuction storage ref" + } + }, + "id": 2006, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "auctionActive", + "nodeType": "MemberAccess", + "referencedDeclaration": 336, + "src": "26534:32:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "63616e6e6f7420636c656172206120746f6b656e207768696c652061756374696f6e20697320616374697665", + "id": 2008, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "26568:46:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_e4ca701426be01735c162fff9ee04dad7379e543cf6beb835093efb705fd1026", + "typeString": "literal_string \"cannot clear a token while auction is active\"" + }, + "value": "cannot clear a token while auction is active" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_e4ca701426be01735c162fff9ee04dad7379e543cf6beb835093efb705fd1026", + "typeString": "literal_string \"cannot clear a token while auction is active\"" + } + ], + "id": 2002, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2823, + 2824 + ], + "referencedDeclaration": 2824, + "src": "26525:7:4", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 2009, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "26525:90:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2010, + "nodeType": "ExpressionStatement", + "src": "26525:90:4" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2017, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "26629:39:4", + "subExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2012, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "26630:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 2014, + "indexExpression": { + "argumentTypes": null, + "id": 2013, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1985, + "src": "26638:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "26630:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 2015, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "flags", + "nodeType": "MemberAccess", + "referencedDeclaration": 345, + "src": "26630:23:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BoolFlags_$322_storage", + "typeString": "struct SmartPiggies.BoolFlags storage ref" + } + }, + "id": 2016, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "hasBeenCleared", + "nodeType": "MemberAccess", + "referencedDeclaration": 321, + "src": "26630:38:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "746f6b656e2068617320616c7265616479206265656e20636c6561726564", + "id": 2018, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "26670:32:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_ab94240cb90c148b324880de3f30539922fa48badec3a654065a4231cfad07a4", + "typeString": "literal_string \"token has already been cleared\"" + }, + "value": "token has already been cleared" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_ab94240cb90c148b324880de3f30539922fa48badec3a654065a4231cfad07a4", + "typeString": "literal_string \"token has already been cleared\"" + } + ], + "id": 2011, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2823, + 2824 + ], + "referencedDeclaration": 2824, + "src": "26621:7:4", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 2019, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "26621:82:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2020, + "nodeType": "ExpressionStatement", + "src": "26621:82:4" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2024, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2022, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1985, + "src": "26783:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 2023, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "26795:1:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "26783:13:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "5f746f6b656e49642063616e6e6f74206265207a65726f", + "id": 2025, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "26798:25:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_2f700274588ee4557177665c8ed74d76c18015ed2878f7ebb5d0d398460b950d", + "typeString": "literal_string \"_tokenId cannot be zero\"" + }, + "value": "_tokenId cannot be zero" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_2f700274588ee4557177665c8ed74d76c18015ed2878f7ebb5d0d398460b950d", + "typeString": "literal_string \"_tokenId cannot be zero\"" + } + ], + "id": 2021, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2823, + 2824 + ], + "referencedDeclaration": 2824, + "src": "26775:7:4", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 2026, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "26775:49:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2027, + "nodeType": "ExpressionStatement", + "src": "26775:49:4" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2031, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2029, + "name": "_oracleFee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1987, + "src": "26838:10:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 2030, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "26852:1:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "26838:15:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "6f7261636c65206665652063616e6e6f74206265207a65726f", + "id": 2032, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "26855:27:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_0db8fe92326f442d19f70ee9735d4588e3a3e39253e476edcfda4f7f1af78339", + "typeString": "literal_string \"oracle fee cannot be zero\"" + }, + "value": "oracle fee cannot be zero" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_0db8fe92326f442d19f70ee9735d4588e3a3e39253e476edcfda4f7f1af78339", + "typeString": "literal_string \"oracle fee cannot be zero\"" + } + ], + "id": 2028, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2823, + 2824 + ], + "referencedDeclaration": 2824, + "src": "26830:7:4", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 2033, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "26830:53:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2034, + "nodeType": "ExpressionStatement", + "src": "26830:53:4" + }, + { + "condition": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2035, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "26927:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 2037, + "indexExpression": { + "argumentTypes": null, + "id": 2036, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1985, + "src": "26935:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "26927:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 2038, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "flags", + "nodeType": "MemberAccess", + "referencedDeclaration": 345, + "src": "26927:23:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BoolFlags_$322_storage", + "typeString": "struct SmartPiggies.BoolFlags storage ref" + } + }, + "id": 2039, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "isEuro", + "nodeType": "MemberAccess", + "referencedDeclaration": 317, + "src": "26927:30:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 2052, + "nodeType": "IfStatement", + "src": "26923:112:4", + "trueBody": { + "id": 2051, + "nodeType": "Block", + "src": "26959:76:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2048, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2041, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "26975:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 2043, + "indexExpression": { + "argumentTypes": null, + "id": 2042, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1985, + "src": "26983:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "26975:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 2044, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "uintDetails", + "nodeType": "MemberAccess", + "referencedDeclaration": 343, + "src": "26975:29:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailUints_$313_storage", + "typeString": "struct SmartPiggies.DetailUints storage ref" + } + }, + "id": 2045, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "expiry", + "nodeType": "MemberAccess", + "referencedDeclaration": 306, + "src": "26975:36:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<=", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 2046, + "name": "block", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2810, + "src": "27015:5:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_block", + "typeString": "block" + } + }, + "id": 2047, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "number", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "27015:12:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "26975:52:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 2040, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2823, + 2824 + ], + "referencedDeclaration": 2823, + "src": "26967:7:4", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 2049, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "26967:61:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2050, + "nodeType": "ExpressionStatement", + "src": "26967:61:4" + } + ] + } + }, + { + "assignments": [ + 2054 + ], + "declarations": [ + { + "constant": false, + "id": 2054, + "name": "_dataResolver", + "nodeType": "VariableDeclaration", + "scope": 2115, + "src": "27084:21:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2053, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "27084:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 2055, + "initialValue": null, + "nodeType": "VariableDeclarationStatement", + "src": "27084:21:4" + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 2070, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2056, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "27115:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 2058, + "indexExpression": { + "argumentTypes": null, + "id": 2057, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1985, + "src": "27123:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "27115:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 2059, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "flags", + "nodeType": "MemberAccess", + "referencedDeclaration": 345, + "src": "27115:23:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BoolFlags_$322_storage", + "typeString": "struct SmartPiggies.BoolFlags storage ref" + } + }, + "id": 2060, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "isEuro", + "nodeType": "MemberAccess", + "referencedDeclaration": 317, + "src": "27115:30:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2068, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2061, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "27150:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 2063, + "indexExpression": { + "argumentTypes": null, + "id": 2062, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1985, + "src": "27158:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "27150:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 2064, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "uintDetails", + "nodeType": "MemberAccess", + "referencedDeclaration": 343, + "src": "27150:29:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailUints_$313_storage", + "typeString": "struct SmartPiggies.DetailUints storage ref" + } + }, + "id": 2065, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "expiry", + "nodeType": "MemberAccess", + "referencedDeclaration": 306, + "src": "27150:36:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 2066, + "name": "block", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2810, + "src": "27189:5:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_block", + "typeString": "block" + } + }, + "id": 2067, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "number", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "27189:12:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "27150:51:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "id": 2069, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "27149:53:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "27115:87:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 2100, + "nodeType": "Block", + "src": "27293:208:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 2088, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 2081, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2820, + "src": "27309:3:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 2082, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "27309:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2083, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "27323:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 2085, + "indexExpression": { + "argumentTypes": null, + "id": 2084, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1985, + "src": "27331:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "27323:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 2086, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "addresses", + "nodeType": "MemberAccess", + "referencedDeclaration": 341, + "src": "27323:27:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAddresses_$298_storage", + "typeString": "struct SmartPiggies.DetailAddresses storage ref" + } + }, + "id": 2087, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "holder", + "nodeType": "MemberAccess", + "referencedDeclaration": 289, + "src": "27323:34:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "27309:48:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "6f6e6c792074686520686f6c6465722063616e20736574746c6520616e20416d65726963616e207374796c65206f7074696f6e206265666f726520657870697279", + "id": 2089, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "27359:67:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_e638b15f125c8aef048b8486194c7d2b0eb1011ee42fac359a0c27aed937b109", + "typeString": "literal_string \"only the holder can settle an American style option before expiry\"" + }, + "value": "only the holder can settle an American style option before expiry" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_e638b15f125c8aef048b8486194c7d2b0eb1011ee42fac359a0c27aed937b109", + "typeString": "literal_string \"only the holder can settle an American style option before expiry\"" + } + ], + "id": 2080, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2823, + 2824 + ], + "referencedDeclaration": 2824, + "src": "27301:7:4", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 2090, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "27301:126:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2091, + "nodeType": "ExpressionStatement", + "src": "27301:126:4" + }, + { + "expression": { + "argumentTypes": null, + "id": 2098, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 2092, + "name": "_dataResolver", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2054, + "src": "27435:13:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2093, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "27451:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 2095, + "indexExpression": { + "argumentTypes": null, + "id": 2094, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1985, + "src": "27459:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "27451:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 2096, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "addresses", + "nodeType": "MemberAccess", + "referencedDeclaration": 341, + "src": "27451:27:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAddresses_$298_storage", + "typeString": "struct SmartPiggies.DetailAddresses storage ref" + } + }, + "id": 2097, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "dataResolverNow", + "nodeType": "MemberAccess", + "referencedDeclaration": 295, + "src": "27451:43:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "27435:59:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 2099, + "nodeType": "ExpressionStatement", + "src": "27435:59:4" + } + ] + }, + "id": 2101, + "nodeType": "IfStatement", + "src": "27111:390:4", + "trueBody": { + "id": 2079, + "nodeType": "Block", + "src": "27208:79:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 2077, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 2071, + "name": "_dataResolver", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2054, + "src": "27216:13:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2072, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "27232:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 2074, + "indexExpression": { + "argumentTypes": null, + "id": 2073, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1985, + "src": "27240:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "27232:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 2075, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "addresses", + "nodeType": "MemberAccess", + "referencedDeclaration": 341, + "src": "27232:27:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAddresses_$298_storage", + "typeString": "struct SmartPiggies.DetailAddresses storage ref" + } + }, + "id": 2076, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "dataResolverAtExpiry", + "nodeType": "MemberAccess", + "referencedDeclaration": 297, + "src": "27232:48:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "27216:64:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 2078, + "nodeType": "ExpressionStatement", + "src": "27216:64:4" + } + ] + } + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2104, + "name": "_dataResolver", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2054, + "src": "27528:13:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 2105, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2820, + "src": "27543:3:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 2106, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "27543:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 2107, + "name": "_oracleFee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1987, + "src": "27555:10:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 2108, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1985, + "src": "27567:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 2103, + "name": "_callResolver", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2159, + "src": "27514:13:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,address,uint256,uint256) returns (bool)" + } + }, + "id": 2109, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "27514:62:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "63616c6c20746f207265736f6c76657220646964206e6f742072657475726e2074727565", + "id": 2110, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "27578:38:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_c7d5d1fb1a904d51b7573bd7503cbbffa6841f2e9d1a1819b91902b71dc327b4", + "typeString": "literal_string \"call to resolver did not return true\"" + }, + "value": "call to resolver did not return true" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_c7d5d1fb1a904d51b7573bd7503cbbffa6841f2e9d1a1819b91902b71dc327b4", + "typeString": "literal_string \"call to resolver did not return true\"" + } + ], + "id": 2102, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2823, + 2824 + ], + "referencedDeclaration": 2824, + "src": "27506:7:4", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 2111, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "27506:111:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2112, + "nodeType": "ExpressionStatement", + "src": "27506:111:4" + }, + { + "expression": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 2113, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "27630:4:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 1991, + "id": 2114, + "nodeType": "Return", + "src": "27623:11:4" + } + ] + }, + "documentation": "@notice Call the oracle to fetch the settlement price\n@dev Throws if `_tokenId` is not a valid ERC-59 token.\nThrows if `_oracle` is not a valid contract address.\nThrows if `onMarket(_tokenId)` is true.\nIf `isEuro` is true for the specified token, throws if `_expiry` > block.number.\nIf `isEuro` is true for the specified token, throws if `_priceNow` is true. [OR specify that it flips that to false always (?)]\nIf `priceNow` is true, throws if block.number > `_expiry` for the specified token.\nIf `priceNow` is false, throws if block.number < `_expiry` for the specified token.\nIf `priceNow` is true, calls the oracle to request the `_underlyingNow` value for the token.\nIf `priceNow` is false, calls the oracle to request the `_underlyingExpiry` value for the token.\nDepending on the oracle service implemented, additional state will need to be referenced in\norder to call the oracle, e.g. an endpoint to fetch. This state handling will need to be\nmanaged on an implementation basis for specific oracle services.\n@param _tokenId The identifier of the specific ERC-59 token for which to fetch a settlement price\n_oracle The address of the oracle contract used to fetch the external settlement price\n_priceNow A boolean for specifying whether to fetch a \"live\" price or a fixed price at\nexpiry of the option\n@return The settlement price from the oracle to be used in `settleOption()`", + "id": 2116, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "requestSettlementPrice", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1988, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1985, + "name": "_tokenId", + "nodeType": "VariableDeclaration", + "scope": 2116, + "src": "26222:16:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1984, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "26222:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1987, + "name": "_oracleFee", + "nodeType": "VariableDeclaration", + "scope": 2116, + "src": "26240:18:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1986, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "26240:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "26221:38:4" + }, + "returnParameters": { + "id": 1991, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1990, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 2116, + "src": "26372:4:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 1989, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "26372:4:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "26371:6:4" + }, + "scope": 2805, + "src": "26190:1449:4", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 2158, + "nodeType": "Block", + "src": "27780:354:4", + "statements": [ + { + "assignments": [ + 2130, + null + ], + "declarations": [ + { + "constant": false, + "id": 2130, + "name": "success", + "nodeType": "VariableDeclaration", + "scope": 2158, + "src": "27787:12:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 2129, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "27787:4:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + }, + null + ], + "id": 2143, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "66657463684461746128616464726573732c75696e743235362c75696e7432353629", + "id": 2137, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "27864:36:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_1aa8ccc93b3cc911b48ca8541328b478b706a0fda711a61bfb3228bb961bc27f", + "typeString": "literal_string \"fetchData(address,uint256,uint256)\"" + }, + "value": "fetchData(address,uint256,uint256)" + }, + { + "argumentTypes": null, + "id": 2138, + "name": "_feePayer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2120, + "src": "27902:9:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 2139, + "name": "_oracleFee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2122, + "src": "27913:10:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 2140, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2124, + "src": "27925:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_1aa8ccc93b3cc911b48ca8541328b478b706a0fda711a61bfb3228bb961bc27f", + "typeString": "literal_string \"fetchData(address,uint256,uint256)\"" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 2135, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2807, + "src": "27840:3:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 2136, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "encodeWithSignature", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "27840:23:4", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$", + "typeString": "function (string memory) pure returns (bytes memory)" + } + }, + "id": 2141, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "27840:94:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2132, + "name": "_dataResolver", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2118, + "src": "27813:13:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 2131, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "27805:7:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 2133, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "27805:22:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 2134, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "call", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "27805:27:4", + "typeDescriptions": { + "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$", + "typeString": "function (bytes memory) payable returns (bool,bytes memory)" + } + }, + "id": 2142, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "27805:135:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$", + "typeString": "tuple(bool,bytes memory)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "27786:154:4" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2145, + "name": "success", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2130, + "src": "27954:7:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "6665746368207375636365737320646964206e6f742072657475726e2074727565", + "id": 2146, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "27963:35:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_994cb985e31ba3aa28e93aea8c8314dc6e57927397544c60b1b2f03735f47644", + "typeString": "literal_string \"fetch success did not return true\"" + }, + "value": "fetch success did not return true" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_994cb985e31ba3aa28e93aea8c8314dc6e57927397544c60b1b2f03735f47644", + "typeString": "literal_string \"fetch success did not return true\"" + } + ], + "id": 2144, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2823, + 2824 + ], + "referencedDeclaration": 2824, + "src": "27946:7:4", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 2147, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "27946:53:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2148, + "nodeType": "ExpressionStatement", + "src": "27946:53:4" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2150, + "name": "_feePayer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2120, + "src": "28041:9:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 2151, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2124, + "src": "28058:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 2152, + "name": "_oracleFee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2122, + "src": "28074:10:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 2153, + "name": "_dataResolver", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2118, + "src": "28092:13:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 2149, + "name": "RequestSettlementPrice", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 469, + "src": "28011:22:4", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_address_$returns$__$", + "typeString": "function (address,uint256,uint256,address)" + } + }, + "id": 2154, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "28011:100:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2155, + "nodeType": "EmitStatement", + "src": "28006:105:4" + }, + { + "expression": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 2156, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "28125:4:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 2128, + "id": 2157, + "nodeType": "Return", + "src": "28118:11:4" + } + ] + }, + "documentation": null, + "id": 2159, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_callResolver", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2125, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2118, + "name": "_dataResolver", + "nodeType": "VariableDeclaration", + "scope": 2159, + "src": "27666:21:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2117, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "27666:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2120, + "name": "_feePayer", + "nodeType": "VariableDeclaration", + "scope": 2159, + "src": "27689:17:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2119, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "27689:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2122, + "name": "_oracleFee", + "nodeType": "VariableDeclaration", + "scope": 2159, + "src": "27708:18:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2121, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "27708:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2124, + "name": "_tokenId", + "nodeType": "VariableDeclaration", + "scope": 2159, + "src": "27728:16:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2123, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "27728:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "27665:80:4" + }, + "returnParameters": { + "id": 2128, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2127, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 2159, + "src": "27772:4:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 2126, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "27772:4:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "27771:6:4" + }, + "scope": 2805, + "src": "27643:491:4", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 2234, + "nodeType": "Block", + "src": "28216:615:4", + "statements": [ + { + "assignments": [ + 2167 + ], + "declarations": [ + { + "constant": false, + "id": 2167, + "name": "_dataResolver", + "nodeType": "VariableDeclaration", + "scope": 2234, + "src": "28222:21:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2166, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "28222:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 2168, + "initialValue": null, + "nodeType": "VariableDeclarationStatement", + "src": "28222:21:4" + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 2183, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2169, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "28253:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 2171, + "indexExpression": { + "argumentTypes": null, + "id": 2170, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2161, + "src": "28261:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "28253:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 2172, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "flags", + "nodeType": "MemberAccess", + "referencedDeclaration": 345, + "src": "28253:23:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BoolFlags_$322_storage", + "typeString": "struct SmartPiggies.BoolFlags storage ref" + } + }, + "id": 2173, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "isEuro", + "nodeType": "MemberAccess", + "referencedDeclaration": 317, + "src": "28253:30:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2181, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2174, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "28288:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 2176, + "indexExpression": { + "argumentTypes": null, + "id": 2175, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2161, + "src": "28296:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "28288:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 2177, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "uintDetails", + "nodeType": "MemberAccess", + "referencedDeclaration": 343, + "src": "28288:29:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailUints_$313_storage", + "typeString": "struct SmartPiggies.DetailUints storage ref" + } + }, + "id": 2178, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "expiry", + "nodeType": "MemberAccess", + "referencedDeclaration": 306, + "src": "28288:36:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 2179, + "name": "block", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2810, + "src": "28327:5:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_block", + "typeString": "block" + } + }, + "id": 2180, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "number", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "28327:12:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "28288:51:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "id": 2182, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "28287:53:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "28253:87:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 2201, + "nodeType": "Block", + "src": "28431:74:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 2199, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 2193, + "name": "_dataResolver", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2167, + "src": "28439:13:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2194, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "28455:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 2196, + "indexExpression": { + "argumentTypes": null, + "id": 2195, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2161, + "src": "28463:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "28455:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 2197, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "addresses", + "nodeType": "MemberAccess", + "referencedDeclaration": 341, + "src": "28455:27:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAddresses_$298_storage", + "typeString": "struct SmartPiggies.DetailAddresses storage ref" + } + }, + "id": 2198, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "dataResolverNow", + "nodeType": "MemberAccess", + "referencedDeclaration": 295, + "src": "28455:43:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "28439:59:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 2200, + "nodeType": "ExpressionStatement", + "src": "28439:59:4" + } + ] + }, + "id": 2202, + "nodeType": "IfStatement", + "src": "28249:256:4", + "trueBody": { + "id": 2192, + "nodeType": "Block", + "src": "28346:79:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 2190, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 2184, + "name": "_dataResolver", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2167, + "src": "28354:13:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2185, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "28370:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 2187, + "indexExpression": { + "argumentTypes": null, + "id": 2186, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2161, + "src": "28378:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "28370:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 2188, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "addresses", + "nodeType": "MemberAccess", + "referencedDeclaration": 341, + "src": "28370:27:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAddresses_$298_storage", + "typeString": "struct SmartPiggies.DetailAddresses storage ref" + } + }, + "id": 2189, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "dataResolverAtExpiry", + "nodeType": "MemberAccess", + "referencedDeclaration": 297, + "src": "28370:48:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "28354:64:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 2191, + "nodeType": "ExpressionStatement", + "src": "28354:64:4" + } + ] + } + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 2207, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 2204, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2820, + "src": "28518:3:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 2205, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "28518:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 2206, + "name": "_dataResolver", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2167, + "src": "28532:13:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "28518:27:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "7265736f6c7665206164647265737320776173206e6f7420636f7272656374", + "id": 2208, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "28547:33:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_2e33e22d72fdb46becf75c42e09581fa0441b6719e3574fb9d745f9b7a787af7", + "typeString": "literal_string \"resolve address was not correct\"" + }, + "value": "resolve address was not correct" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_2e33e22d72fdb46becf75c42e09581fa0441b6719e3574fb9d745f9b7a787af7", + "typeString": "literal_string \"resolve address was not correct\"" + } + ], + "id": 2203, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2823, + 2824 + ], + "referencedDeclaration": 2824, + "src": "28510:7:4", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 2209, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "28510:71:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2210, + "nodeType": "ExpressionStatement", + "src": "28510:71:4" + }, + { + "expression": { + "argumentTypes": null, + "id": 2217, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2211, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "28640:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 2213, + "indexExpression": { + "argumentTypes": null, + "id": 2212, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2161, + "src": "28648:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "28640:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 2214, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "uintDetails", + "nodeType": "MemberAccess", + "referencedDeclaration": 343, + "src": "28640:29:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailUints_$313_storage", + "typeString": "struct SmartPiggies.DetailUints storage ref" + } + }, + "id": 2215, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "settlementPrice", + "nodeType": "MemberAccess", + "referencedDeclaration": 308, + "src": "28640:45:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 2216, + "name": "_price", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2163, + "src": "28688:6:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "28640:54:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2218, + "nodeType": "ExpressionStatement", + "src": "28640:54:4" + }, + { + "expression": { + "argumentTypes": null, + "id": 2225, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2219, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "28700:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 2221, + "indexExpression": { + "argumentTypes": null, + "id": 2220, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2161, + "src": "28708:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "28700:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 2222, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "flags", + "nodeType": "MemberAccess", + "referencedDeclaration": 345, + "src": "28700:23:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BoolFlags_$322_storage", + "typeString": "struct SmartPiggies.BoolFlags storage ref" + } + }, + "id": 2223, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "hasBeenCleared", + "nodeType": "MemberAccess", + "referencedDeclaration": 321, + "src": "28700:38:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 2224, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "28741:4:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "src": "28700:45:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2226, + "nodeType": "ExpressionStatement", + "src": "28700:45:4" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 2228, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2820, + "src": "28779:3:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 2229, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "28779:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 2230, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2161, + "src": "28797:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 2231, + "name": "_price", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2163, + "src": "28813:6:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 2227, + "name": "OracleReturned", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 477, + "src": "28757:14:4", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256,uint256)" + } + }, + "id": 2232, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "28757:68:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2233, + "nodeType": "EmitStatement", + "src": "28752:73:4" + } + ] + }, + "documentation": null, + "id": 2235, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_callback", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2164, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2161, + "name": "_tokenId", + "nodeType": "VariableDeclaration", + "scope": 2235, + "src": "28162:16:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2160, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "28162:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2163, + "name": "_price", + "nodeType": "VariableDeclaration", + "scope": 2235, + "src": "28184:14:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2162, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "28184:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "28156:46:4" + }, + "returnParameters": { + "id": 2165, + "nodeType": "ParameterList", + "parameters": [], + "src": "28216:0:4" + }, + "scope": 2805, + "src": "28138:693:4", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 2300, + "nodeType": "Block", + "src": "29522:318:4", + "statements": [ + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 2255, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2250, + "name": "_isPut", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2237, + "src": "29532:6:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2253, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2251, + "name": "_strikePrice", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2241, + "src": "29543:12:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "id": 2252, + "name": "_exercisePrice", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2239, + "src": "29558:14:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "29543:29:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "id": 2254, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "29542:31:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "29532:41:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 2264, + "nodeType": "IfStatement", + "src": "29528:104:4", + "trueBody": { + "id": 2263, + "nodeType": "Block", + "src": "29575:57:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 2261, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 2256, + "name": "_payout", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2248, + "src": "29583:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2259, + "name": "_exercisePrice", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2239, + "src": "29610:14:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 2257, + "name": "_strikePrice", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2241, + "src": "29593:12:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2258, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sub", + "nodeType": "MemberAccess", + "referencedDeclaration": 200, + "src": "29593:16:4", + "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": 2260, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "29593:32:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "29583:42:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2262, + "nodeType": "ExpressionStatement", + "src": "29583:42:4" + } + ] + } + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 2271, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2266, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "29641:7:4", + "subExpression": { + "argumentTypes": null, + "id": 2265, + "name": "_isPut", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2237, + "src": "29642:6:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2269, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2267, + "name": "_exercisePrice", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2239, + "src": "29653:14:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "id": 2268, + "name": "_strikePrice", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2241, + "src": "29670:12:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "29653:29:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "id": 2270, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "29652:31:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "29641:42:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 2280, + "nodeType": "IfStatement", + "src": "29637:105:4", + "trueBody": { + "id": 2279, + "nodeType": "Block", + "src": "29685:57:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 2277, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 2272, + "name": "_payout", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2248, + "src": "29693:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2275, + "name": "_strikePrice", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2241, + "src": "29722:12:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 2273, + "name": "_exercisePrice", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2239, + "src": "29703:14:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2274, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sub", + "nodeType": "MemberAccess", + "referencedDeclaration": 200, + "src": "29703:18:4", + "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": 2276, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "29703:32:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "29693:42:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2278, + "nodeType": "ExpressionStatement", + "src": "29693:42:4" + } + ] + } + }, + { + "expression": { + "argumentTypes": null, + "id": 2296, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 2281, + "name": "_payout", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2248, + "src": "29747:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "313030", + "id": 2294, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "29811:3:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_100_by_1", + "typeString": "int_const 100" + }, + "value": "100" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_100_by_1", + "typeString": "int_const 100" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2291, + "name": "_lotSize", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2243, + "src": "29797:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2288, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "hexValue": "3130", + "id": 2284, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "29769:2:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_10_by_1", + "typeString": "int_const 10" + }, + "value": "10" + }, + "nodeType": "BinaryOperation", + "operator": "**", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2286, + "name": "_decimals", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2245, + "src": "29781:9:4", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + ], + "id": 2285, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "29773:7:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": "uint256" + }, + "id": 2287, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "29773:18:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "29769:22:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 2282, + "name": "_payout", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2248, + "src": "29757:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2283, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "mul", + "nodeType": "MemberAccess", + "referencedDeclaration": 152, + "src": "29757:11:4", + "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": 2289, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "29757:35:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2290, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "mul", + "nodeType": "MemberAccess", + "referencedDeclaration": 152, + "src": "29757:39:4", + "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": 2292, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "29757:49:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2293, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "div", + "nodeType": "MemberAccess", + "referencedDeclaration": 176, + "src": "29757:53:4", + "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": 2295, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "29757:58:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "29747:68:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2297, + "nodeType": "ExpressionStatement", + "src": "29747:68:4" + }, + { + "expression": { + "argumentTypes": null, + "id": 2298, + "name": "_payout", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2248, + "src": "29828:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 2249, + "id": 2299, + "nodeType": "Return", + "src": "29821:14:4" + } + ] + }, + "documentation": null, + "id": 2301, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_calculateLongPayout", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2246, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2237, + "name": "_isPut", + "nodeType": "VariableDeclaration", + "scope": 2301, + "src": "29355:11:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 2236, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "29355:4:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2239, + "name": "_exercisePrice", + "nodeType": "VariableDeclaration", + "scope": 2301, + "src": "29372:22:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2238, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "29372:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2241, + "name": "_strikePrice", + "nodeType": "VariableDeclaration", + "scope": 2301, + "src": "29400:20:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2240, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "29400:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2243, + "name": "_lotSize", + "nodeType": "VariableDeclaration", + "scope": 2301, + "src": "29426:16:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2242, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "29426:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2245, + "name": "_decimals", + "nodeType": "VariableDeclaration", + "scope": 2301, + "src": "29448:15:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 2244, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "29448:5:4", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "29349:118:4" + }, + "returnParameters": { + "id": 2249, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2248, + "name": "_payout", + "nodeType": "VariableDeclaration", + "scope": 2301, + "src": "29503:15:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2247, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "29503:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "29502:17:4" + }, + "scope": 2805, + "src": "29320:520:4", + "stateMutability": "pure", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 2483, + "nodeType": "Block", + "src": "30424:1562:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + "id": 2314, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 2309, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2820, + "src": "30439:3:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 2310, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "30439:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 2312, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "30461: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": 2311, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "30453:7:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 2313, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "30453:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "30439:24:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "6d73672e73656e6465722063616e6e6f74206265207a65726f", + "id": 2315, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "30465:27:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_aeea01aec3d95cf400af77b2a4e70b183892b8ffc254fd451f8406644a4f5d73", + "typeString": "literal_string \"msg.sender cannot be zero\"" + }, + "value": "msg.sender cannot be zero" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_aeea01aec3d95cf400af77b2a4e70b183892b8ffc254fd451f8406644a4f5d73", + "typeString": "literal_string \"msg.sender cannot be zero\"" + } + ], + "id": 2308, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2823, + 2824 + ], + "referencedDeclaration": 2824, + "src": "30431:7:4", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 2316, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "30431:62:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2317, + "nodeType": "ExpressionStatement", + "src": "30431:62:4" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2321, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2319, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2303, + "src": "30508:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 2320, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "30520:1:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "30508:13:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "746f6b656e49642063616e6e6f74206265207a65726f", + "id": 2322, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "30523:24:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_a89f543142a9de2b46f7eadcab6442212c082feaf16ab44efe1b01aae149b6cd", + "typeString": "literal_string \"tokenId cannot be zero\"" + }, + "value": "tokenId cannot be zero" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_a89f543142a9de2b46f7eadcab6442212c082feaf16ab44efe1b01aae149b6cd", + "typeString": "literal_string \"tokenId cannot be zero\"" + } + ], + "id": 2318, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2823, + 2824 + ], + "referencedDeclaration": 2824, + "src": "30500:7:4", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 2323, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "30500:48:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2324, + "nodeType": "ExpressionStatement", + "src": "30500:48:4" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2326, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "30563:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 2328, + "indexExpression": { + "argumentTypes": null, + "id": 2327, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2303, + "src": "30571:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "30563:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 2329, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "flags", + "nodeType": "MemberAccess", + "referencedDeclaration": 345, + "src": "30563:23:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BoolFlags_$322_storage", + "typeString": "struct SmartPiggies.BoolFlags storage ref" + } + }, + "id": 2330, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "hasBeenCleared", + "nodeType": "MemberAccess", + "referencedDeclaration": 321, + "src": "30563:38:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "706967677920686173206e6f7420726563656976656420616e206f7261636c65207072696365", + "id": 2331, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "30603:40:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_77f757b31a7d00a4ce5c81894c0f959249e455b423814404b4cbee93af3b92f8", + "typeString": "literal_string \"piggy has not received an oracle price\"" + }, + "value": "piggy has not received an oracle price" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_77f757b31a7d00a4ce5c81894c0f959249e455b423814404b4cbee93af3b92f8", + "typeString": "literal_string \"piggy has not received an oracle price\"" + } + ], + "id": 2325, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2823, + 2824 + ], + "referencedDeclaration": 2824, + "src": "30555:7:4", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 2332, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "30555:89:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2333, + "nodeType": "ExpressionStatement", + "src": "30555:89:4" + }, + { + "assignments": [ + 2335 + ], + "declarations": [ + { + "constant": false, + "id": 2335, + "name": "payout", + "nodeType": "VariableDeclaration", + "scope": 2483, + "src": "30652:14:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2334, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "30652:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 2336, + "initialValue": null, + "nodeType": "VariableDeclarationStatement", + "src": "30652:14:4" + }, + { + "condition": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2337, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "30677:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 2339, + "indexExpression": { + "argumentTypes": null, + "id": 2338, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2303, + "src": "30685:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "30677:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 2340, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "flags", + "nodeType": "MemberAccess", + "referencedDeclaration": 345, + "src": "30677:23:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BoolFlags_$322_storage", + "typeString": "struct SmartPiggies.BoolFlags storage ref" + } + }, + "id": 2341, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "isEuro", + "nodeType": "MemberAccess", + "referencedDeclaration": 317, + "src": "30677:30:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 2355, + "nodeType": "IfStatement", + "src": "30674:152:4", + "trueBody": { + "id": 2354, + "nodeType": "Block", + "src": "30709:117:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2350, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2343, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "30726:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 2345, + "indexExpression": { + "argumentTypes": null, + "id": 2344, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2303, + "src": "30734:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "30726:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 2346, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "uintDetails", + "nodeType": "MemberAccess", + "referencedDeclaration": 343, + "src": "30726:29:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailUints_$313_storage", + "typeString": "struct SmartPiggies.DetailUints storage ref" + } + }, + "id": 2347, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "expiry", + "nodeType": "MemberAccess", + "referencedDeclaration": 306, + "src": "30726:36:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<=", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 2348, + "name": "block", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2810, + "src": "30766:5:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_block", + "typeString": "block" + } + }, + "id": 2349, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "number", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "30766:12:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "30726:52:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "4575726f7065616e206f7074696f6e206e6565647320746f2062652065787069726564", + "id": 2351, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "30780:37:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_f22195ac208b1677643fe01bd7203cde67ce97a0dc3e538e1b1786a2cd90c614", + "typeString": "literal_string \"European option needs to be expired\"" + }, + "value": "European option needs to be expired" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_f22195ac208b1677643fe01bd7203cde67ce97a0dc3e538e1b1786a2cd90c614", + "typeString": "literal_string \"European option needs to be expired\"" + } + ], + "id": 2342, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2823, + 2824 + ], + "referencedDeclaration": 2824, + "src": "30718:7:4", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 2352, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "30718:100:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2353, + "nodeType": "ExpressionStatement", + "src": "30718:100:4" + } + ] + } + }, + { + "expression": { + "argumentTypes": null, + "id": 2384, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 2356, + "name": "payout", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2335, + "src": "30832:6:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2358, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "30872:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 2360, + "indexExpression": { + "argumentTypes": null, + "id": 2359, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2303, + "src": "30880:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "30872:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 2361, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "flags", + "nodeType": "MemberAccess", + "referencedDeclaration": 345, + "src": "30872:23:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BoolFlags_$322_storage", + "typeString": "struct SmartPiggies.BoolFlags storage ref" + } + }, + "id": 2362, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "isPut", + "nodeType": "MemberAccess", + "referencedDeclaration": 319, + "src": "30872:29:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2363, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "30912:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 2365, + "indexExpression": { + "argumentTypes": null, + "id": 2364, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2303, + "src": "30920:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "30912:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 2366, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "uintDetails", + "nodeType": "MemberAccess", + "referencedDeclaration": 343, + "src": "30912:29:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailUints_$313_storage", + "typeString": "struct SmartPiggies.DetailUints storage ref" + } + }, + "id": 2367, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "settlementPrice", + "nodeType": "MemberAccess", + "referencedDeclaration": 308, + "src": "30912:45:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2368, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "30968:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 2370, + "indexExpression": { + "argumentTypes": null, + "id": 2369, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2303, + "src": "30976:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "30968:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 2371, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "uintDetails", + "nodeType": "MemberAccess", + "referencedDeclaration": 343, + "src": "30968:29:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailUints_$313_storage", + "typeString": "struct SmartPiggies.DetailUints storage ref" + } + }, + "id": 2372, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "strikePrice", + "nodeType": "MemberAccess", + "referencedDeclaration": 304, + "src": "30968:41:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2373, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "31020:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 2375, + "indexExpression": { + "argumentTypes": null, + "id": 2374, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2303, + "src": "31028:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "31020:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 2376, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "uintDetails", + "nodeType": "MemberAccess", + "referencedDeclaration": 343, + "src": "31020:29:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailUints_$313_storage", + "typeString": "struct SmartPiggies.DetailUints storage ref" + } + }, + "id": 2377, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "lotSize", + "nodeType": "MemberAccess", + "referencedDeclaration": 302, + "src": "31020:37:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2378, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "31068:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 2380, + "indexExpression": { + "argumentTypes": null, + "id": 2379, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2303, + "src": "31076:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "31068:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 2381, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "uintDetails", + "nodeType": "MemberAccess", + "referencedDeclaration": 343, + "src": "31068:29:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailUints_$313_storage", + "typeString": "struct SmartPiggies.DetailUints storage ref" + } + }, + "id": 2382, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "collateralDecimals", + "nodeType": "MemberAccess", + "referencedDeclaration": 312, + "src": "31068:48:4", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + ], + "id": 2357, + "name": "_calculateLongPayout", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2301, + "src": "30841:20:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bool_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint8_$returns$_t_uint256_$", + "typeString": "function (bool,uint256,uint256,uint256,uint8) pure returns (uint256)" + } + }, + "id": 2383, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "30841:282:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "30832:291:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2385, + "nodeType": "ExpressionStatement", + "src": "30832:291:4" + }, + { + "assignments": [ + 2387 + ], + "declarations": [ + { + "constant": false, + "id": 2387, + "name": "_writer", + "nodeType": "VariableDeclaration", + "scope": 2483, + "src": "31202:15:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2386, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "31202:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 2393, + "initialValue": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2388, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "31220:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 2390, + "indexExpression": { + "argumentTypes": null, + "id": 2389, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2303, + "src": "31228:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "31220:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 2391, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "addresses", + "nodeType": "MemberAccess", + "referencedDeclaration": 341, + "src": "31220:27:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAddresses_$298_storage", + "typeString": "struct SmartPiggies.DetailAddresses storage ref" + } + }, + "id": 2392, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "writer", + "nodeType": "MemberAccess", + "referencedDeclaration": 287, + "src": "31220:34:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "31202:52:4" + }, + { + "assignments": [ + 2395 + ], + "declarations": [ + { + "constant": false, + "id": 2395, + "name": "_holder", + "nodeType": "VariableDeclaration", + "scope": 2483, + "src": "31261:15:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2394, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "31261:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 2401, + "initialValue": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2396, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "31279:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 2398, + "indexExpression": { + "argumentTypes": null, + "id": 2397, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2303, + "src": "31287:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "31279:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 2399, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "addresses", + "nodeType": "MemberAccess", + "referencedDeclaration": 341, + "src": "31279:27:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAddresses_$298_storage", + "typeString": "struct SmartPiggies.DetailAddresses storage ref" + } + }, + "id": 2400, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "holder", + "nodeType": "MemberAccess", + "referencedDeclaration": 289, + "src": "31279:34:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "31261:52:4" + }, + { + "assignments": [ + 2403 + ], + "declarations": [ + { + "constant": false, + "id": 2403, + "name": "_collateralERC", + "nodeType": "VariableDeclaration", + "scope": 2483, + "src": "31320:22:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2402, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "31320:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 2409, + "initialValue": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2404, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "31345:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 2406, + "indexExpression": { + "argumentTypes": null, + "id": 2405, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2303, + "src": "31353:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "31345:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 2407, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "addresses", + "nodeType": "MemberAccess", + "referencedDeclaration": 341, + "src": "31345:27:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAddresses_$298_storage", + "typeString": "struct SmartPiggies.DetailAddresses storage ref" + } + }, + "id": 2408, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "collateralERC", + "nodeType": "MemberAccess", + "referencedDeclaration": 291, + "src": "31345:41:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "31320:66:4" + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2416, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2410, + "name": "payout", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2335, + "src": "31398:6:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2411, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "31407:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 2413, + "indexExpression": { + "argumentTypes": null, + "id": 2412, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2303, + "src": "31415:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "31407:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 2414, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "uintDetails", + "nodeType": "MemberAccess", + "referencedDeclaration": 343, + "src": "31407:29:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailUints_$313_storage", + "typeString": "struct SmartPiggies.DetailUints storage ref" + } + }, + "id": 2415, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "collateral", + "nodeType": "MemberAccess", + "referencedDeclaration": 300, + "src": "31407:40:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "31398:49:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 2426, + "nodeType": "IfStatement", + "src": "31394:121:4", + "trueBody": { + "id": 2425, + "nodeType": "Block", + "src": "31449:66:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 2423, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 2417, + "name": "payout", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2335, + "src": "31458:6:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2418, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "31467:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 2420, + "indexExpression": { + "argumentTypes": null, + "id": 2419, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2303, + "src": "31475:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "31467:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 2421, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "uintDetails", + "nodeType": "MemberAccess", + "referencedDeclaration": 343, + "src": "31467:29:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailUints_$313_storage", + "typeString": "struct SmartPiggies.DetailUints storage ref" + } + }, + "id": 2422, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "collateral", + "nodeType": "MemberAccess", + "referencedDeclaration": 300, + "src": "31467:40:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "31458:49:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2424, + "nodeType": "ExpressionStatement", + "src": "31458:49:4" + } + ] + } + }, + { + "expression": { + "argumentTypes": null, + "id": 2440, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2427, + "name": "ERC20balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 352, + "src": "31521:13:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + } + }, + "id": 2430, + "indexExpression": { + "argumentTypes": null, + "id": 2428, + "name": "_holder", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2395, + "src": "31535:7:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "31521:22:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 2431, + "indexExpression": { + "argumentTypes": null, + "id": 2429, + "name": "_collateralERC", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2403, + "src": "31544:14:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "31521:38:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2438, + "name": "payout", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2335, + "src": "31605:6:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2432, + "name": "ERC20balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 352, + "src": "31562:13:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + } + }, + "id": 2434, + "indexExpression": { + "argumentTypes": null, + "id": 2433, + "name": "_holder", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2395, + "src": "31576:7:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "31562:22:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 2436, + "indexExpression": { + "argumentTypes": null, + "id": 2435, + "name": "_collateralERC", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2403, + "src": "31585:14:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "31562:38:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2437, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 224, + "src": "31562:42:4", + "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": 2439, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "31562:50:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "31521:91:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2441, + "nodeType": "ExpressionStatement", + "src": "31521:91:4" + }, + { + "expression": { + "argumentTypes": null, + "id": 2455, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2442, + "name": "ERC20balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 352, + "src": "31619:13:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + } + }, + "id": 2445, + "indexExpression": { + "argumentTypes": null, + "id": 2443, + "name": "_writer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2387, + "src": "31633:7:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "31619:22:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 2446, + "indexExpression": { + "argumentTypes": null, + "id": 2444, + "name": "_collateralERC", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2403, + "src": "31642:14:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "31619:38:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2453, + "name": "payout", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2335, + "src": "31705:6:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2447, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "31660:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 2449, + "indexExpression": { + "argumentTypes": null, + "id": 2448, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2303, + "src": "31668:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "31660:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 2450, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "uintDetails", + "nodeType": "MemberAccess", + "referencedDeclaration": 343, + "src": "31660:29:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailUints_$313_storage", + "typeString": "struct SmartPiggies.DetailUints storage ref" + } + }, + "id": 2451, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "collateral", + "nodeType": "MemberAccess", + "referencedDeclaration": 300, + "src": "31660:40:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2452, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sub", + "nodeType": "MemberAccess", + "referencedDeclaration": 200, + "src": "31660:44:4", + "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": 2454, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "31660:52:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "31619:93:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2456, + "nodeType": "ExpressionStatement", + "src": "31619:93:4" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 2458, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2820, + "src": "31745:3:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 2459, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "31745:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 2460, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2303, + "src": "31764:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 2461, + "name": "payout", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2335, + "src": "31781:6:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2468, + "name": "payout", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2335, + "src": "31841:6:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2462, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "31796:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 2464, + "indexExpression": { + "argumentTypes": null, + "id": 2463, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2303, + "src": "31804:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "31796:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 2465, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "uintDetails", + "nodeType": "MemberAccess", + "referencedDeclaration": 343, + "src": "31796:29:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailUints_$313_storage", + "typeString": "struct SmartPiggies.DetailUints storage ref" + } + }, + "id": 2466, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "collateral", + "nodeType": "MemberAccess", + "referencedDeclaration": 300, + "src": "31796:40:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2467, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sub", + "nodeType": "MemberAccess", + "referencedDeclaration": 200, + "src": "31796:44:4", + "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": 2469, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "31796:52:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 2457, + "name": "SettlePiggy", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 487, + "src": "31725:11:4", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256,uint256,uint256)" + } + }, + "id": 2470, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "31725:130:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2471, + "nodeType": "EmitStatement", + "src": "31720:135:4" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2473, + "name": "_holder", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2395, + "src": "31892:7:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 2474, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2303, + "src": "31901:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 2472, + "name": "_removeTokenFromOwnedPiggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2635, + "src": "31863:28:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 2475, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "31863:47:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2476, + "nodeType": "ExpressionStatement", + "src": "31863:47:4" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2478, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2303, + "src": "31953:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 2477, + "name": "_resetPiggy", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2789, + "src": "31941:11:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$__$", + "typeString": "function (uint256)" + } + }, + "id": 2479, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "31941:21:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2480, + "nodeType": "ExpressionStatement", + "src": "31941:21:4" + }, + { + "expression": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 2481, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "31976:4:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 2307, + "id": 2482, + "nodeType": "Return", + "src": "31969:11:4" + } + ] + }, + "documentation": "@notice Calculate the settlement of ownership of option collateral\n@dev Throws if `_tokenId` is not a valid ERC-59 token.\nThrows if msg.sender is not one of: seller, owner of `_tokenId`.\nThrows if `hasSettlementPrice(_tokenId)` is false.\n[Option settlement math goes here for call / put situations]", + "id": 2484, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "settlePiggy", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2304, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2303, + "name": "_tokenId", + "nodeType": "VariableDeclaration", + "scope": 2484, + "src": "30371:16:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2302, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "30371:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "30370:18:4" + }, + "returnParameters": { + "id": 2307, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2306, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 2484, + "src": "30415:4:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 2305, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "30415:4:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "30414:6:4" + }, + "scope": 2805, + "src": "30350:1636:4", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 2553, + "nodeType": "Block", + "src": "32218:662:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2501, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2494, + "name": "_amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2488, + "src": "32232:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<=", + "rightExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2495, + "name": "ERC20balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 352, + "src": "32243:13:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + } + }, + "id": 2498, + "indexExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 2496, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2820, + "src": "32257:3:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 2497, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "32257:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "32243:25:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 2500, + "indexExpression": { + "argumentTypes": null, + "id": 2499, + "name": "_paymentToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2486, + "src": "32269:13:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "32243:40:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "32232:51:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "45524332302062616c616e6365206973206c657373207468616e2072657175657374656420616d6f756e74", + "id": 2502, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "32285:45:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_51156ee7569ad1608b3d15e92f97c8d5b717540394961195b6b25a691c5fccef", + "typeString": "literal_string \"ERC20 balance is less than requested amount\"" + }, + "value": "ERC20 balance is less than requested amount" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_51156ee7569ad1608b3d15e92f97c8d5b717540394961195b6b25a691c5fccef", + "typeString": "literal_string \"ERC20 balance is less than requested amount\"" + } + ], + "id": 2493, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2823, + 2824 + ], + "referencedDeclaration": 2824, + "src": "32224:7:4", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 2503, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "32224:107:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2504, + "nodeType": "ExpressionStatement", + "src": "32224:107:4" + }, + { + "expression": { + "argumentTypes": null, + "id": 2520, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2505, + "name": "ERC20balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 352, + "src": "32337:13:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + } + }, + "id": 2509, + "indexExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 2506, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2820, + "src": "32351:3:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 2507, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "32351:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "32337:25:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 2510, + "indexExpression": { + "argumentTypes": null, + "id": 2508, + "name": "_paymentToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2486, + "src": "32363:13:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "32337:40:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2518, + "name": "_amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2488, + "src": "32425:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2511, + "name": "ERC20balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 352, + "src": "32380:13:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + } + }, + "id": 2514, + "indexExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 2512, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2820, + "src": "32394:3:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 2513, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "32394:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "32380:25:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 2516, + "indexExpression": { + "argumentTypes": null, + "id": 2515, + "name": "_paymentToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2486, + "src": "32406:13:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "32380:40:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2517, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sub", + "nodeType": "MemberAccess", + "referencedDeclaration": 200, + "src": "32380:44:4", + "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": 2519, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "32380:53:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "32337:96:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2521, + "nodeType": "ExpressionStatement", + "src": "32337:96:4" + }, + { + "assignments": [ + 2523, + null + ], + "declarations": [ + { + "constant": false, + "id": 2523, + "name": "success", + "nodeType": "VariableDeclaration", + "scope": 2553, + "src": "32543:12:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 2522, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "32543:4:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + }, + null + ], + "id": 2538, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "7472616e7366657228616464726573732c75696e7432353629", + "id": 2532, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "32643:27:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_a9059cbb2ab09eb219583f4a59a5d0623ade346d962bcd4e46b11da047c9049b", + "typeString": "literal_string \"transfer(address,uint256)\"" + }, + "value": "transfer(address,uint256)" + }, + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 2533, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2820, + "src": "32680:3:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 2534, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "32680:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 2535, + "name": "_amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2488, + "src": "32700:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_a9059cbb2ab09eb219583f4a59a5d0623ade346d962bcd4e46b11da047c9049b", + "typeString": "literal_string \"transfer(address,uint256)\"" + }, + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 2530, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2807, + "src": "32610:3:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 2531, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "encodeWithSignature", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "32610:23:4", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$", + "typeString": "function (string memory) pure returns (bytes memory)" + } + }, + "id": 2536, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "32610:105:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2526, + "name": "_paymentToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2486, + "src": "32582:13:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 2525, + "name": "PaymentToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 274, + "src": "32569:12:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_PaymentToken_$274_$", + "typeString": "type(contract PaymentToken)" + } + }, + "id": 2527, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "32569:27:4", + "typeDescriptions": { + "typeIdentifier": "t_contract$_PaymentToken_$274", + "typeString": "contract PaymentToken" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_PaymentToken_$274", + "typeString": "contract PaymentToken" + } + ], + "id": 2524, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "32561:7:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 2528, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "32561:36:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 2529, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "call", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "32561:41:4", + "typeDescriptions": { + "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$", + "typeString": "function (bytes memory) payable returns (bool,bytes memory)" + } + }, + "id": 2537, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "32561:160:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$", + "typeString": "tuple(bool,bytes memory)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "32542:179:4" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2540, + "name": "success", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2523, + "src": "32735:7:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "455243323020746f6b656e207472616e73666572206661696c6564", + "id": 2541, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "32744:29:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_09d7cbc760a5fb9ceb7ce3a996d579f34d61d7bf70c73104e2b38c60f3738442", + "typeString": "literal_string \"ERC20 token transfer failed\"" + }, + "value": "ERC20 token transfer failed" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_09d7cbc760a5fb9ceb7ce3a996d579f34d61d7bf70c73104e2b38c60f3738442", + "typeString": "literal_string \"ERC20 token transfer failed\"" + } + ], + "id": 2539, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2823, + 2824 + ], + "referencedDeclaration": 2824, + "src": "32727:7:4", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 2542, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "32727:47:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2543, + "nodeType": "ExpressionStatement", + "src": "32727:47:4" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 2545, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2820, + "src": "32805:3:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 2546, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "32805:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 2547, + "name": "_amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2488, + "src": "32823:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 2548, + "name": "_paymentToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2486, + "src": "32838:13:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 2544, + "name": "ClaimPayout", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 495, + "src": "32786:11:4", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_address_$returns$__$", + "typeString": "function (address,uint256,address)" + } + }, + "id": 2549, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "32786:71:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2550, + "nodeType": "EmitStatement", + "src": "32781:76:4" + }, + { + "expression": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 2551, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "32871:4:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 2492, + "id": 2552, + "nodeType": "Return", + "src": "32864:11:4" + } + ] + }, + "documentation": null, + "id": 2554, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "claimPayout", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2489, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2486, + "name": "_paymentToken", + "nodeType": "VariableDeclaration", + "scope": 2554, + "src": "32146:21:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2485, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "32146:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2488, + "name": "_amount", + "nodeType": "VariableDeclaration", + "scope": 2554, + "src": "32169:15:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2487, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "32169:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "32145:40:4" + }, + "returnParameters": { + "id": 2492, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2491, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 2554, + "src": "32210:4:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 2490, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "32210:4:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "32209:6:4" + }, + "scope": 2805, + "src": "32125:755:4", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 2577, + "nodeType": "Block", + "src": "32962:103:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 2568, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2561, + "name": "ownedPiggiesIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 361, + "src": "32968:17:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$", + "typeString": "mapping(uint256 => uint256)" + } + }, + "id": 2563, + "indexExpression": { + "argumentTypes": null, + "id": 2562, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2558, + "src": "32986:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "32968:27:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2564, + "name": "ownedPiggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 357, + "src": "32998:12:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_uint256_$dyn_storage_$", + "typeString": "mapping(address => uint256[] storage ref)" + } + }, + "id": 2566, + "indexExpression": { + "argumentTypes": null, + "id": 2565, + "name": "_to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2556, + "src": "33011:3:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "32998:17:4", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage", + "typeString": "uint256[] storage ref" + } + }, + "id": 2567, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "32998:24:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "32968:54:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2569, + "nodeType": "ExpressionStatement", + "src": "32968:54:4" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2574, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2558, + "src": "33051:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2570, + "name": "ownedPiggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 357, + "src": "33028:12:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_uint256_$dyn_storage_$", + "typeString": "mapping(address => uint256[] storage ref)" + } + }, + "id": 2572, + "indexExpression": { + "argumentTypes": null, + "id": 2571, + "name": "_to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2556, + "src": "33041:3:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "33028:17:4", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage", + "typeString": "uint256[] storage ref" + } + }, + "id": 2573, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "push", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "33028:22:4", + "typeDescriptions": { + "typeIdentifier": "t_function_arraypush_nonpayable$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256) returns (uint256)" + } + }, + "id": 2575, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "33028:32:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2576, + "nodeType": "ExpressionStatement", + "src": "33028:32:4" + } + ] + }, + "documentation": null, + "id": 2578, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_addTokenToOwnedPiggies", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2559, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2556, + "name": "_to", + "nodeType": "VariableDeclaration", + "scope": 2578, + "src": "32917:11:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2555, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "32917:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2558, + "name": "_tokenId", + "nodeType": "VariableDeclaration", + "scope": 2578, + "src": "32930:16:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2557, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "32930:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "32916:31:4" + }, + "returnParameters": { + "id": 2560, + "nodeType": "ParameterList", + "parameters": [], + "src": "32962:0:4" + }, + "scope": 2805, + "src": "32884:181:4", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "private" + }, + { + "body": { + "id": 2634, + "nodeType": "Block", + "src": "33154:373:4", + "statements": [ + { + "assignments": [ + 2586 + ], + "declarations": [ + { + "constant": false, + "id": 2586, + "name": "lastTokenIndex", + "nodeType": "VariableDeclaration", + "scope": 2634, + "src": "33160:22:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2585, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "33160:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 2594, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "31", + "id": 2592, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "33216:1:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + } + ], + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2587, + "name": "ownedPiggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 357, + "src": "33185:12:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_uint256_$dyn_storage_$", + "typeString": "mapping(address => uint256[] storage ref)" + } + }, + "id": 2589, + "indexExpression": { + "argumentTypes": null, + "id": 2588, + "name": "_from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2580, + "src": "33198:5:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "33185:19:4", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage", + "typeString": "uint256[] storage ref" + } + }, + "id": 2590, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "33185:26:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2591, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sub", + "nodeType": "MemberAccess", + "referencedDeclaration": 200, + "src": "33185:30:4", + "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": 2593, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "33185:33:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "33160:58:4" + }, + { + "assignments": [ + 2596 + ], + "declarations": [ + { + "constant": false, + "id": 2596, + "name": "tokenIndex", + "nodeType": "VariableDeclaration", + "scope": 2634, + "src": "33224:18:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2595, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "33224:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 2600, + "initialValue": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2597, + "name": "ownedPiggiesIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 361, + "src": "33245:17:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$", + "typeString": "mapping(uint256 => uint256)" + } + }, + "id": 2599, + "indexExpression": { + "argumentTypes": null, + "id": 2598, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2582, + "src": "33263:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "33245:27:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "33224:48:4" + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2603, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2601, + "name": "tokenIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2596, + "src": "33283:10:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "id": 2602, + "name": "lastTokenIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2586, + "src": "33297:14:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "33283:28:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 2627, + "nodeType": "IfStatement", + "src": "33279:210:4", + "trueBody": { + "id": 2626, + "nodeType": "Block", + "src": "33313:176:4", + "statements": [ + { + "assignments": [ + 2605 + ], + "declarations": [ + { + "constant": false, + "id": 2605, + "name": "lastTokenId", + "nodeType": "VariableDeclaration", + "scope": 2626, + "src": "33321:19:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2604, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "33321:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 2611, + "initialValue": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2606, + "name": "ownedPiggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 357, + "src": "33343:12:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_uint256_$dyn_storage_$", + "typeString": "mapping(address => uint256[] storage ref)" + } + }, + "id": 2608, + "indexExpression": { + "argumentTypes": null, + "id": 2607, + "name": "_from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2580, + "src": "33356:5:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "33343:19:4", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage", + "typeString": "uint256[] storage ref" + } + }, + "id": 2610, + "indexExpression": { + "argumentTypes": null, + "id": 2609, + "name": "lastTokenIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2586, + "src": "33363:14:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "33343:35:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "33321:57:4" + }, + { + "expression": { + "argumentTypes": null, + "id": 2618, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2612, + "name": "ownedPiggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 357, + "src": "33386:12:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_uint256_$dyn_storage_$", + "typeString": "mapping(address => uint256[] storage ref)" + } + }, + "id": 2615, + "indexExpression": { + "argumentTypes": null, + "id": 2613, + "name": "_from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2580, + "src": "33399:5:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "33386:19:4", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage", + "typeString": "uint256[] storage ref" + } + }, + "id": 2616, + "indexExpression": { + "argumentTypes": null, + "id": 2614, + "name": "tokenIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2596, + "src": "33406:10:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "33386:31:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 2617, + "name": "lastTokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2605, + "src": "33420:11:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "33386:45:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2619, + "nodeType": "ExpressionStatement", + "src": "33386:45:4" + }, + { + "expression": { + "argumentTypes": null, + "id": 2624, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2620, + "name": "ownedPiggiesIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 361, + "src": "33439:17:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$", + "typeString": "mapping(uint256 => uint256)" + } + }, + "id": 2622, + "indexExpression": { + "argumentTypes": null, + "id": 2621, + "name": "lastTokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2605, + "src": "33457:11:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "33439:30:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 2623, + "name": "tokenIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2596, + "src": "33472:10:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "33439:43:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2625, + "nodeType": "ExpressionStatement", + "src": "33439:43:4" + } + ] + } + }, + { + "expression": { + "argumentTypes": null, + "id": 2632, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "--", + "prefix": false, + "src": "33494:28:4", + "subExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2628, + "name": "ownedPiggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 357, + "src": "33494:12:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_uint256_$dyn_storage_$", + "typeString": "mapping(address => uint256[] storage ref)" + } + }, + "id": 2630, + "indexExpression": { + "argumentTypes": null, + "id": 2629, + "name": "_from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2580, + "src": "33507:5:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "33494:19:4", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage", + "typeString": "uint256[] storage ref" + } + }, + "id": 2631, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "33494:26:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2633, + "nodeType": "ExpressionStatement", + "src": "33494:28:4" + } + ] + }, + "documentation": null, + "id": 2635, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_removeTokenFromOwnedPiggies", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2583, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2580, + "name": "_from", + "nodeType": "VariableDeclaration", + "scope": 2635, + "src": "33107:13:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2579, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "33107:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2582, + "name": "_tokenId", + "nodeType": "VariableDeclaration", + "scope": 2635, + "src": "33122:16:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2581, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "33122:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "33106:33:4" + }, + "returnParameters": { + "id": 2584, + "nodeType": "ParameterList", + "parameters": [], + "src": "33154:0:4" + }, + "scope": 2805, + "src": "33069:458:4", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "private" + }, + { + "body": { + "id": 2788, + "nodeType": "Block", + "src": "33584:903:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 2648, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2640, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "33590:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 2642, + "indexExpression": { + "argumentTypes": null, + "id": 2641, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2637, + "src": "33598:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "33590:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 2643, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "addresses", + "nodeType": "MemberAccess", + "referencedDeclaration": 341, + "src": "33590:27:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAddresses_$298_storage", + "typeString": "struct SmartPiggies.DetailAddresses storage ref" + } + }, + "id": 2644, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "writer", + "nodeType": "MemberAccess", + "referencedDeclaration": 287, + "src": "33590:34:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 2646, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "33635: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": 2645, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "33627:7:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 2647, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "33627:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "33590:47:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 2649, + "nodeType": "ExpressionStatement", + "src": "33590:47:4" + }, + { + "expression": { + "argumentTypes": null, + "id": 2658, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2650, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "33643:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 2652, + "indexExpression": { + "argumentTypes": null, + "id": 2651, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2637, + "src": "33651:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "33643:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 2653, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "addresses", + "nodeType": "MemberAccess", + "referencedDeclaration": 341, + "src": "33643:27:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAddresses_$298_storage", + "typeString": "struct SmartPiggies.DetailAddresses storage ref" + } + }, + "id": 2654, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "holder", + "nodeType": "MemberAccess", + "referencedDeclaration": 289, + "src": "33643:34:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 2656, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "33688: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": 2655, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "33680:7:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 2657, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "33680:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "33643:47:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 2659, + "nodeType": "ExpressionStatement", + "src": "33643:47:4" + }, + { + "expression": { + "argumentTypes": null, + "id": 2668, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2660, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "33696:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 2662, + "indexExpression": { + "argumentTypes": null, + "id": 2661, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2637, + "src": "33704:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "33696:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 2663, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "addresses", + "nodeType": "MemberAccess", + "referencedDeclaration": 341, + "src": "33696:27:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAddresses_$298_storage", + "typeString": "struct SmartPiggies.DetailAddresses storage ref" + } + }, + "id": 2664, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "collateralERC", + "nodeType": "MemberAccess", + "referencedDeclaration": 291, + "src": "33696:41:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 2666, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "33748: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": 2665, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "33740:7:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 2667, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "33740:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "33696:54:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 2669, + "nodeType": "ExpressionStatement", + "src": "33696:54:4" + }, + { + "expression": { + "argumentTypes": null, + "id": 2678, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2670, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "33756:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 2672, + "indexExpression": { + "argumentTypes": null, + "id": 2671, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2637, + "src": "33764:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "33756:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 2673, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "addresses", + "nodeType": "MemberAccess", + "referencedDeclaration": 341, + "src": "33756:27:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAddresses_$298_storage", + "typeString": "struct SmartPiggies.DetailAddresses storage ref" + } + }, + "id": 2674, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "premiumERC", + "nodeType": "MemberAccess", + "referencedDeclaration": 293, + "src": "33756:38:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 2676, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "33805: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": 2675, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "33797:7:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 2677, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "33797:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "33756:51:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 2679, + "nodeType": "ExpressionStatement", + "src": "33756:51:4" + }, + { + "expression": { + "argumentTypes": null, + "id": 2688, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2680, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "33813:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 2682, + "indexExpression": { + "argumentTypes": null, + "id": 2681, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2637, + "src": "33821:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "33813:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 2683, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "addresses", + "nodeType": "MemberAccess", + "referencedDeclaration": 341, + "src": "33813:27:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAddresses_$298_storage", + "typeString": "struct SmartPiggies.DetailAddresses storage ref" + } + }, + "id": 2684, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "dataResolverNow", + "nodeType": "MemberAccess", + "referencedDeclaration": 295, + "src": "33813:43:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 2686, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "33867: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": 2685, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "33859:7:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 2687, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "33859:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "33813:56:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 2689, + "nodeType": "ExpressionStatement", + "src": "33813:56:4" + }, + { + "expression": { + "argumentTypes": null, + "id": 2698, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2690, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "33875:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 2692, + "indexExpression": { + "argumentTypes": null, + "id": 2691, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2637, + "src": "33883:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "33875:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 2693, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "addresses", + "nodeType": "MemberAccess", + "referencedDeclaration": 341, + "src": "33875:27:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailAddresses_$298_storage", + "typeString": "struct SmartPiggies.DetailAddresses storage ref" + } + }, + "id": 2694, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "dataResolverAtExpiry", + "nodeType": "MemberAccess", + "referencedDeclaration": 297, + "src": "33875:48:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 2696, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "33934: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": 2695, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "33926:7:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 2697, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "33926:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "33875:61:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 2699, + "nodeType": "ExpressionStatement", + "src": "33875:61:4" + }, + { + "expression": { + "argumentTypes": null, + "id": 2706, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2700, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "33942:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 2702, + "indexExpression": { + "argumentTypes": null, + "id": 2701, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2637, + "src": "33950:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "33942:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 2703, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "uintDetails", + "nodeType": "MemberAccess", + "referencedDeclaration": 343, + "src": "33942:29:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailUints_$313_storage", + "typeString": "struct SmartPiggies.DetailUints storage ref" + } + }, + "id": 2704, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "collateral", + "nodeType": "MemberAccess", + "referencedDeclaration": 300, + "src": "33942:40:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "30", + "id": 2705, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "33985:1:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "33942:44:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2707, + "nodeType": "ExpressionStatement", + "src": "33942:44:4" + }, + { + "expression": { + "argumentTypes": null, + "id": 2714, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2708, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "33992:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 2710, + "indexExpression": { + "argumentTypes": null, + "id": 2709, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2637, + "src": "34000:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "33992:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 2711, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "uintDetails", + "nodeType": "MemberAccess", + "referencedDeclaration": 343, + "src": "33992:29:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailUints_$313_storage", + "typeString": "struct SmartPiggies.DetailUints storage ref" + } + }, + "id": 2712, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "lotSize", + "nodeType": "MemberAccess", + "referencedDeclaration": 302, + "src": "33992:37:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "30", + "id": 2713, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "34032:1:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "33992:41:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2715, + "nodeType": "ExpressionStatement", + "src": "33992:41:4" + }, + { + "expression": { + "argumentTypes": null, + "id": 2722, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2716, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "34039:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 2718, + "indexExpression": { + "argumentTypes": null, + "id": 2717, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2637, + "src": "34047:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "34039:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 2719, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "uintDetails", + "nodeType": "MemberAccess", + "referencedDeclaration": 343, + "src": "34039:29:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailUints_$313_storage", + "typeString": "struct SmartPiggies.DetailUints storage ref" + } + }, + "id": 2720, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "strikePrice", + "nodeType": "MemberAccess", + "referencedDeclaration": 304, + "src": "34039:41:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "30", + "id": 2721, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "34083:1:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "34039:45:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2723, + "nodeType": "ExpressionStatement", + "src": "34039:45:4" + }, + { + "expression": { + "argumentTypes": null, + "id": 2730, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2724, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "34090:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 2726, + "indexExpression": { + "argumentTypes": null, + "id": 2725, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2637, + "src": "34098:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "34090:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 2727, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "uintDetails", + "nodeType": "MemberAccess", + "referencedDeclaration": 343, + "src": "34090:29:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailUints_$313_storage", + "typeString": "struct SmartPiggies.DetailUints storage ref" + } + }, + "id": 2728, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "expiry", + "nodeType": "MemberAccess", + "referencedDeclaration": 306, + "src": "34090:36:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "30", + "id": 2729, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "34129:1:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "34090:40:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2731, + "nodeType": "ExpressionStatement", + "src": "34090:40:4" + }, + { + "expression": { + "argumentTypes": null, + "id": 2738, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2732, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "34136:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 2734, + "indexExpression": { + "argumentTypes": null, + "id": 2733, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2637, + "src": "34144:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "34136:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 2735, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "uintDetails", + "nodeType": "MemberAccess", + "referencedDeclaration": 343, + "src": "34136:29:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailUints_$313_storage", + "typeString": "struct SmartPiggies.DetailUints storage ref" + } + }, + "id": 2736, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "settlementPrice", + "nodeType": "MemberAccess", + "referencedDeclaration": 308, + "src": "34136:45:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "30", + "id": 2737, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "34184:1:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "34136:49:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2739, + "nodeType": "ExpressionStatement", + "src": "34136:49:4" + }, + { + "expression": { + "argumentTypes": null, + "id": 2746, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2740, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "34191:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 2742, + "indexExpression": { + "argumentTypes": null, + "id": 2741, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2637, + "src": "34199:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "34191:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 2743, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "uintDetails", + "nodeType": "MemberAccess", + "referencedDeclaration": 343, + "src": "34191:29:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailUints_$313_storage", + "typeString": "struct SmartPiggies.DetailUints storage ref" + } + }, + "id": 2744, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "reqCollateral", + "nodeType": "MemberAccess", + "referencedDeclaration": 310, + "src": "34191:43:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "30", + "id": 2745, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "34237:1:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "34191:47:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2747, + "nodeType": "ExpressionStatement", + "src": "34191:47:4" + }, + { + "expression": { + "argumentTypes": null, + "id": 2754, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2748, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "34244:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 2750, + "indexExpression": { + "argumentTypes": null, + "id": 2749, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2637, + "src": "34252:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "34244:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 2751, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "uintDetails", + "nodeType": "MemberAccess", + "referencedDeclaration": 343, + "src": "34244:29:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DetailUints_$313_storage", + "typeString": "struct SmartPiggies.DetailUints storage ref" + } + }, + "id": 2752, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "collateralDecimals", + "nodeType": "MemberAccess", + "referencedDeclaration": 312, + "src": "34244:48:4", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "30", + "id": 2753, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "34295:1:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "34244:52:4", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "id": 2755, + "nodeType": "ExpressionStatement", + "src": "34244:52:4" + }, + { + "expression": { + "argumentTypes": null, + "id": 2762, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2756, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "34302:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 2758, + "indexExpression": { + "argumentTypes": null, + "id": 2757, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2637, + "src": "34310:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "34302:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 2759, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "flags", + "nodeType": "MemberAccess", + "referencedDeclaration": 345, + "src": "34302:23:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BoolFlags_$322_storage", + "typeString": "struct SmartPiggies.BoolFlags storage ref" + } + }, + "id": 2760, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "isRequest", + "nodeType": "MemberAccess", + "referencedDeclaration": 315, + "src": "34302:33:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "66616c7365", + "id": 2761, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "34338:5:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "src": "34302:41:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2763, + "nodeType": "ExpressionStatement", + "src": "34302:41:4" + }, + { + "expression": { + "argumentTypes": null, + "id": 2770, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2764, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "34349:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 2766, + "indexExpression": { + "argumentTypes": null, + "id": 2765, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2637, + "src": "34357:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "34349:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 2767, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "flags", + "nodeType": "MemberAccess", + "referencedDeclaration": 345, + "src": "34349:23:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BoolFlags_$322_storage", + "typeString": "struct SmartPiggies.BoolFlags storage ref" + } + }, + "id": 2768, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "isEuro", + "nodeType": "MemberAccess", + "referencedDeclaration": 317, + "src": "34349:30:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "66616c7365", + "id": 2769, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "34382:5:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "src": "34349:38:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2771, + "nodeType": "ExpressionStatement", + "src": "34349:38:4" + }, + { + "expression": { + "argumentTypes": null, + "id": 2778, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2772, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "34393:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 2774, + "indexExpression": { + "argumentTypes": null, + "id": 2773, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2637, + "src": "34401:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "34393:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 2775, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "flags", + "nodeType": "MemberAccess", + "referencedDeclaration": 345, + "src": "34393:23:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BoolFlags_$322_storage", + "typeString": "struct SmartPiggies.BoolFlags storage ref" + } + }, + "id": 2776, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "isPut", + "nodeType": "MemberAccess", + "referencedDeclaration": 319, + "src": "34393:29:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "66616c7365", + "id": 2777, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "34425:5:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "src": "34393:37:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2779, + "nodeType": "ExpressionStatement", + "src": "34393:37:4" + }, + { + "expression": { + "argumentTypes": null, + "id": 2786, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2780, + "name": "piggies", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "34436:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Piggy_$346_storage_$", + "typeString": "mapping(uint256 => struct SmartPiggies.Piggy storage ref)" + } + }, + "id": 2782, + "indexExpression": { + "argumentTypes": null, + "id": 2781, + "name": "_tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2637, + "src": "34444:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "34436:17:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Piggy_$346_storage", + "typeString": "struct SmartPiggies.Piggy storage ref" + } + }, + "id": 2783, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "flags", + "nodeType": "MemberAccess", + "referencedDeclaration": 345, + "src": "34436:23:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BoolFlags_$322_storage", + "typeString": "struct SmartPiggies.BoolFlags storage ref" + } + }, + "id": 2784, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "hasBeenCleared", + "nodeType": "MemberAccess", + "referencedDeclaration": 321, + "src": "34436:38:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "66616c7365", + "id": 2785, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "34477:5:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "src": "34436:46:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2787, + "nodeType": "ExpressionStatement", + "src": "34436:46:4" + } + ] + }, + "documentation": null, + "id": 2789, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_resetPiggy", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2638, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2637, + "name": "_tokenId", + "nodeType": "VariableDeclaration", + "scope": 2789, + "src": "33552:16:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2636, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "33552:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "33551:18:4" + }, + "returnParameters": { + "id": 2639, + "nodeType": "ParameterList", + "parameters": [], + "src": "33584:0:4" + }, + "scope": 2805, + "src": "33531:956:4", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "private" + }, + { + "body": { + "id": 2803, + "nodeType": "Block", + "src": "34520:64:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + "id": 2796, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 2793, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2820, + "src": "34534:3:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 2794, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "34534:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 2795, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 283, + "src": "34548:5:4", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "34534:19:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 2792, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2823, + 2824 + ], + "referencedDeclaration": 2823, + "src": "34526:7:4", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 2797, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "34526:28:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2798, + "nodeType": "ExpressionStatement", + "src": "34526:28:4" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2800, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 283, + "src": "34573:5:4", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "id": 2799, + "name": "selfdestruct", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2828, + "src": "34560:12:4", + "typeDescriptions": { + "typeIdentifier": "t_function_selfdestruct_nonpayable$_t_address_payable_$returns$__$", + "typeString": "function (address payable)" + } + }, + "id": 2801, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "34560:19:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2802, + "nodeType": "ExpressionStatement", + "src": "34560:19:4" + } + ] + }, + "documentation": null, + "id": 2804, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "kill", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2790, + "nodeType": "ParameterList", + "parameters": [], + "src": "34504:2:4" + }, + "returnParameters": { + "id": 2791, + "nodeType": "ParameterList", + "parameters": [], + "src": "34520:0:4" + }, + "scope": 2805, + "src": "34491:93:4", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + } + ], + "scope": 2806, + "src": "1368:33218:4" + } + ], + "src": "750:33837:4" + }, + "compiler": { + "name": "solc", + "version": "0.5.2+commit.1df8f40c.Emscripten.clang" + }, + "networks": { + "3": { + "events": {}, + "links": {}, + "address": "0x07a50a35e42166cd4fdae405386bc25312571dd4", + "transactionHash": "0x87ba4eaa74f646edc01abb1e546cf436e60ec65c94a88645ba8b783672b8caf6" + }, + "4": { + "events": {}, + "links": {}, + "address": "0x779beeffecd1d26003d1ace227e2cee6b41ec54f", + "transactionHash": "0x9a35322dc1a426cc5f2f86eb15e241cd894c424f06bacec6f1e36fedf2599e80" + }, + "5": { + "events": {}, + "links": {}, + "address": "0xd847904c84532950bdbe7ed8dd2e8c9ce0a3716d", + "transactionHash": "0xd4b094183857f26299a0f308ed274c475414fbbf82c4b87dd67a69c912ca4c58" + } + }, + "schemaVersion": "3.0.2", + "updatedAt": "2019-04-26T14:47:45.690Z", + "devdoc": { + "methods": { + "createPiggy(address,address,address,address,uint256,uint256,uint256,uint256,bool,bool,bool)": { + "details": "Throws if `_collateralERC` is not a valid Ethereum (ERC-20) address. Throws if `_premiumERC` is not a valid Ethereum (ERC-20) address (may be same as `_collateralERC`). Throws if `_oracle` is not a valid Ethereum address. Throws if `_expiry` < block.number. If `_asRequest` is true, throws if `_reqCollateral` == 0. If `_asRequest` is false, throws if msg.sender has not delegated at least `_collateral` in the ERC-20 token whose contract is `_collateralERC` to the ERC-59 contract. When a new token is created, msg.sender should be recorded as the creator and owner. If `_asRequest` is true, the zero address should be recorded as the seller. If `_asRequest` is false, msg.sender should be recorded as the seller. If `_asRequest` is false, `_reqCollateral` will be irrelevant and should be captured as 0. If `_asRequest` is false, the ERC-59 contract must take ownership of `_collateral` amount of ERC-20 tokens governed by the `_collateralERC` contract.", + "params": { + "_collateral": "The amount of collateral for the option, denominated in units of the token at the `_collateralERC` address", + "_collateralERC": "The address of the reference ERC-20 token to be used as collateral", + "_expiry": "The block height at which the option will expire param _reqCollateral The amount of collateral desired in the option, if creating with `_asRequest` == true, denominated in units of the token at the `_collateralERC` address", + "_isEuro": "If true, the option can only be settled at or after `_expiry` is reached, else it can be settled at any time", + "_isPut": "If true, the settlement claims will be calculated for a put option; else they will be calculated for a call option", + "_lotSize": "A multiplier on the settlement price used to determine settlement claims", + "_premiumERC": "The address of the reference ERC-20 token to be used to pay the premium param _oracle The address of a service contract which will return the settlement price param _asRequest If true, will create the token as an \"RFP\" / request for a particular option param _underlyingNow An identifier for the reference underlying which the contract at `_oracle` is able to parse to return the current price of the underlying param _underlyingExpiry An identifier for the reference underlying which the contract at `_oracle` is able to parse to return the price of the underlying at `_expiry`", + "_strikePrice": "The strike value of the option, in the same units as the settlement price" + } + }, + "getOwnedPiggies(address)": { + "details": "ERC-59 tokens assigned to the zero address are considered invalid, and this function throws for queries about the zero address.", + "params": { + "_owner": "An address for which to query the balance of ERC-59 tokens" + }, + "return": "The number of ERC-59 tokens owned by `_owner`, possibly zero" + }, + "requestSettlementPrice(uint256,uint256)": { + "details": "Throws if `_tokenId` is not a valid ERC-59 token. Throws if `_oracle` is not a valid contract address. Throws if `onMarket(_tokenId)` is true. If `isEuro` is true for the specified token, throws if `_expiry` > block.number. If `isEuro` is true for the specified token, throws if `_priceNow` is true. [OR specify that it flips that to false always (?)] If `priceNow` is true, throws if block.number > `_expiry` for the specified token. If `priceNow` is false, throws if block.number < `_expiry` for the specified token. If `priceNow` is true, calls the oracle to request the `_underlyingNow` value for the token. If `priceNow` is false, calls the oracle to request the `_underlyingExpiry` value for the token. Depending on the oracle service implemented, additional state will need to be referenced in order to call the oracle, e.g. an endpoint to fetch. This state handling will need to be managed on an implementation basis for specific oracle services.", + "params": { + "_tokenId": "The identifier of the specific ERC-59 token for which to fetch a settlement price _oracle The address of the oracle contract used to fetch the external settlement price _priceNow A boolean for specifying whether to fetch a \"live\" price or a fixed price at expiry of the option" + }, + "return": "The settlement price from the oracle to be used in `settleOption()`" + }, + "settlePiggy(uint256)": { + "details": "Throws if `_tokenId` is not a valid ERC-59 token. Throws if msg.sender is not one of: seller, owner of `_tokenId`. Throws if `hasSettlementPrice(_tokenId)` is false. [Option settlement math goes here for call / put situations]" + }, + "supportsInterface(bytes4)": { + "details": "implement supportsInterface(bytes4) using a lookup table" + } + }, + "title": "ERC-59 (subject to change) Smart Option Standard" + }, + "userdoc": { + "methods": { + "constructor": "constructor should throw if various things aren't properly set also should throw if the contract is not delegated an amount of collateral designated in the reference ERC-20 which is >= the collateral value of the piggy", + "createPiggy(address,address,address,address,uint256,uint256,uint256,uint256,bool,bool,bool)": { + "notice": "Create a new ERC-59 token" + }, + "getOwnedPiggies(address)": { + "notice": "Count the number of ERC-59 tokens owned by a particular address" + }, + "requestSettlementPrice(uint256,uint256)": { + "notice": "Call the oracle to fetch the settlement price" + }, + "settlePiggy(uint256)": { + "notice": "Calculate the settlement of ownership of option collateral" + } + } + } +} diff --git a/app/src/drizzleOptions.js b/app/src/drizzleOptions.js new file mode 100644 index 0000000..6af907f --- /dev/null +++ b/app/src/drizzleOptions.js @@ -0,0 +1,20 @@ +import SmartPiggies from "./contracts/SmartPiggies.json" + +const options = { + web3: { + block: false, + fallback: { + type: "ws", + url: "ws://127.0.0.1:8545", + }, + }, + contracts: [SmartPiggies], + events: { + SmartPiggies: ["SatisfyAuction", "SettlePiggy"], + }, + polls: { + accounts: 1500, + }, +}; + +export default options; diff --git a/app/src/index.css b/app/src/index.css new file mode 100644 index 0000000..cee5f34 --- /dev/null +++ b/app/src/index.css @@ -0,0 +1,14 @@ +body { + margin: 0; + padding: 0; + font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "Roboto", "Oxygen", + "Ubuntu", "Cantarell", "Fira Sans", "Droid Sans", "Helvetica Neue", + sans-serif; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +code { + font-family: source-code-pro, Menlo, Monaco, Consolas, "Courier New", + monospace; +} diff --git a/app/src/index.js b/app/src/index.js new file mode 100644 index 0000000..0c5e75d --- /dev/null +++ b/app/src/index.js @@ -0,0 +1,12 @@ +import React from 'react'; +import ReactDOM from 'react-dom'; +import './index.css'; +import App from './App'; +import * as serviceWorker from './serviceWorker'; + +ReactDOM.render(, document.getElementById('root')); + +// If you want your app to work offline and load faster, you can change +// unregister() to register() below. Note this comes with some pitfalls. +// Learn more about service workers: http://bit.ly/CRA-PWA +serviceWorker.unregister(); diff --git a/app/src/logo.png b/app/src/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..a7707ea7870a3dc75739cffdbb777269ceafceb5 GIT binary patch literal 9097 zcmXY1WmFtZ(_J7y65QQAxVzip?gUG4m*6ge1%g{}2<{r(-C?m1Tpl3k65QX(cfKDp zbIwdppYE!moqd|)r>(7*d)}j?Eh(8Qk`n0w|6v%J2xZ>RB9>64HL*JrbJEbg zv|fc{evEkjCbs5tr$OJeV*`|m`4jXB_kCq_=!dNr*Q1ou=@q{`t#kMpYgXOKf}@3kBcq3WurNAn$`{mwwtYX+2k{pd z*shep(pmE$hlh>00)qGnl3V`yrJ zIM_B(=stq`z-9Z&AX~&k=81V@g;!w*(?Uh5hA=dncCI_KlJR`e} zhn3EV%{->3oYKX(ZfiC(hhAxaC#hVxhaJ?z{qG6-*>E{4xUl0}!)k#mTN+hzG5FH; zf-Bq3TD>8*om>JhOWPIcE$Zv{pi8)|Z;refMm#g;u0Ox95(@pQyzA`zg_B-FWBWz7 zH?iv;roqF@(+`~^8l87&6%Jkxs`b0`(_Dj>Ob^?tv=@ISOZvtXIP#F&2D&ZZYA!U* zj4RSH02}5+g!_l>95lBy72LzHlKA!dty?1_0%xK+8k$(hvh(?+t@6RqYX#9pQBJw< zzD66<)=ue=&iPgAo@{DSRE;`r$#g%OG_c{AtfdxPGWSB-HUGHt={OIC(#1T-q4D1q z^sqR5m!wdrFI<6Mbej6=B$C+(Ve(UNd+qLqTj34Jd z&C0d=&G8&Fh`;Uv+xU8Y+nb2~q4*EDW;DXwvF7B{s?l$l!s$qemEIsJGQn7UgjCA`6;8E`0y9ZQRYVie_ zAo0x^3ay$duz=p0SR+?I>ZeqLu^YkW^tR z0o$}b-=!}cDm60D%CWEsY;+LUSku{e-v;>2dq%T_~Y;L{8Dc??$c`ZbJ0kT&hmmj z*({=5Vk_=H+*yHMNso{7B}vT2RbX!$85G~??hP+n_ujR8#P-hHH(SVm`BvC@mnmrJ z?e>}Jg{y-EEuAhkngA|k)hgGHA=o_|vSEHD903E7?6n`bY09BeqfrIB?OvnR>{ksJnzu zC9-JIV3u8FBx)!^192r)_cW;^pX`)AC{1|Ms6zewpzGJHY1J$j!X=zGi3vI2DT8>=wtOJq!=FC) z>_%XGcP%TxQjJ6)P|cIQ+@=}L%nV!We1sg#5jKHYzQaF5J-iK137gRy**$G=YaY(? z6&A4^qs27h>6ppoy_V5Dyw>w`hec0@SGcFV_tMn{JQ#?i(R5J*eusrxPwC$$A8e76 ztDf8R7}p0mKT|A;m`YyQBr?$d!=ut>Ps0-uvGku+r@j{d!08gz%@z;fTd@0? zkzm2Klm7ZZqOe(Pd?ws=@rWHWy8-- z4*nBoM{ub#n|82siZ-pX>U@{O*EVp}m2$a33-C{sK?^?fvWRq78W1;L6*Y{CBzBr# zM(_OLct8H~zhm_5nyL9d4p2>nBX1x)K?zkB2F1`p&!afW=Ht|~>4b?oAtaNv{`&fv z_V(rRRg}hEk^0!R&FA)0->3M(y+1mmQymnl9WDU|}516uj9LA{?jR8{OSM-|)Xo3Qr7DvDs=_Kdt;*sgHgOdKw zhCP&rq44ywsE&@~;rZ`^f_?}-aexD#zH`?B#!gF3lR(IS97Y4!1FL;}mI{rn*;Xi4 z-*{p8D`1ze2X0Ss|Lw2G?+?gtdCZ<0|Lhj?ciqC6wP~%P!UkfFHdQ&~(VoPwPLLZEsj%8|2JD0D147zhtRxJrT(BGb3u@Z$`>0rL)vNZVHd!i~PJ3c(&-59~@fO ze|@yYn9P}X04u1zy&+|iqnV7s&j-v0o*0z?u(FR#!R+f-#hC4!hWg~Oudr|^>NfOF zT9&P;@Tn1rxG69|@`e{k#~B*NS;=n)+yw#LaSKO+%m8gR>_EOln~WV|BveCfZ-@SV zJm%?**n*iXptQzN7=E~P-$S@fNoTTdBqT?9Tis-||7n#!xBndkG<)ASjO}cG(>I1S zZG=?52m^qg-KSL$Gvj=a5w*gfmi&{+^;u;~(m5XQXLonh#~_ZY8-2*!>bx&9jb8TP zLF|f1QZZR~dS2w~T}zPORVHA#Y~es`2t*;N3e9D?#76TAp_p%$58LfB0%3h?l#&V~ zmbaf0b2Pb06jS`c{d)bKu=L;lv5XsuzEB*MS0dLCdF{2w+oimKlAWMQ`~%y_tjF1w zC+2^EeAE^PaJ+B#9b;`U!(Kaa_R@N~7f1xb{r6VDx^{=t=L=i-gcF5W#VuT^{u_FH zg1SA(bU6sAzC9o65UMRa+>V%KIHHT66VFCk7s2@&zh?E|qLw9U6Veg6erWT`omS;d zTJrbYytQpc?*qr$T6|Fw6JQWI*)1%b7O&8ftD&G@j6Odcj}0N@E(<~@IPIm^=sXIB zhgS2)tRObLW(P|JV@Nh`7tY`0XE7V`uW|)hsni!8O!PRJ7|6PQ>+4?-tmAVew*9&1 zN)D|^61BMyYt;Ox>0OLWDb@xCIM@wA14k?XMGj0Y`HHrxZ>6uk*t2j83saMeQ2!&w zRrIZM&{pm14dU4Od8enr4JqJ=wZUF7ww&TD#}s9Ox7)H}ry=kj#_gn9YN|0C#KA)L zf)=j#^cLP+?hTg6X|&ns$lU@k2`s*u&$ZZv^Tcg$4 zU@V$9)4SW0R=a+jx_TrqVvEeZu%E1I~XA5^kVYx2|#R4jPcK^;= z(fL|`ZjOxt6$~U}{4jLn$(W)x564V&0GS;Ad%Cmmrm$Z>lz|Yh-5FaHhdrzKcLzE2 zBHS+XZK66ZEtHEld3XjUCJGK=!zjimt9EYEs$bB9oyR9SZ9;fL>1+|s@kogyN~flI z=M9Y;sAuv75$M!vLji`kN&DGr!i=gfRAXUa3n_~IGAV=#1nb}dteIL0N^iXtgV3j! z=-Ff{=ch!1&-#)29T#yJ9}9es%RZ^Ane*}SWhy-_zV#glqK)m z-}~1ce6nK`NaDfC1SRp$l0-zJuceSquxChCGifLS$g%sWZ9YpiwPXYBJB}dg@&U)ms?eK-|qy*>u_qIh7vbc9riCyoIl;jyq0=7r$ zJQP{OHA7ZgOfJ5Kgwv8}m7Q15pGjy9Sc5=0E8)0v>5o7*BW!dn?gQv$s^ca-&N2Fx zk*ME7sZ%t55UO)qM*=Vetm_yk$K9%Pz%II2 zO#kcD*S$S?qn?-D7eK7|N1=-6xG&xI zj?X1gU!`Mh!+|VL-`6C71@3xPVMLa!=B=rn(-G zTH!Yu{RLXiakGE1&C8?VY_TB^tiRMt^7m*J40@;{GY(-F^t(R`Z&4j zh+=$OeZ9lt_b1^Af4|@jUVL*Is!T!iN$UMldNk7=bU-jU>TrMb)KZLkWF*%yPX6#{7B4F4UhBL2Xh7-e`aB&|REGy>}p`Z1YTP5yLOl zTr2*=gEV6}b{m4pbz@g?>YZG){H)aAivgosv8N?K1&>S2hkpC;+|fPtr(}iJsCb%t zR+cIvj-F$z;=q)E;x_N$OY8k&g#*25=z*y^t0ZK!$zIZ)Tly(gI-e9@u<20AWV8BS zK}Jws{>yv0kBojL#FB)pW|6(Kd$%nez9@%g?_Q1-x-SWAisOEe2K-#7?mE2|P+`g! zonBknOR{R$@1(_+Eyy4^Y#5rsW5S4gT8Gc(9g>Xn3>hKl}b5^HBiu;_~Lc#3BICfo++!LKN1peXr0bc!aJwm+U~1b^J$z$xR{MmQ*8z}b;*LA zpSr0lx%jq1PVaShBH`DjO2P*sZvm0v#qxVA1GkO4v5`h>!0ylC;0OhH{wL@&a>n#; zw!$34wtb?WzIG0KIb!`7@#E6*TvaJdC#u;|G8jt2;b}cKGDj7v6lKTl-@t5Mb-bOb zQ;Xjz0DiphDfpQK1Bg!vip$kS3#=0(X;Yp;M-6atlOyA{)CUfdb~AZ$PC!}$Ic$6X zv1a+3Di`o7jPirw69qEpNVEVosbHBuXH?(X#h}}XQcGHdk!h&{rnt%z> z9aQjH3}SJUIr9&z!D|~hU%yN_0NgHU-;Y^vhX!Ps5J1#=YWIYBwK&k_VziPB&EI6; zS!yE%`a+HdE>W!Bu)1jOsgCl`&gZ8|j@8>N48UMSxY)LSF&XD{Q@Kwz14>DVkzi9; zJzV_Wr3swcX6WRqF66t)HgTcOS05rfr;kZ*ed z8`4+;e{|K1P9Z$g86*Y9{Aj@9ZWaSs1alLd6Pg){;D7#uED>XIP|tEEW86l=4tmQn zzSOwS#MBxDYd>hZu3tRe)EuT9j@*ZlM50^x zuxPrC)H;NRGxu3LN~G|-XrVzo;Snby3YDWf^y?+5(7ICc9^V*a(!r^2JWhrr(9hlj z{3$J-WCcZoVS6EUROj2lgv_7_p!YT2dHkXJM47MT?Rml^e->Wb5A0^2!E1VHgpp?Fb zZtlf1t5z9oH%th1R*PTj=}k$ix8nb48_T*-EOz(g#y|YVo*W zD6ds9$Y8rxvsZ2ilEVJ5X7&P!$P)3a;=JS*EBgJl!J9@)&njCx8&vN;I)LUaf(utv zk`84Nj_{h63n5t#;b7?Mr)wo%*@?*UcgE9U!uB0eZEKS!Cv_>~!^};6#cN4qEa$9p zk{?nsc?%%I9}KXucT`<3vT)I7p7`4CRH44M{IiI6W<`=FLd-vpAmbVQh0~Q%sAHG;B?vYZi-YD za$z~RCX-__hcn~MRVnb?d@W_=wbIX;s46z&9Z!=t8~f=UjNg?^gy6c|?G*d_@DV>T zdYn;LTX$`~ycXN?Y4vq%)1=ss=PNw_Tw|Dkfq4><8I;)a9YSHk`~IDG(528SgNZ~o zf-`k1A2_#2bUFy-cMXCVKg4UD!b!Th-}toIaie>kLqJM~G~-IZzBO3Dv%ZZPIqicR zcJtx#5+p9#H#hvC<50QF=O%oLo=27+a6FL6t~(BZ1>$Jm$2X1?%BRv!!cm?qWqs@dv!Xq(3R$&r9DY=34r>Xr^!`!_ zt#5#Pr>Rq>jBOqP3-aGVw<_oZfBKUm$6y|!!BR+2jU!v5k*15rkLCKCZ19>gmCboX zx`DPRb=>AH&FxjNiQs$VTXaH&|MKg93E*wX9rf{yx2s)qlURy|>wFyH-s#p4?)=P& zqREdxkOXQPC5wk88W2|Be+>JP$W(yk@PlQ-FJ2QVr|3ei=<;zpzhy)bRl@CBP$W~E zY%cDjMa(KjL8~5Ppe`;}kK|Kz^k;)Y1&(hGeW+{-r+Rav=aC4Sh6&AM!I+twY4@w& z5yo4?@C(?nJU>LySIHUZdbpjPP?sPf7$jSEN*E@8ZB{A3ETl`kT@7qIYbD^%t2=O> z0lM3$LfKeM8Silof1DI$8Z7i#=1-6&43pG1eGZZOtsw>BrLxooGb1!c`MF+(DZboP zDa<48bx=<+gd-tC#bTre=dyr;vN=!I{_h9U*`*?L%QRHHwxphpWjizhVf@=2d_Vgx zA8c3C5qYO@m%KG+2DXj!8 z^JlPoK9!2Nm^IFuRSU85b=j-5szXu6I(n8K6=L-b+A2TnnS^i!Y>wW5?+TXFA%@tL z)0b-^%UvxrIV*3J4i;Nuj8!|rGL|i6&lB0w+0UmcM5%nw2(6>xBWRVOFKK|C>)pi& zmEdD>TrcNOd@qZFt;!1D*?vb@Is7;S$!cPyaJf~bv+68@_pw)Y*mZrExqq0Ni-BGrAQ%Ge`@mUdzE~J%0~Yk`Xwi$ z>cMhBBCAl2pH~7v^QV8!rP7IOlcy>?WQb_$)#`n{%*>;W@gP#6d)`gVb6jS=Ul( z1Ff^p+tZiorYb8YiE74k71~!1b;ul%WpClp%a0i2jjA( z`BKZkA{_p2eY7k&IW~%q)Jy3F8T-=mv^%PXIfyEYctc8rn10CBORnim1${;WN#9Ti zcKg!=PSLX;Zak{kr8y7O@=}Ys;ZJ3#jj(C!hzpFZeP^~MOFHPY=SnpMC1 zgMvBvW>hp0Z&Vq?sv+oqt(?vka$lniz>%D;oY~)~^#u*+n_#Yv@RaXC$a$5p zF}vyDbX?^LFQgts0Acy`rbgkvpR`oG!*XuXzSP_=o;ReCJQPBqf4{t-Odn6uE4STc zI6pgOVmOl{rzTuPAGQ6E0Bp?Zi;!Jr+fVKx08yeTtJ|J1@o_C3f*I0_sCFO-SJ-Fp zQi5z;Kp+J6fBynZ(t39F1oUge$$j^bxL(s3fX)GZZ=L8jVuvm}dd`bwCc-knMzQ|C z6SAP1A{mJ@6&b&?NDx@{UKrKJME_n{D7emPu(~i7C^o^IZmTzfWawWC>HRzZeO#*! z6UvAss>q;;u~X8fXQ^n_p{KU{DP!5cGvQvDYh)=^7-4u;!6m8T2pN}=xnBE#lXf5c z!724!EWT^|Yf-dfSy>`5O4GoQ?;~EzxQr}t8kCI@*f>;>rNeE)^gyXBQ>G->{P#ND zzY*d8Muf|vZ24BPOUcr~U)jT*#9!-_mB|D@8-iBhepv+2efVHrR8v!ak@*ui5eFX; zn#M*ew$}AkTC;){czKbrG&SB49CyJzI{hrFDR&js4ylZFHmS0=yZT1;tQlew z(t~%(42;1d31&FTB=$nVup1s8rj4&+VP!_HBRPWq{^4Rq7W7{y9+ng?KS(<*tvGC= zNL%g-s;wP5fMn+PQR@@$DV(T7Q z@KKV+=KtnaL1y@St0w3$vfmCrSa?gG*Vx-V(POh?a=M~i$a$EY97$Yl{3jqFd5&QnUV?=O z+*L)tzzRTIC=*L;d%Hy#{HZ@P-UjQ7Ys>{YSWg1)QKpx{$|V%tR)X*YCqWCL^Jh~y zCk_9Xo}(?Emsa#GlJl8*3HRAK%CkY0{^ONWX*~Zb7!Fsk{TytvfQt>dNwQ7x_eGiD z$p|k1W{m6tl$c>S7xlkBs@ecw)f-{cxqo-^*zPo*Mbhg*0&thFr}5fCY-!41*G5bk z|E;s%d-JYdQ-lA_brsh2$$t!P#CYDwa|W4-$Zwgo9SoAaHL0C(j-q?ggegZhM99p$ u^7lB0>AAcYpnnL;)9;E!IVWL$5zj5ImF4t9kOTg$0V&9;%G5}ih5iqx_^l}b literal 0 HcmV?d00001 diff --git a/app/src/serviceWorker.js b/app/src/serviceWorker.js new file mode 100644 index 0000000..2283ff9 --- /dev/null +++ b/app/src/serviceWorker.js @@ -0,0 +1,135 @@ +// This optional code is used to register a service worker. +// register() is not called by default. + +// This lets the app load faster on subsequent visits in production, and gives +// it offline capabilities. However, it also means that developers (and users) +// will only see deployed updates on subsequent visits to a page, after all the +// existing tabs open on the page have been closed, since previously cached +// resources are updated in the background. + +// To learn more about the benefits of this model and instructions on how to +// opt-in, read http://bit.ly/CRA-PWA + +const isLocalhost = Boolean( + window.location.hostname === 'localhost' || + // [::1] is the IPv6 localhost address. + window.location.hostname === '[::1]' || + // 127.0.0.1/8 is considered localhost for IPv4. + window.location.hostname.match( + /^127(?:\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/ + ) +); + +export function register(config) { + if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) { + // The URL constructor is available in all browsers that support SW. + const publicUrl = new URL(process.env.PUBLIC_URL, window.location.href); + if (publicUrl.origin !== window.location.origin) { + // Our service worker won't work if PUBLIC_URL is on a different origin + // from what our page is served on. This might happen if a CDN is used to + // serve assets; see https://github.com/facebook/create-react-app/issues/2374 + return; + } + + window.addEventListener('load', () => { + const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`; + + if (isLocalhost) { + // This is running on localhost. Let's check if a service worker still exists or not. + checkValidServiceWorker(swUrl, config); + + // Add some additional logging to localhost, pointing developers to the + // service worker/PWA documentation. + navigator.serviceWorker.ready.then(() => { + console.log( + 'This web app is being served cache-first by a service ' + + 'worker. To learn more, visit http://bit.ly/CRA-PWA' + ); + }); + } else { + // Is not localhost. Just register service worker + registerValidSW(swUrl, config); + } + }); + } +} + +function registerValidSW(swUrl, config) { + navigator.serviceWorker + .register(swUrl) + .then(registration => { + registration.onupdatefound = () => { + const installingWorker = registration.installing; + if (installingWorker == null) { + return; + } + installingWorker.onstatechange = () => { + if (installingWorker.state === 'installed') { + if (navigator.serviceWorker.controller) { + // At this point, the updated precached content has been fetched, + // but the previous service worker will still serve the older + // content until all client tabs are closed. + console.log( + 'New content is available and will be used when all ' + + 'tabs for this page are closed. See http://bit.ly/CRA-PWA.' + ); + + // Execute callback + if (config && config.onUpdate) { + config.onUpdate(registration); + } + } else { + // At this point, everything has been precached. + // It's the perfect time to display a + // "Content is cached for offline use." message. + console.log('Content is cached for offline use.'); + + // Execute callback + if (config && config.onSuccess) { + config.onSuccess(registration); + } + } + } + }; + }; + }) + .catch(error => { + console.error('Error during service worker registration:', error); + }); +} + +function checkValidServiceWorker(swUrl, config) { + // Check if the service worker can be found. If it can't reload the page. + fetch(swUrl) + .then(response => { + // Ensure service worker exists, and that we really are getting a JS file. + const contentType = response.headers.get('content-type'); + if ( + response.status === 404 || + (contentType != null && contentType.indexOf('javascript') === -1) + ) { + // No service worker found. Probably a different app. Reload the page. + navigator.serviceWorker.ready.then(registration => { + registration.unregister().then(() => { + window.location.reload(); + }); + }); + } else { + // Service worker found. Proceed as normal. + registerValidSW(swUrl, config); + } + }) + .catch(() => { + console.log( + 'No internet connection found. App is running in offline mode.' + ); + }); +} + +export function unregister() { + if ('serviceWorker' in navigator) { + navigator.serviceWorker.ready.then(registration => { + registration.unregister(); + }); + } +} diff --git a/app/yarn.lock b/app/yarn.lock new file mode 100644 index 0000000..7b416d3 --- /dev/null +++ b/app/yarn.lock @@ -0,0 +1,12298 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"@babel/code-frame@7.0.0", "@babel/code-frame@^7.0.0", "@babel/code-frame@^7.0.0-beta.35": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.0.0.tgz#06e2ab19bdb535385559aabb5ba59729482800f8" + integrity sha512-OfC2uemaknXr87bdLUkWog7nYuliM9Ij5HUcajsVcMCpQrcLmtxRbVFTIqmcSkSeYRBFBRxs2FiUqFJDLdiebA== + dependencies: + "@babel/highlight" "^7.0.0" + +"@babel/core@7.1.6": + version "7.1.6" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.1.6.tgz#3733cbee4317429bc87c62b29cf8587dba7baeb3" + integrity sha512-Hz6PJT6e44iUNpAn8AoyAs6B3bl60g7MJQaI0rZEar6ECzh6+srYO1xlIdssio34mPaUtAb1y+XlkkSJzok3yw== + dependencies: + "@babel/code-frame" "^7.0.0" + "@babel/generator" "^7.1.6" + "@babel/helpers" "^7.1.5" + "@babel/parser" "^7.1.6" + "@babel/template" "^7.1.2" + "@babel/traverse" "^7.1.6" + "@babel/types" "^7.1.6" + convert-source-map "^1.1.0" + debug "^4.1.0" + json5 "^2.1.0" + lodash "^4.17.10" + resolve "^1.3.2" + semver "^5.4.1" + source-map "^0.5.0" + +"@babel/core@^7.0.1": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.2.2.tgz#07adba6dde27bb5ad8d8672f15fde3e08184a687" + integrity sha512-59vB0RWt09cAct5EIe58+NzGP4TFSD3Bz//2/ELy3ZeTeKF6VTD1AXlH8BGGbCX0PuobZBsIzO7IAI9PH67eKw== + dependencies: + "@babel/code-frame" "^7.0.0" + "@babel/generator" "^7.2.2" + "@babel/helpers" "^7.2.0" + "@babel/parser" "^7.2.2" + "@babel/template" "^7.2.2" + "@babel/traverse" "^7.2.2" + "@babel/types" "^7.2.2" + convert-source-map "^1.1.0" + debug "^4.1.0" + json5 "^2.1.0" + lodash "^4.17.10" + resolve "^1.3.2" + semver "^5.4.1" + source-map "^0.5.0" + +"@babel/generator@^7.1.6", "@babel/generator@^7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.2.2.tgz#18c816c70962640eab42fe8cae5f3947a5c65ccc" + integrity sha512-I4o675J/iS8k+P38dvJ3IBGqObLXyQLTxtrR4u9cSUJOURvafeEWb/pFMOTwtNrmq73mJzyF6ueTbO1BtN0Zeg== + dependencies: + "@babel/types" "^7.2.2" + jsesc "^2.5.1" + lodash "^4.17.10" + source-map "^0.5.0" + trim-right "^1.0.1" + +"@babel/helper-annotate-as-pure@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.0.0.tgz#323d39dd0b50e10c7c06ca7d7638e6864d8c5c32" + integrity sha512-3UYcJUj9kvSLbLbUIfQTqzcy5VX7GRZ/CCDrnOaZorFFM01aXp1+GJwuFGV4NDDoAS+mOUyHcO6UD/RfqOks3Q== + dependencies: + "@babel/types" "^7.0.0" + +"@babel/helper-builder-binary-assignment-operator-visitor@^7.1.0": + version "7.1.0" + resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.1.0.tgz#6b69628dfe4087798e0c4ed98e3d4a6b2fbd2f5f" + integrity sha512-qNSR4jrmJ8M1VMM9tibvyRAHXQs2PmaksQF7c1CGJNipfe3D8p+wgNwgso/P2A2r2mdgBWAXljNWR0QRZAMW8w== + dependencies: + "@babel/helper-explode-assignable-expression" "^7.1.0" + "@babel/types" "^7.0.0" + +"@babel/helper-builder-react-jsx@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/helper-builder-react-jsx/-/helper-builder-react-jsx-7.0.0.tgz#fa154cb53eb918cf2a9a7ce928e29eb649c5acdb" + integrity sha512-ebJ2JM6NAKW0fQEqN8hOLxK84RbRz9OkUhGS/Xd5u56ejMfVbayJ4+LykERZCOUM6faa6Fp3SZNX3fcT16MKHw== + dependencies: + "@babel/types" "^7.0.0" + esutils "^2.0.0" + +"@babel/helper-call-delegate@^7.1.0": + version "7.1.0" + resolved "https://registry.yarnpkg.com/@babel/helper-call-delegate/-/helper-call-delegate-7.1.0.tgz#6a957f105f37755e8645343d3038a22e1449cc4a" + integrity sha512-YEtYZrw3GUK6emQHKthltKNZwszBcHK58Ygcis+gVUrF4/FmTVr5CCqQNSfmvg2y+YDEANyYoaLz/SHsnusCwQ== + dependencies: + "@babel/helper-hoist-variables" "^7.0.0" + "@babel/traverse" "^7.1.0" + "@babel/types" "^7.0.0" + +"@babel/helper-define-map@^7.1.0": + version "7.1.0" + resolved "https://registry.yarnpkg.com/@babel/helper-define-map/-/helper-define-map-7.1.0.tgz#3b74caec329b3c80c116290887c0dd9ae468c20c" + integrity sha512-yPPcW8dc3gZLN+U1mhYV91QU3n5uTbx7DUdf8NnPbjS0RMwBuHi9Xt2MUgppmNz7CJxTBWsGczTiEp1CSOTPRg== + dependencies: + "@babel/helper-function-name" "^7.1.0" + "@babel/types" "^7.0.0" + lodash "^4.17.10" + +"@babel/helper-explode-assignable-expression@^7.1.0": + version "7.1.0" + resolved "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.1.0.tgz#537fa13f6f1674df745b0c00ec8fe4e99681c8f6" + integrity sha512-NRQpfHrJ1msCHtKjbzs9YcMmJZOg6mQMmGRB+hbamEdG5PNpaSm95275VD92DvJKuyl0s2sFiDmMZ+EnnvufqA== + dependencies: + "@babel/traverse" "^7.1.0" + "@babel/types" "^7.0.0" + +"@babel/helper-function-name@^7.1.0": + version "7.1.0" + resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.1.0.tgz#a0ceb01685f73355d4360c1247f582bfafc8ff53" + integrity sha512-A95XEoCpb3TO+KZzJ4S/5uW5fNe26DjBGqf1o9ucyLyCmi1dXq/B3c8iaWTfBk3VvetUxl16e8tIrd5teOCfGw== + dependencies: + "@babel/helper-get-function-arity" "^7.0.0" + "@babel/template" "^7.1.0" + "@babel/types" "^7.0.0" + +"@babel/helper-get-function-arity@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0.tgz#83572d4320e2a4657263734113c42868b64e49c3" + integrity sha512-r2DbJeg4svYvt3HOS74U4eWKsUAMRH01Z1ds1zx8KNTPtpTL5JAsdFv8BNyOpVqdFhHkkRDIg5B4AsxmkjAlmQ== + dependencies: + "@babel/types" "^7.0.0" + +"@babel/helper-hoist-variables@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.0.0.tgz#46adc4c5e758645ae7a45deb92bab0918c23bb88" + integrity sha512-Ggv5sldXUeSKsuzLkddtyhyHe2YantsxWKNi7A+7LeD12ExRDWTRk29JCXpaHPAbMaIPZSil7n+lq78WY2VY7w== + dependencies: + "@babel/types" "^7.0.0" + +"@babel/helper-member-expression-to-functions@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.0.0.tgz#8cd14b0a0df7ff00f009e7d7a436945f47c7a16f" + integrity sha512-avo+lm/QmZlv27Zsi0xEor2fKcqWG56D5ae9dzklpIaY7cQMK5N8VSpaNVPPagiqmy7LrEjK1IWdGMOqPu5csg== + dependencies: + "@babel/types" "^7.0.0" + +"@babel/helper-module-imports@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.0.0.tgz#96081b7111e486da4d2cd971ad1a4fe216cc2e3d" + integrity sha512-aP/hlLq01DWNEiDg4Jn23i+CXxW/owM4WpDLFUbpjxe4NS3BhLVZQ5i7E0ZrxuQ/vwekIeciyamgB1UIYxxM6A== + dependencies: + "@babel/types" "^7.0.0" + +"@babel/helper-module-transforms@^7.1.0": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.2.2.tgz#ab2f8e8d231409f8370c883d20c335190284b963" + integrity sha512-YRD7I6Wsv+IHuTPkAmAS4HhY0dkPobgLftHp0cRGZSdrRvmZY8rFvae/GVu3bD00qscuvK3WPHB3YdNpBXUqrA== + dependencies: + "@babel/helper-module-imports" "^7.0.0" + "@babel/helper-simple-access" "^7.1.0" + "@babel/helper-split-export-declaration" "^7.0.0" + "@babel/template" "^7.2.2" + "@babel/types" "^7.2.2" + lodash "^4.17.10" + +"@babel/helper-optimise-call-expression@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.0.0.tgz#a2920c5702b073c15de51106200aa8cad20497d5" + integrity sha512-u8nd9NQePYNQV8iPWu/pLLYBqZBa4ZaY1YWRFMuxrid94wKI1QNt67NEZ7GAe5Kc/0LLScbim05xZFWkAdrj9g== + dependencies: + "@babel/types" "^7.0.0" + +"@babel/helper-plugin-utils@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.0.0.tgz#bbb3fbee98661c569034237cc03967ba99b4f250" + integrity sha512-CYAOUCARwExnEixLdB6sDm2dIJ/YgEAKDM1MOeMeZu9Ld/bDgVo8aiWrXwcY7OBh+1Ea2uUcVRcxKk0GJvW7QA== + +"@babel/helper-regex@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/helper-regex/-/helper-regex-7.0.0.tgz#2c1718923b57f9bbe64705ffe5640ac64d9bdb27" + integrity sha512-TR0/N0NDCcUIUEbqV6dCO+LptmmSQFQ7q70lfcEB4URsjD0E1HzicrwUH+ap6BAQ2jhCX9Q4UqZy4wilujWlkg== + dependencies: + lodash "^4.17.10" + +"@babel/helper-remap-async-to-generator@^7.1.0": + version "7.1.0" + resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.1.0.tgz#361d80821b6f38da75bd3f0785ece20a88c5fe7f" + integrity sha512-3fOK0L+Fdlg8S5al8u/hWE6vhufGSn0bN09xm2LXMy//REAF8kDCrYoOBKYmA8m5Nom+sV9LyLCwrFynA8/slg== + dependencies: + "@babel/helper-annotate-as-pure" "^7.0.0" + "@babel/helper-wrap-function" "^7.1.0" + "@babel/template" "^7.1.0" + "@babel/traverse" "^7.1.0" + "@babel/types" "^7.0.0" + +"@babel/helper-replace-supers@^7.1.0": + version "7.2.3" + resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.2.3.tgz#19970020cf22677d62b3a689561dbd9644d8c5e5" + integrity sha512-GyieIznGUfPXPWu0yLS6U55Mz67AZD9cUk0BfirOWlPrXlBcan9Gz+vHGz+cPfuoweZSnPzPIm67VtQM0OWZbA== + dependencies: + "@babel/helper-member-expression-to-functions" "^7.0.0" + "@babel/helper-optimise-call-expression" "^7.0.0" + "@babel/traverse" "^7.2.3" + "@babel/types" "^7.0.0" + +"@babel/helper-simple-access@^7.1.0": + version "7.1.0" + resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.1.0.tgz#65eeb954c8c245beaa4e859da6188f39d71e585c" + integrity sha512-Vk+78hNjRbsiu49zAPALxTb+JUQCz1aolpd8osOF16BGnLtseD21nbHgLPGUwrXEurZgiCOUmvs3ExTu4F5x6w== + dependencies: + "@babel/template" "^7.1.0" + "@babel/types" "^7.0.0" + +"@babel/helper-split-export-declaration@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.0.0.tgz#3aae285c0311c2ab095d997b8c9a94cad547d813" + integrity sha512-MXkOJqva62dfC0w85mEf/LucPPS/1+04nmmRMPEBUB++hiiThQ2zPtX/mEWQ3mtzCEjIJvPY8nuwxXtQeQwUag== + dependencies: + "@babel/types" "^7.0.0" + +"@babel/helper-wrap-function@^7.1.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.2.0.tgz#c4e0012445769e2815b55296ead43a958549f6fa" + integrity sha512-o9fP1BZLLSrYlxYEYyl2aS+Flun5gtjTIG8iln+XuEzQTs0PLagAGSXUcqruJwD5fM48jzIEggCKpIfWTcR7pQ== + dependencies: + "@babel/helper-function-name" "^7.1.0" + "@babel/template" "^7.1.0" + "@babel/traverse" "^7.1.0" + "@babel/types" "^7.2.0" + +"@babel/helpers@^7.1.5", "@babel/helpers@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.2.0.tgz#8335f3140f3144270dc63c4732a4f8b0a50b7a21" + integrity sha512-Fr07N+ea0dMcMN8nFpuK6dUIT7/ivt9yKQdEEnjVS83tG2pHwPi03gYmk/tyuwONnZ+sY+GFFPlWGgCtW1hF9A== + dependencies: + "@babel/template" "^7.1.2" + "@babel/traverse" "^7.1.5" + "@babel/types" "^7.2.0" + +"@babel/highlight@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.0.0.tgz#f710c38c8d458e6dd9a201afb637fcb781ce99e4" + integrity sha512-UFMC4ZeFC48Tpvj7C8UgLvtkaUuovQX+5xNWrsIoMG8o2z+XFKjKaN9iVmS84dPwVN00W4wPmqvYoZF3EGAsfw== + dependencies: + chalk "^2.0.0" + esutils "^2.0.2" + js-tokens "^4.0.0" + +"@babel/parser@^7.0.0", "@babel/parser@^7.1.6", "@babel/parser@^7.2.2", "@babel/parser@^7.2.3": + version "7.2.3" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.2.3.tgz#32f5df65744b70888d17872ec106b02434ba1489" + integrity sha512-0LyEcVlfCoFmci8mXx8A5oIkpkOgyo8dRHtxBnK9RRBwxO2+JZPNsqtVEZQ7mJFPxnXF9lfmU24mHOPI0qnlkA== + +"@babel/plugin-proposal-async-generator-functions@^7.1.0", "@babel/plugin-proposal-async-generator-functions@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.2.0.tgz#b289b306669dce4ad20b0252889a15768c9d417e" + integrity sha512-+Dfo/SCQqrwx48ptLVGLdE39YtWRuKc/Y9I5Fy0P1DDBB9lsAHpjcEJQt+4IifuSOSTLBKJObJqMvaO1pIE8LQ== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-remap-async-to-generator" "^7.1.0" + "@babel/plugin-syntax-async-generators" "^7.2.0" + +"@babel/plugin-proposal-class-properties@7.1.0": + version "7.1.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.1.0.tgz#9af01856b1241db60ec8838d84691aa0bd1e8df4" + integrity sha512-/PCJWN+CKt5v1xcGn4vnuu13QDoV+P7NcICP44BoonAJoPSGwVkgrXihFIQGiEjjPlUDBIw1cM7wYFLARS2/hw== + dependencies: + "@babel/helper-function-name" "^7.1.0" + "@babel/helper-member-expression-to-functions" "^7.0.0" + "@babel/helper-optimise-call-expression" "^7.0.0" + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-replace-supers" "^7.1.0" + "@babel/plugin-syntax-class-properties" "^7.0.0" + +"@babel/plugin-proposal-decorators@7.1.6": + version "7.1.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.1.6.tgz#460c31edbd01953efe45d491583b3ec31661d689" + integrity sha512-U42f8KhUbtlhUDyV/wK4Rq/wWh8vWyttYABckG/v0vVnMPvayOewZC/83CbVdmyP+UhEqI368FEQ7hHMfhBpQA== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-replace-supers" "^7.1.0" + "@babel/helper-split-export-declaration" "^7.0.0" + "@babel/plugin-syntax-decorators" "^7.1.0" + +"@babel/plugin-proposal-json-strings@^7.0.0", "@babel/plugin-proposal-json-strings@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.2.0.tgz#568ecc446c6148ae6b267f02551130891e29f317" + integrity sha512-MAFV1CA/YVmYwZG0fBQyXhmj0BHCB5egZHCKWIFVv/XCxAeVGIHfos3SwDck4LvCllENIAg7xMKOG5kH0dzyUg== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-syntax-json-strings" "^7.2.0" + +"@babel/plugin-proposal-object-rest-spread@7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.0.0.tgz#9a17b547f64d0676b6c9cecd4edf74a82ab85e7e" + integrity sha512-14fhfoPcNu7itSen7Py1iGN0gEm87hX/B+8nZPqkdmANyyYWYMY2pjA3r8WXbWVKMzfnSNS0xY8GVS0IjXi/iw== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-syntax-object-rest-spread" "^7.0.0" + +"@babel/plugin-proposal-object-rest-spread@^7.0.0", "@babel/plugin-proposal-object-rest-spread@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.2.0.tgz#88f5fec3e7ad019014c97f7ee3c992f0adbf7fb8" + integrity sha512-1L5mWLSvR76XYUQJXkd/EEQgjq8HHRP6lQuZTTg0VA4tTGPpGemmCdAfQIz1rzEuWAm+ecP8PyyEm30jC1eQCg== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-syntax-object-rest-spread" "^7.2.0" + +"@babel/plugin-proposal-optional-catch-binding@^7.0.0", "@babel/plugin-proposal-optional-catch-binding@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.2.0.tgz#135d81edb68a081e55e56ec48541ece8065c38f5" + integrity sha512-mgYj3jCcxug6KUcX4OBoOJz3CMrwRfQELPQ5560F70YQUBZB7uac9fqaWamKR1iWUzGiK2t0ygzjTScZnVz75g== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-syntax-optional-catch-binding" "^7.2.0" + +"@babel/plugin-proposal-unicode-property-regex@^7.0.0", "@babel/plugin-proposal-unicode-property-regex@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.2.0.tgz#abe7281fe46c95ddc143a65e5358647792039520" + integrity sha512-LvRVYb7kikuOtIoUeWTkOxQEV1kYvL5B6U3iWEGCzPNRus1MzJweFqORTj+0jkxozkTSYNJozPOddxmqdqsRpw== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-regex" "^7.0.0" + regexpu-core "^4.2.0" + +"@babel/plugin-syntax-async-generators@^7.0.0", "@babel/plugin-syntax-async-generators@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.2.0.tgz#69e1f0db34c6f5a0cf7e2b3323bf159a76c8cb7f" + integrity sha512-1ZrIRBv2t0GSlcwVoQ6VgSLpLgiN/FVQUzt9znxo7v2Ov4jJrs8RY8tv0wvDmFN3qIdMKWrmMMW6yZ0G19MfGg== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-syntax-class-properties@^7.0.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.2.0.tgz#23b3b7b9bcdabd73672a9149f728cd3be6214812" + integrity sha512-UxYaGXYQ7rrKJS/PxIKRkv3exi05oH7rokBAsmCSsCxz1sVPZ7Fu6FzKoGgUvmY+0YgSkYHgUoCh5R5bCNBQlw== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-syntax-decorators@^7.1.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.2.0.tgz#c50b1b957dcc69e4b1127b65e1c33eef61570c1b" + integrity sha512-38QdqVoXdHUQfTpZo3rQwqQdWtCn5tMv4uV6r2RMfTqNBuv4ZBhz79SfaQWKTVmxHjeFv/DnXVC/+agHCklYWA== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-syntax-dynamic-import@7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.0.0.tgz#6dfb7d8b6c3be14ce952962f658f3b7eb54c33ee" + integrity sha512-Gt9xNyRrCHCiyX/ZxDGOcBnlJl0I3IWicpZRC4CdC0P5a/I07Ya2OAMEBU+J7GmRFVmIetqEYRko6QYRuKOESw== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-syntax-flow@^7.0.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.2.0.tgz#a765f061f803bc48f240c26f8747faf97c26bf7c" + integrity sha512-r6YMuZDWLtLlu0kqIim5o/3TNRAlWb073HwT3e2nKf9I8IIvOggPrnILYPsrrKilmn/mYEMCf/Z07w3yQJF6dg== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-syntax-json-strings@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.2.0.tgz#72bd13f6ffe1d25938129d2a186b11fd62951470" + integrity sha512-5UGYnMSLRE1dqqZwug+1LISpA403HzlSfsg6P9VXU6TBjcSHeNlw4DxDx7LgpF+iKZoOG/+uzqoRHTdcUpiZNg== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-syntax-jsx@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.2.0.tgz#0b85a3b4bc7cdf4cc4b8bf236335b907ca22e7c7" + integrity sha512-VyN4QANJkRW6lDBmENzRszvZf3/4AXaj9YR7GwrWeeN9tEBPuXbmDYVU9bYBN0D70zCWVwUy0HWq2553VCb6Hw== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-syntax-object-rest-spread@^7.0.0", "@babel/plugin-syntax-object-rest-spread@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.2.0.tgz#3b7a3e733510c57e820b9142a6579ac8b0dfad2e" + integrity sha512-t0JKGgqk2We+9may3t0xDdmneaXmyxq0xieYcKHxIsrJO64n1OiMWNUtc5gQK1PA0NpdCRrtZp4z+IUaKugrSA== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-syntax-optional-catch-binding@^7.0.0", "@babel/plugin-syntax-optional-catch-binding@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.2.0.tgz#a94013d6eda8908dfe6a477e7f9eda85656ecf5c" + integrity sha512-bDe4xKNhb0LI7IvZHiA13kff0KEfaGX/Hv4lMA9+7TEc63hMNvfKo6ZFpXhKuEp+II/q35Gc4NoMeDZyaUbj9w== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-syntax-typescript@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.2.0.tgz#55d240536bd314dcbbec70fd949c5cabaed1de29" + integrity sha512-WhKr6yu6yGpGcNMVgIBuI9MkredpVc7Y3YR4UzEZmDztHoL6wV56YBHLhWnjO1EvId1B32HrD3DRFc+zSoKI1g== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-arrow-functions@^7.0.0", "@babel/plugin-transform-arrow-functions@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.2.0.tgz#9aeafbe4d6ffc6563bf8f8372091628f00779550" + integrity sha512-ER77Cax1+8/8jCB9fo4Ud161OZzWN5qawi4GusDuRLcDbDG+bIGYY20zb2dfAFdTRGzrfq2xZPvF0R64EHnimg== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-async-to-generator@^7.1.0", "@babel/plugin-transform-async-to-generator@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.2.0.tgz#68b8a438663e88519e65b776f8938f3445b1a2ff" + integrity sha512-CEHzg4g5UraReozI9D4fblBYABs7IM6UerAVG7EJVrTLC5keh00aEuLUT+O40+mJCEzaXkYfTCUKIyeDfMOFFQ== + dependencies: + "@babel/helper-module-imports" "^7.0.0" + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-remap-async-to-generator" "^7.1.0" + +"@babel/plugin-transform-block-scoped-functions@^7.0.0", "@babel/plugin-transform-block-scoped-functions@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.2.0.tgz#5d3cc11e8d5ddd752aa64c9148d0db6cb79fd190" + integrity sha512-ntQPR6q1/NKuphly49+QiQiTN0O63uOwjdD6dhIjSWBI5xlrbUFh720TIpzBhpnrLfv2tNH/BXvLIab1+BAI0w== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-block-scoping@^7.1.5", "@babel/plugin-transform-block-scoping@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.2.0.tgz#f17c49d91eedbcdf5dd50597d16f5f2f770132d4" + integrity sha512-vDTgf19ZEV6mx35yiPJe4fS02mPQUUcBNwWQSZFXSzTSbsJFQvHt7DqyS3LK8oOWALFOsJ+8bbqBgkirZteD5Q== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + lodash "^4.17.10" + +"@babel/plugin-transform-classes@7.1.0": + version "7.1.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.1.0.tgz#ab3f8a564361800cbc8ab1ca6f21108038432249" + integrity sha512-rNaqoD+4OCBZjM7VaskladgqnZ1LO6o2UxuWSDzljzW21pN1KXkB7BstAVweZdxQkHAujps5QMNOTWesBciKFg== + dependencies: + "@babel/helper-annotate-as-pure" "^7.0.0" + "@babel/helper-define-map" "^7.1.0" + "@babel/helper-function-name" "^7.1.0" + "@babel/helper-optimise-call-expression" "^7.0.0" + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-replace-supers" "^7.1.0" + "@babel/helper-split-export-declaration" "^7.0.0" + globals "^11.1.0" + +"@babel/plugin-transform-classes@^7.1.0", "@babel/plugin-transform-classes@^7.2.0": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.2.2.tgz#6c90542f210ee975aa2aa8c8b5af7fa73a126953" + integrity sha512-gEZvgTy1VtcDOaQty1l10T3jQmJKlNVxLDCs+3rCVPr6nMkODLELxViq5X9l+rfxbie3XrfrMCYYY6eX3aOcOQ== + dependencies: + "@babel/helper-annotate-as-pure" "^7.0.0" + "@babel/helper-define-map" "^7.1.0" + "@babel/helper-function-name" "^7.1.0" + "@babel/helper-optimise-call-expression" "^7.0.0" + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-replace-supers" "^7.1.0" + "@babel/helper-split-export-declaration" "^7.0.0" + globals "^11.1.0" + +"@babel/plugin-transform-computed-properties@^7.0.0", "@babel/plugin-transform-computed-properties@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.2.0.tgz#83a7df6a658865b1c8f641d510c6f3af220216da" + integrity sha512-kP/drqTxY6Xt3NNpKiMomfgkNn4o7+vKxK2DDKcBG9sHj51vHqMBGy8wbDS/J4lMxnqs153/T3+DmCEAkC5cpA== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-destructuring@7.1.3": + version "7.1.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.1.3.tgz#e69ff50ca01fac6cb72863c544e516c2b193012f" + integrity sha512-Mb9M4DGIOspH1ExHOUnn2UUXFOyVTiX84fXCd+6B5iWrQg/QMeeRmSwpZ9lnjYLSXtZwiw80ytVMr3zue0ucYw== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-destructuring@^7.0.0", "@babel/plugin-transform-destructuring@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.2.0.tgz#e75269b4b7889ec3a332cd0d0c8cff8fed0dc6f3" + integrity sha512-coVO2Ayv7g0qdDbrNiadE4bU7lvCd9H539m2gMknyVjjMdwF/iCOM7R+E8PkntoqLkltO0rk+3axhpp/0v68VQ== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-dotall-regex@^7.0.0", "@babel/plugin-transform-dotall-regex@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.2.0.tgz#f0aabb93d120a8ac61e925ea0ba440812dbe0e49" + integrity sha512-sKxnyHfizweTgKZf7XsXu/CNupKhzijptfTM+bozonIuyVrLWVUvYjE2bhuSBML8VQeMxq4Mm63Q9qvcvUcciQ== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-regex" "^7.0.0" + regexpu-core "^4.1.3" + +"@babel/plugin-transform-duplicate-keys@^7.0.0", "@babel/plugin-transform-duplicate-keys@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.2.0.tgz#d952c4930f312a4dbfff18f0b2914e60c35530b3" + integrity sha512-q+yuxW4DsTjNceUiTzK0L+AfQ0zD9rWaTLiUqHA8p0gxx7lu1EylenfzjeIWNkPy6e/0VG/Wjw9uf9LueQwLOw== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-exponentiation-operator@^7.1.0", "@babel/plugin-transform-exponentiation-operator@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.2.0.tgz#a63868289e5b4007f7054d46491af51435766008" + integrity sha512-umh4hR6N7mu4Elq9GG8TOu9M0bakvlsREEC+ialrQN6ABS4oDQ69qJv1VtR3uxlKMCQMCvzk7vr17RHKcjx68A== + dependencies: + "@babel/helper-builder-binary-assignment-operator-visitor" "^7.1.0" + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-flow-strip-types@7.1.6": + version "7.1.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.1.6.tgz#4b7be62604d39e63cfe23b1d00d63e9fb7e763ba" + integrity sha512-0tyFAAjJmnRlr8MVJV39ASn1hv+PbdVP71hf7aAseqLfQ0o9QXk9htbMbq7/ZYXnUIp6gDw0lUUP0+PQMbbtmg== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-syntax-flow" "^7.0.0" + +"@babel/plugin-transform-for-of@^7.0.0", "@babel/plugin-transform-for-of@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.2.0.tgz#ab7468befa80f764bb03d3cb5eef8cc998e1cad9" + integrity sha512-Kz7Mt0SsV2tQk6jG5bBv5phVbkd0gd27SgYD4hH1aLMJRchM0dzHaXvrWhVZ+WxAlDoAKZ7Uy3jVTW2mKXQ1WQ== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-function-name@^7.1.0", "@babel/plugin-transform-function-name@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.2.0.tgz#f7930362829ff99a3174c39f0afcc024ef59731a" + integrity sha512-kWgksow9lHdvBC2Z4mxTsvc7YdY7w/V6B2vy9cTIPtLEE9NhwoWivaxdNM/S37elu5bqlLP/qOY906LukO9lkQ== + dependencies: + "@babel/helper-function-name" "^7.1.0" + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-literals@^7.0.0", "@babel/plugin-transform-literals@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.2.0.tgz#690353e81f9267dad4fd8cfd77eafa86aba53ea1" + integrity sha512-2ThDhm4lI4oV7fVQ6pNNK+sx+c/GM5/SaML0w/r4ZB7sAneD/piDJtwdKlNckXeyGK7wlwg2E2w33C/Hh+VFCg== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-modules-amd@^7.1.0", "@babel/plugin-transform-modules-amd@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.2.0.tgz#82a9bce45b95441f617a24011dc89d12da7f4ee6" + integrity sha512-mK2A8ucqz1qhrdqjS9VMIDfIvvT2thrEsIQzbaTdc5QFzhDjQv2CkJJ5f6BXIkgbmaoax3zBr2RyvV/8zeoUZw== + dependencies: + "@babel/helper-module-transforms" "^7.1.0" + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-modules-commonjs@^7.1.0", "@babel/plugin-transform-modules-commonjs@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.2.0.tgz#c4f1933f5991d5145e9cfad1dfd848ea1727f404" + integrity sha512-V6y0uaUQrQPXUrmj+hgnks8va2L0zcZymeU7TtWEgdRLNkceafKXEduv7QzgQAE4lT+suwooG9dC7LFhdRAbVQ== + dependencies: + "@babel/helper-module-transforms" "^7.1.0" + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-simple-access" "^7.1.0" + +"@babel/plugin-transform-modules-systemjs@^7.0.0", "@babel/plugin-transform-modules-systemjs@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.2.0.tgz#912bfe9e5ff982924c81d0937c92d24994bb9068" + integrity sha512-aYJwpAhoK9a+1+O625WIjvMY11wkB/ok0WClVwmeo3mCjcNRjt+/8gHWrB5i+00mUju0gWsBkQnPpdvQ7PImmQ== + dependencies: + "@babel/helper-hoist-variables" "^7.0.0" + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-modules-umd@^7.1.0", "@babel/plugin-transform-modules-umd@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.2.0.tgz#7678ce75169f0877b8eb2235538c074268dd01ae" + integrity sha512-BV3bw6MyUH1iIsGhXlOK6sXhmSarZjtJ/vMiD9dNmpY8QXFFQTj+6v92pcfy1iqa8DeAfJFwoxcrS/TUZda6sw== + dependencies: + "@babel/helper-module-transforms" "^7.1.0" + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-new-target@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.0.0.tgz#ae8fbd89517fa7892d20e6564e641e8770c3aa4a" + integrity sha512-yin069FYjah+LbqfGeTfzIBODex/e++Yfa0rH0fpfam9uTbuEeEOx5GLGr210ggOV77mVRNoeqSYqeuaqSzVSw== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-object-super@^7.1.0", "@babel/plugin-transform-object-super@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.2.0.tgz#b35d4c10f56bab5d650047dad0f1d8e8814b6598" + integrity sha512-VMyhPYZISFZAqAPVkiYb7dUe2AsVi2/wCT5+wZdsNO31FojQJa9ns40hzZ6U9f50Jlq4w6qwzdBB2uwqZ00ebg== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-replace-supers" "^7.1.0" + +"@babel/plugin-transform-parameters@^7.1.0", "@babel/plugin-transform-parameters@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.2.0.tgz#0d5ad15dc805e2ea866df4dd6682bfe76d1408c2" + integrity sha512-kB9+hhUidIgUoBQ0MsxMewhzr8i60nMa2KgeJKQWYrqQpqcBYtnpR+JgkadZVZoaEZ/eKu9mclFaVwhRpLNSzA== + dependencies: + "@babel/helper-call-delegate" "^7.1.0" + "@babel/helper-get-function-arity" "^7.0.0" + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-react-constant-elements@7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.0.0.tgz#ab413e33e9c46a766f5326014bcbf9e2b34ef7a4" + integrity sha512-z8yrW4KCVcqPYr0r9dHXe7fu3daLzn0r6TQEFoGbXahdrzEwT1d1ux+/EnFcqIHv9uPilUlnRnPIUf7GMO0ehg== + dependencies: + "@babel/helper-annotate-as-pure" "^7.0.0" + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-react-constant-elements@^7.0.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.2.0.tgz#ed602dc2d8bff2f0cb1a5ce29263dbdec40779f7" + integrity sha512-YYQFg6giRFMsZPKUM9v+VcHOdfSQdz9jHCx3akAi3UYgyjndmdYGSXylQ/V+HswQt4fL8IklchD9HTsaOCrWQQ== + dependencies: + "@babel/helper-annotate-as-pure" "^7.0.0" + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-react-display-name@7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.0.0.tgz#93759e6c023782e52c2da3b75eca60d4f10533ee" + integrity sha512-BX8xKuQTO0HzINxT6j/GiCwoJB0AOMs0HmLbEnAvcte8U8rSkNa/eSCAY+l1OA4JnCVq2jw2p6U8QQryy2fTPg== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-react-display-name@^7.0.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.2.0.tgz#ebfaed87834ce8dc4279609a4f0c324c156e3eb0" + integrity sha512-Htf/tPa5haZvRMiNSQSFifK12gtr/8vwfr+A9y69uF0QcU77AVu4K7MiHEkTxF7lQoHOL0F9ErqgfNEAKgXj7A== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-react-jsx-self@^7.0.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.2.0.tgz#461e21ad9478f1031dd5e276108d027f1b5240ba" + integrity sha512-v6S5L/myicZEy+jr6ielB0OR8h+EH/1QFx/YJ7c7Ua+7lqsjj/vW6fD5FR9hB/6y7mGbfT4vAURn3xqBxsUcdg== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-syntax-jsx" "^7.2.0" + +"@babel/plugin-transform-react-jsx-source@^7.0.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.2.0.tgz#20c8c60f0140f5dd3cd63418d452801cf3f7180f" + integrity sha512-A32OkKTp4i5U6aE88GwwcuV4HAprUgHcTq0sSafLxjr6AW0QahrCRCjxogkbbcdtpbXkuTOlgpjophCxb6sh5g== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-syntax-jsx" "^7.2.0" + +"@babel/plugin-transform-react-jsx@^7.0.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.2.0.tgz#ca36b6561c4d3b45524f8efb6f0fbc9a0d1d622f" + integrity sha512-h/fZRel5wAfCqcKgq3OhbmYaReo7KkoJBpt8XnvpS7wqaNMqtw5xhxutzcm35iMUWucfAdT/nvGTsWln0JTg2Q== + dependencies: + "@babel/helper-builder-react-jsx" "^7.0.0" + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-syntax-jsx" "^7.2.0" + +"@babel/plugin-transform-regenerator@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.0.0.tgz#5b41686b4ed40bef874d7ed6a84bdd849c13e0c1" + integrity sha512-sj2qzsEx8KDVv1QuJc/dEfilkg3RRPvPYx/VnKLtItVQRWt1Wqf5eVCOLZm29CiGFfYYsA3VPjfizTCV0S0Dlw== + dependencies: + regenerator-transform "^0.13.3" + +"@babel/plugin-transform-runtime@7.1.0": + version "7.1.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.1.0.tgz#9f76920d42551bb577e2dc594df229b5f7624b63" + integrity sha512-WFLMgzu5DLQEah0lKTJzYb14vd6UiES7PTnXcvrPZ1VrwFeJ+mTbvr65fFAsXYMt2bIoOoC0jk76zY1S7HZjUg== + dependencies: + "@babel/helper-module-imports" "^7.0.0" + "@babel/helper-plugin-utils" "^7.0.0" + resolve "^1.8.1" + semver "^5.5.1" + +"@babel/plugin-transform-shorthand-properties@^7.0.0", "@babel/plugin-transform-shorthand-properties@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.2.0.tgz#6333aee2f8d6ee7e28615457298934a3b46198f0" + integrity sha512-QP4eUM83ha9zmYtpbnyjTLAGKQritA5XW/iG9cjtuOI8s1RuL/3V6a3DeSHfKutJQ+ayUfeZJPcnCYEQzaPQqg== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-spread@^7.0.0", "@babel/plugin-transform-spread@^7.2.0": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.2.2.tgz#3103a9abe22f742b6d406ecd3cd49b774919b406" + integrity sha512-KWfky/58vubwtS0hLqEnrWJjsMGaOeSBn90Ezn5Jeg9Z8KKHmELbP1yGylMlm5N6TPKeY9A2+UaSYLdxahg01w== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-sticky-regex@^7.0.0", "@babel/plugin-transform-sticky-regex@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.2.0.tgz#a1e454b5995560a9c1e0d537dfc15061fd2687e1" + integrity sha512-KKYCoGaRAf+ckH8gEL3JHUaFVyNHKe3ASNsZ+AlktgHevvxGigoIttrEJb8iKN03Q7Eazlv1s6cx2B2cQ3Jabw== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-regex" "^7.0.0" + +"@babel/plugin-transform-template-literals@^7.0.0", "@babel/plugin-transform-template-literals@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.2.0.tgz#d87ed01b8eaac7a92473f608c97c089de2ba1e5b" + integrity sha512-FkPix00J9A/XWXv4VoKJBMeSkyY9x/TqIh76wzcdfl57RJJcf8CehQ08uwfhCDNtRQYtHQKBTwKZDEyjE13Lwg== + dependencies: + "@babel/helper-annotate-as-pure" "^7.0.0" + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-typeof-symbol@^7.0.0", "@babel/plugin-transform-typeof-symbol@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.2.0.tgz#117d2bcec2fbf64b4b59d1f9819894682d29f2b2" + integrity sha512-2LNhETWYxiYysBtrBTqL8+La0jIoQQnIScUJc74OYvUGRmkskNY4EzLCnjHBzdmb38wqtTaixpo1NctEcvMDZw== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-typescript@^7.1.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.2.0.tgz#bce7c06300434de6a860ae8acf6a442ef74a99d1" + integrity sha512-EnI7i2/gJ7ZNr2MuyvN2Hu+BHJENlxWte5XygPvfj/MbvtOkWor9zcnHpMMQL2YYaaCcqtIvJUyJ7QVfoGs7ew== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-syntax-typescript" "^7.2.0" + +"@babel/plugin-transform-unicode-regex@^7.0.0", "@babel/plugin-transform-unicode-regex@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.2.0.tgz#4eb8db16f972f8abb5062c161b8b115546ade08b" + integrity sha512-m48Y0lMhrbXEJnVUaYly29jRXbQ3ksxPrS1Tg8t+MHqzXhtBYAvI51euOBaoAlZLPHsieY9XPVMf80a5x0cPcA== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-regex" "^7.0.0" + regexpu-core "^4.1.3" + +"@babel/preset-env@7.1.6": + version "7.1.6" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.1.6.tgz#a0bf4b96b6bfcf6e000afc5b72b4abe7cc13ae97" + integrity sha512-YIBfpJNQMBkb6MCkjz/A9J76SNCSuGVamOVBgoUkLzpJD/z8ghHi9I42LQ4pulVX68N/MmImz6ZTixt7Azgexw== + dependencies: + "@babel/helper-module-imports" "^7.0.0" + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-proposal-async-generator-functions" "^7.1.0" + "@babel/plugin-proposal-json-strings" "^7.0.0" + "@babel/plugin-proposal-object-rest-spread" "^7.0.0" + "@babel/plugin-proposal-optional-catch-binding" "^7.0.0" + "@babel/plugin-proposal-unicode-property-regex" "^7.0.0" + "@babel/plugin-syntax-async-generators" "^7.0.0" + "@babel/plugin-syntax-object-rest-spread" "^7.0.0" + "@babel/plugin-syntax-optional-catch-binding" "^7.0.0" + "@babel/plugin-transform-arrow-functions" "^7.0.0" + "@babel/plugin-transform-async-to-generator" "^7.1.0" + "@babel/plugin-transform-block-scoped-functions" "^7.0.0" + "@babel/plugin-transform-block-scoping" "^7.1.5" + "@babel/plugin-transform-classes" "^7.1.0" + "@babel/plugin-transform-computed-properties" "^7.0.0" + "@babel/plugin-transform-destructuring" "^7.0.0" + "@babel/plugin-transform-dotall-regex" "^7.0.0" + "@babel/plugin-transform-duplicate-keys" "^7.0.0" + "@babel/plugin-transform-exponentiation-operator" "^7.1.0" + "@babel/plugin-transform-for-of" "^7.0.0" + "@babel/plugin-transform-function-name" "^7.1.0" + "@babel/plugin-transform-literals" "^7.0.0" + "@babel/plugin-transform-modules-amd" "^7.1.0" + "@babel/plugin-transform-modules-commonjs" "^7.1.0" + "@babel/plugin-transform-modules-systemjs" "^7.0.0" + "@babel/plugin-transform-modules-umd" "^7.1.0" + "@babel/plugin-transform-new-target" "^7.0.0" + "@babel/plugin-transform-object-super" "^7.1.0" + "@babel/plugin-transform-parameters" "^7.1.0" + "@babel/plugin-transform-regenerator" "^7.0.0" + "@babel/plugin-transform-shorthand-properties" "^7.0.0" + "@babel/plugin-transform-spread" "^7.0.0" + "@babel/plugin-transform-sticky-regex" "^7.0.0" + "@babel/plugin-transform-template-literals" "^7.0.0" + "@babel/plugin-transform-typeof-symbol" "^7.0.0" + "@babel/plugin-transform-unicode-regex" "^7.0.0" + browserslist "^4.1.0" + invariant "^2.2.2" + js-levenshtein "^1.1.3" + semver "^5.3.0" + +"@babel/preset-env@^7.0.0": + version "7.2.3" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.2.3.tgz#948c8df4d4609c99c7e0130169f052ea6a7a8933" + integrity sha512-AuHzW7a9rbv5WXmvGaPX7wADxFkZIqKlbBh1dmZUQp4iwiPpkE/Qnrji6SC4UQCQzvWY/cpHET29eUhXS9cLPw== + dependencies: + "@babel/helper-module-imports" "^7.0.0" + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-proposal-async-generator-functions" "^7.2.0" + "@babel/plugin-proposal-json-strings" "^7.2.0" + "@babel/plugin-proposal-object-rest-spread" "^7.2.0" + "@babel/plugin-proposal-optional-catch-binding" "^7.2.0" + "@babel/plugin-proposal-unicode-property-regex" "^7.2.0" + "@babel/plugin-syntax-async-generators" "^7.2.0" + "@babel/plugin-syntax-object-rest-spread" "^7.2.0" + "@babel/plugin-syntax-optional-catch-binding" "^7.2.0" + "@babel/plugin-transform-arrow-functions" "^7.2.0" + "@babel/plugin-transform-async-to-generator" "^7.2.0" + "@babel/plugin-transform-block-scoped-functions" "^7.2.0" + "@babel/plugin-transform-block-scoping" "^7.2.0" + "@babel/plugin-transform-classes" "^7.2.0" + "@babel/plugin-transform-computed-properties" "^7.2.0" + "@babel/plugin-transform-destructuring" "^7.2.0" + "@babel/plugin-transform-dotall-regex" "^7.2.0" + "@babel/plugin-transform-duplicate-keys" "^7.2.0" + "@babel/plugin-transform-exponentiation-operator" "^7.2.0" + "@babel/plugin-transform-for-of" "^7.2.0" + "@babel/plugin-transform-function-name" "^7.2.0" + "@babel/plugin-transform-literals" "^7.2.0" + "@babel/plugin-transform-modules-amd" "^7.2.0" + "@babel/plugin-transform-modules-commonjs" "^7.2.0" + "@babel/plugin-transform-modules-systemjs" "^7.2.0" + "@babel/plugin-transform-modules-umd" "^7.2.0" + "@babel/plugin-transform-new-target" "^7.0.0" + "@babel/plugin-transform-object-super" "^7.2.0" + "@babel/plugin-transform-parameters" "^7.2.0" + "@babel/plugin-transform-regenerator" "^7.0.0" + "@babel/plugin-transform-shorthand-properties" "^7.2.0" + "@babel/plugin-transform-spread" "^7.2.0" + "@babel/plugin-transform-sticky-regex" "^7.2.0" + "@babel/plugin-transform-template-literals" "^7.2.0" + "@babel/plugin-transform-typeof-symbol" "^7.2.0" + "@babel/plugin-transform-unicode-regex" "^7.2.0" + browserslist "^4.3.4" + invariant "^2.2.2" + js-levenshtein "^1.1.3" + semver "^5.3.0" + +"@babel/preset-react@7.0.0", "@babel/preset-react@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/preset-react/-/preset-react-7.0.0.tgz#e86b4b3d99433c7b3e9e91747e2653958bc6b3c0" + integrity sha512-oayxyPS4Zj+hF6Et11BwuBkmpgT/zMxyuZgFrMeZID6Hdh3dGlk4sHCAhdBCpuCKW2ppBfl2uCCetlrUIJRY3w== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-transform-react-display-name" "^7.0.0" + "@babel/plugin-transform-react-jsx" "^7.0.0" + "@babel/plugin-transform-react-jsx-self" "^7.0.0" + "@babel/plugin-transform-react-jsx-source" "^7.0.0" + +"@babel/preset-typescript@7.1.0": + version "7.1.0" + resolved "https://registry.yarnpkg.com/@babel/preset-typescript/-/preset-typescript-7.1.0.tgz#49ad6e2084ff0bfb5f1f7fb3b5e76c434d442c7f" + integrity sha512-LYveByuF9AOM8WrsNne5+N79k1YxjNB6gmpCQsnuSBAcV8QUeB+ZUxQzL7Rz7HksPbahymKkq2qBR+o36ggFZA== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-transform-typescript" "^7.1.0" + +"@babel/runtime@7.1.5": + version "7.1.5" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.1.5.tgz#4170907641cf1f61508f563ece3725150cc6fe39" + integrity sha512-xKnPpXG/pvK1B90JkwwxSGii90rQGKtzcMt2gI5G6+M0REXaq6rOHsGC2ay6/d0Uje7zzvSzjEzfR3ENhFlrfA== + dependencies: + regenerator-runtime "^0.12.0" + +"@babel/runtime@^7.0.0", "@babel/runtime@^7.1.2", "@babel/runtime@^7.2.0": + version "7.4.4" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.4.4.tgz#dc2e34982eb236803aa27a07fea6857af1b9171d" + integrity sha512-w0+uT71b6Yi7i5SE0co4NioIpSYS6lLiXvCzWzGSKvpK5vdQtCbICHMj+gbAKAOtxiV6HsVh/MBdaF9EQ6faSg== + dependencies: + regenerator-runtime "^0.13.2" + +"@babel/template@^7.1.0", "@babel/template@^7.1.2", "@babel/template@^7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.2.2.tgz#005b3fdf0ed96e88041330379e0da9a708eb2907" + integrity sha512-zRL0IMM02AUDwghf5LMSSDEz7sBCO2YnNmpg3uWTZj/v1rcG2BmQUvaGU8GhU8BvfMh1k2KIAYZ7Ji9KXPUg7g== + dependencies: + "@babel/code-frame" "^7.0.0" + "@babel/parser" "^7.2.2" + "@babel/types" "^7.2.2" + +"@babel/traverse@^7.0.0", "@babel/traverse@^7.1.0", "@babel/traverse@^7.1.5", "@babel/traverse@^7.1.6", "@babel/traverse@^7.2.2", "@babel/traverse@^7.2.3": + version "7.2.3" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.2.3.tgz#7ff50cefa9c7c0bd2d81231fdac122f3957748d8" + integrity sha512-Z31oUD/fJvEWVR0lNZtfgvVt512ForCTNKYcJBGbPb1QZfve4WGH8Wsy7+Mev33/45fhP/hwQtvgusNdcCMgSw== + dependencies: + "@babel/code-frame" "^7.0.0" + "@babel/generator" "^7.2.2" + "@babel/helper-function-name" "^7.1.0" + "@babel/helper-split-export-declaration" "^7.0.0" + "@babel/parser" "^7.2.3" + "@babel/types" "^7.2.2" + debug "^4.1.0" + globals "^11.1.0" + lodash "^4.17.10" + +"@babel/types@^7.0.0", "@babel/types@^7.1.6", "@babel/types@^7.2.0", "@babel/types@^7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.2.2.tgz#44e10fc24e33af524488b716cdaee5360ea8ed1e" + integrity sha512-fKCuD6UFUMkR541eDWL+2ih/xFZBXPOg/7EQFeTluMDebfqR4jrpaCjLhkWlQS4hT6nRa2PMEgXKbRB5/H2fpg== + dependencies: + esutils "^2.0.2" + lodash "^4.17.10" + to-fast-properties "^2.0.0" + +"@csstools/convert-colors@^1.4.0": + version "1.4.0" + resolved "https://registry.yarnpkg.com/@csstools/convert-colors/-/convert-colors-1.4.0.tgz#ad495dc41b12e75d588c6db8b9834f08fa131eb7" + integrity sha512-5a6wqoJV/xEdbRNKVo6I4hO3VjyDq//8q2f9I6PBAvMesJHFauXDorcNCsr9RzvsZnaWi5NYCcfyqP1QeFHFbw== + +"@material-ui/core@^3.9.3": + version "3.9.3" + resolved "https://registry.yarnpkg.com/@material-ui/core/-/core-3.9.3.tgz#d378c1f4beb18df9a534ca7258c2c33fb8e0e51f" + integrity sha512-REIj62+zEvTgI/C//YL4fZxrCVIySygmpZglsu/Nl5jPqy3CDjZv1F9ubBYorHqmRgeVPh64EghMMWqk4egmfg== + dependencies: + "@babel/runtime" "^7.2.0" + "@material-ui/system" "^3.0.0-alpha.0" + "@material-ui/utils" "^3.0.0-alpha.2" + "@types/jss" "^9.5.6" + "@types/react-transition-group" "^2.0.8" + brcast "^3.0.1" + classnames "^2.2.5" + csstype "^2.5.2" + debounce "^1.1.0" + deepmerge "^3.0.0" + dom-helpers "^3.2.1" + hoist-non-react-statics "^3.2.1" + is-plain-object "^2.0.4" + jss "^9.8.7" + jss-camel-case "^6.0.0" + jss-default-unit "^8.0.2" + jss-global "^3.0.0" + jss-nested "^6.0.1" + jss-props-sort "^6.0.0" + jss-vendor-prefixer "^7.0.0" + normalize-scroll-left "^0.1.2" + popper.js "^1.14.1" + prop-types "^15.6.0" + react-event-listener "^0.6.2" + react-transition-group "^2.2.1" + recompose "0.28.0 - 0.30.0" + warning "^4.0.1" + +"@material-ui/system@^3.0.0-alpha.0": + version "3.0.0-alpha.2" + resolved "https://registry.yarnpkg.com/@material-ui/system/-/system-3.0.0-alpha.2.tgz#096e80c8bb0f70aea435b9e38ea7749ee77b4e46" + integrity sha512-odmxQ0peKpP7RQBQ8koly06YhsPzcoVib1vByVPBH4QhwqBXuYoqlCjt02846fYspAqkrWzjxnWUD311EBbxOA== + dependencies: + "@babel/runtime" "^7.2.0" + deepmerge "^3.0.0" + prop-types "^15.6.0" + warning "^4.0.1" + +"@material-ui/utils@^3.0.0-alpha.2": + version "3.0.0-alpha.3" + resolved "https://registry.yarnpkg.com/@material-ui/utils/-/utils-3.0.0-alpha.3.tgz#836c62ea46f5ffc6f0b5ea05ab814704a86908b1" + integrity sha512-rwMdMZptX0DivkqBuC+Jdq7BYTXwqKai5G5ejPpuEDKpWzi1Oxp+LygGw329FrKpuKeiqpcymlqJTjmy+quWng== + dependencies: + "@babel/runtime" "^7.2.0" + prop-types "^15.6.0" + react-is "^16.6.3" + +"@mrmlnc/readdir-enhanced@^2.2.1": + version "2.2.1" + resolved "https://registry.yarnpkg.com/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz#524af240d1a360527b730475ecfa1344aa540dde" + integrity sha512-bPHp6Ji8b41szTOcaP63VlnbbO5Ny6dwAATtY6JTjh5N2OLrb5Qk/Th5cRkRQhkWCt+EJsYrNB0MiL+Gpn6e3g== + dependencies: + call-me-maybe "^1.0.1" + glob-to-regexp "^0.3.0" + +"@nodelib/fs.stat@^1.1.2": + version "1.1.3" + resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-1.1.3.tgz#2b5a3ab3f918cca48a8c754c08168e3f03eba61b" + integrity sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw== + +"@svgr/core@^2.4.1": + version "2.4.1" + resolved "https://registry.yarnpkg.com/@svgr/core/-/core-2.4.1.tgz#03a407c28c4a1d84305ae95021e8eabfda8fa731" + integrity sha512-2i1cUbjpKt1KcIP05e10vkmu9Aedp32EFqVcSQ08onbB8lVxJqMPci3Hr54aI14S9cLg4JdcpO0D35HHUtT8oQ== + dependencies: + camelcase "^5.0.0" + cosmiconfig "^5.0.6" + h2x-core "^1.1.0" + h2x-plugin-jsx "^1.1.0" + merge-deep "^3.0.2" + prettier "^1.14.2" + svgo "^1.0.5" + +"@svgr/webpack@2.4.1": + version "2.4.1" + resolved "https://registry.yarnpkg.com/@svgr/webpack/-/webpack-2.4.1.tgz#68bc581ecb4c09fadeb7936bd1afaceb9da960d2" + integrity sha512-sMHYq0zbMtSHcc9kVfkYI2zrl88u4mKGyQLgKt7r+ul5nITcncm/EPBhzEUrJY5izdlaU6EvyH8zOhZnfaSmOA== + dependencies: + "@babel/core" "^7.0.1" + "@babel/plugin-transform-react-constant-elements" "^7.0.0" + "@babel/preset-env" "^7.0.0" + "@babel/preset-react" "^7.0.0" + "@svgr/core" "^2.4.1" + loader-utils "^1.1.0" + +"@types/jss@^9.5.6": + version "9.5.8" + resolved "https://registry.yarnpkg.com/@types/jss/-/jss-9.5.8.tgz#258391f42211c042fc965508d505cbdc579baa5b" + integrity sha512-bBbHvjhm42UKki+wZpR89j73ykSXg99/bhuKuYYePtpma3ZAnmeGnl0WxXiZhPGsIfzKwCUkpPC0jlrVMBfRxA== + dependencies: + csstype "^2.0.0" + indefinite-observable "^1.0.1" + +"@types/node@^10.3.2": + version "10.12.18" + resolved "https://registry.yarnpkg.com/@types/node/-/node-10.12.18.tgz#1d3ca764718915584fcd9f6344621b7672665c67" + integrity sha512-fh+pAqt4xRzPfqA6eh3Z2y6fyZavRIumvjhaCL753+TVkGKGhpPeyrJG2JftD0T9q4GF00KjefsQ+PQNDdWQaQ== + +"@types/prop-types@*": + version "15.7.1" + resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.1.tgz#f1a11e7babb0c3cad68100be381d1e064c68f1f6" + integrity sha512-CFzn9idOEpHrgdw8JsoTkaDDyRWk1jrzIV8djzcgpq0y9tG4B4lFT+Nxh52DVpDXV+n4+NPNv7M1Dj5uMp6XFg== + +"@types/q@^1.5.1": + version "1.5.1" + resolved "https://registry.yarnpkg.com/@types/q/-/q-1.5.1.tgz#48fd98c1561fe718b61733daed46ff115b496e18" + integrity sha512-eqz8c/0kwNi/OEHQfvIuJVLTst3in0e7uTKeuY+WL/zfKn0xVujOTp42bS/vUUokhK5P2BppLd9JXMOMHcgbjA== + +"@types/react-transition-group@^2.0.8": + version "2.9.0" + resolved "https://registry.yarnpkg.com/@types/react-transition-group/-/react-transition-group-2.9.0.tgz#2a74a885432d673a93a2c93c34ce5dbf9f1426f8" + integrity sha512-hP7vUaZMVSWKxo133P8U51U6UZ7+pbY+eAQb8+p6SZ2rB1rj3mOTDgTzhhi+R2SCB4S+sWekAAGoxdiZPG0ReQ== + dependencies: + "@types/react" "*" + +"@types/react@*": + version "16.8.14" + resolved "https://registry.yarnpkg.com/@types/react/-/react-16.8.14.tgz#b561bfabeb8f60d12e6d4766367e7a9ae927aa18" + integrity sha512-26tFVJ1omGmzIdFTFmnC5zhz1GTaqCjxgUxV4KzWvsybF42P7/j4RBn6UeO3KbHPXqKWZszMXMoI65xIWm954A== + dependencies: + "@types/prop-types" "*" + csstype "^2.2.0" + +"@types/tapable@1.0.2": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@types/tapable/-/tapable-1.0.2.tgz#e13182e1b69871a422d7863e11a4a6f5b814a4bd" + integrity sha512-42zEJkBpNfMEAvWR5WlwtTH22oDzcMjFsL9gDGExwF8X8WvAiw7Vwop7hPw03QT8TKfec83LwbHj6SvpqM4ELQ== + +"@webassemblyjs/ast@1.7.6": + version "1.7.6" + resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.7.6.tgz#3ef8c45b3e5e943a153a05281317474fef63e21e" + integrity sha512-8nkZS48EVsMUU0v6F1LCIOw4RYWLm2plMtbhFTjNgeXmsTNLuU3xTRtnljt9BFQB+iPbLRobkNrCWftWnNC7wQ== + dependencies: + "@webassemblyjs/helper-module-context" "1.7.6" + "@webassemblyjs/helper-wasm-bytecode" "1.7.6" + "@webassemblyjs/wast-parser" "1.7.6" + mamacro "^0.0.3" + +"@webassemblyjs/floating-point-hex-parser@1.7.6": + version "1.7.6" + resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.7.6.tgz#7cb37d51a05c3fe09b464ae7e711d1ab3837801f" + integrity sha512-VBOZvaOyBSkPZdIt5VBMg3vPWxouuM13dPXGWI1cBh3oFLNcFJ8s9YA7S9l4mPI7+Q950QqOmqj06oa83hNWBA== + +"@webassemblyjs/helper-api-error@1.7.6": + version "1.7.6" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.7.6.tgz#99b7e30e66f550a2638299a109dda84a622070ef" + integrity sha512-SCzhcQWHXfrfMSKcj8zHg1/kL9kb3aa5TN4plc/EREOs5Xop0ci5bdVBApbk2yfVi8aL+Ly4Qpp3/TRAUInjrg== + +"@webassemblyjs/helper-buffer@1.7.6": + version "1.7.6" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.7.6.tgz#ba0648be12bbe560c25c997e175c2018df39ca3e" + integrity sha512-1/gW5NaGsEOZ02fjnFiU8/OEEXU1uVbv2um0pQ9YVL3IHSkyk6xOwokzyqqO1qDZQUAllb+V8irtClPWntbVqw== + +"@webassemblyjs/helper-code-frame@1.7.6": + version "1.7.6" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.7.6.tgz#5a94d21b0057b69a7403fca0c253c3aaca95b1a5" + integrity sha512-+suMJOkSn9+vEvDvgyWyrJo5vJsWSDXZmJAjtoUq4zS4eqHyXImpktvHOZwXp1XQjO5H+YQwsBgqTQEc0J/5zg== + dependencies: + "@webassemblyjs/wast-printer" "1.7.6" + +"@webassemblyjs/helper-fsm@1.7.6": + version "1.7.6" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-fsm/-/helper-fsm-1.7.6.tgz#ae1741c6f6121213c7a0b587fb964fac492d3e49" + integrity sha512-HCS6KN3wgxUihGBW7WFzEC/o8Eyvk0d56uazusnxXthDPnkWiMv+kGi9xXswL2cvfYfeK5yiM17z2K5BVlwypw== + +"@webassemblyjs/helper-module-context@1.7.6": + version "1.7.6" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-module-context/-/helper-module-context-1.7.6.tgz#116d19a51a6cebc8900ad53ca34ff8269c668c23" + integrity sha512-e8/6GbY7OjLM+6OsN7f2krC2qYVNaSr0B0oe4lWdmq5sL++8dYDD1TFbD1TdAdWMRTYNr/Qq7ovXWzia2EbSjw== + dependencies: + mamacro "^0.0.3" + +"@webassemblyjs/helper-wasm-bytecode@1.7.6": + version "1.7.6" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.7.6.tgz#98e515eaee611aa6834eb5f6a7f8f5b29fefb6f1" + integrity sha512-PzYFCb7RjjSdAOljyvLWVqd6adAOabJW+8yRT+NWhXuf1nNZWH+igFZCUK9k7Cx7CsBbzIfXjJc7u56zZgFj9Q== + +"@webassemblyjs/helper-wasm-section@1.7.6": + version "1.7.6" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.7.6.tgz#783835867bdd686df7a95377ab64f51a275e8333" + integrity sha512-3GS628ppDPSuwcYlQ7cDCGr4W2n9c4hLzvnRKeuz+lGsJSmc/ADVoYpm1ts2vlB1tGHkjtQMni+yu8mHoMlKlA== + dependencies: + "@webassemblyjs/ast" "1.7.6" + "@webassemblyjs/helper-buffer" "1.7.6" + "@webassemblyjs/helper-wasm-bytecode" "1.7.6" + "@webassemblyjs/wasm-gen" "1.7.6" + +"@webassemblyjs/ieee754@1.7.6": + version "1.7.6" + resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.7.6.tgz#c34fc058f2f831fae0632a8bb9803cf2d3462eb1" + integrity sha512-V4cIp0ruyw+hawUHwQLn6o2mFEw4t50tk530oKsYXQhEzKR+xNGDxs/SFFuyTO7X3NzEu4usA3w5jzhl2RYyzQ== + dependencies: + "@xtuc/ieee754" "^1.2.0" + +"@webassemblyjs/leb128@1.7.6": + version "1.7.6" + resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.7.6.tgz#197f75376a29f6ed6ace15898a310d871d92f03b" + integrity sha512-ojdlG8WpM394lBow4ncTGJoIVZ4aAtNOWHhfAM7m7zprmkVcKK+2kK5YJ9Bmj6/ketTtOn7wGSHCtMt+LzqgYQ== + dependencies: + "@xtuc/long" "4.2.1" + +"@webassemblyjs/utf8@1.7.6": + version "1.7.6" + resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.7.6.tgz#eb62c66f906af2be70de0302e29055d25188797d" + integrity sha512-oId+tLxQ+AeDC34ELRYNSqJRaScB0TClUU6KQfpB8rNT6oelYlz8axsPhf6yPTg7PBJ/Z5WcXmUYiHEWgbbHJw== + +"@webassemblyjs/wasm-edit@1.7.6": + version "1.7.6" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.7.6.tgz#fa41929160cd7d676d4c28ecef420eed5b3733c5" + integrity sha512-pTNjLO3o41v/Vz9VFLl+I3YLImpCSpodFW77pNoH4agn5I6GgSxXHXtvWDTvYJFty0jSeXZWLEmbaSIRUDlekg== + dependencies: + "@webassemblyjs/ast" "1.7.6" + "@webassemblyjs/helper-buffer" "1.7.6" + "@webassemblyjs/helper-wasm-bytecode" "1.7.6" + "@webassemblyjs/helper-wasm-section" "1.7.6" + "@webassemblyjs/wasm-gen" "1.7.6" + "@webassemblyjs/wasm-opt" "1.7.6" + "@webassemblyjs/wasm-parser" "1.7.6" + "@webassemblyjs/wast-printer" "1.7.6" + +"@webassemblyjs/wasm-gen@1.7.6": + version "1.7.6" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.7.6.tgz#695ac38861ab3d72bf763c8c75e5f087ffabc322" + integrity sha512-mQvFJVumtmRKEUXMohwn8nSrtjJJl6oXwF3FotC5t6e2hlKMh8sIaW03Sck2MDzw9xPogZD7tdP5kjPlbH9EcQ== + dependencies: + "@webassemblyjs/ast" "1.7.6" + "@webassemblyjs/helper-wasm-bytecode" "1.7.6" + "@webassemblyjs/ieee754" "1.7.6" + "@webassemblyjs/leb128" "1.7.6" + "@webassemblyjs/utf8" "1.7.6" + +"@webassemblyjs/wasm-opt@1.7.6": + version "1.7.6" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.7.6.tgz#fbafa78e27e1a75ab759a4b658ff3d50b4636c21" + integrity sha512-go44K90fSIsDwRgtHhX14VtbdDPdK2sZQtZqUcMRvTojdozj5tLI0VVJAzLCfz51NOkFXezPeVTAYFqrZ6rI8Q== + dependencies: + "@webassemblyjs/ast" "1.7.6" + "@webassemblyjs/helper-buffer" "1.7.6" + "@webassemblyjs/wasm-gen" "1.7.6" + "@webassemblyjs/wasm-parser" "1.7.6" + +"@webassemblyjs/wasm-parser@1.7.6": + version "1.7.6" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.7.6.tgz#84eafeeff405ad6f4c4b5777d6a28ae54eed51fe" + integrity sha512-t1T6TfwNY85pDA/HWPA8kB9xA4sp9ajlRg5W7EKikqrynTyFo+/qDzIpvdkOkOGjlS6d4n4SX59SPuIayR22Yg== + dependencies: + "@webassemblyjs/ast" "1.7.6" + "@webassemblyjs/helper-api-error" "1.7.6" + "@webassemblyjs/helper-wasm-bytecode" "1.7.6" + "@webassemblyjs/ieee754" "1.7.6" + "@webassemblyjs/leb128" "1.7.6" + "@webassemblyjs/utf8" "1.7.6" + +"@webassemblyjs/wast-parser@1.7.6": + version "1.7.6" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-parser/-/wast-parser-1.7.6.tgz#ca4d20b1516e017c91981773bd7e819d6bd9c6a7" + integrity sha512-1MaWTErN0ziOsNUlLdvwS+NS1QWuI/kgJaAGAMHX8+fMJFgOJDmN/xsG4h/A1Gtf/tz5VyXQciaqHZqp2q0vfg== + dependencies: + "@webassemblyjs/ast" "1.7.6" + "@webassemblyjs/floating-point-hex-parser" "1.7.6" + "@webassemblyjs/helper-api-error" "1.7.6" + "@webassemblyjs/helper-code-frame" "1.7.6" + "@webassemblyjs/helper-fsm" "1.7.6" + "@xtuc/long" "4.2.1" + mamacro "^0.0.3" + +"@webassemblyjs/wast-printer@1.7.6": + version "1.7.6" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.7.6.tgz#a6002c526ac5fa230fe2c6d2f1bdbf4aead43a5e" + integrity sha512-vHdHSK1tOetvDcl1IV1OdDeGNe/NDDQ+KzuZHMtqTVP1xO/tZ/IKNpj5BaGk1OYFdsDWQqb31PIwdEyPntOWRQ== + dependencies: + "@webassemblyjs/ast" "1.7.6" + "@webassemblyjs/wast-parser" "1.7.6" + "@xtuc/long" "4.2.1" + +"@xtuc/ieee754@^1.2.0": + version "1.2.0" + resolved "https://registry.yarnpkg.com/@xtuc/ieee754/-/ieee754-1.2.0.tgz#eef014a3145ae477a1cbc00cd1e552336dceb790" + integrity sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA== + +"@xtuc/long@4.2.1": + version "4.2.1" + resolved "https://registry.yarnpkg.com/@xtuc/long/-/long-4.2.1.tgz#5c85d662f76fa1d34575766c5dcd6615abcd30d8" + integrity sha512-FZdkNBDqBRHKQ2MEbSC17xnPFOhZxeJ2YGSfr2BKf3sujG49Qe3bB+rGCwQfIaA7WHnGeGkSijX4FuBCdrzW/g== + +abab@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.0.tgz#aba0ab4c5eee2d4c79d3487d85450fb2376ebb0f" + integrity sha512-sY5AXXVZv4Y1VACTtR11UJCPHHudgY5i26Qj5TypE6DKlIApbwb5uqhXcJ5UUGbvZNRh7EeIoW+LrJumBsKp7w== + +abbrev@1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" + integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q== + +accepts@~1.3.4, accepts@~1.3.5: + version "1.3.5" + resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.5.tgz#eb777df6011723a3b14e8a72c0805c8e86746bd2" + integrity sha1-63d99gEXI6OxTopywIBcjoZ0a9I= + dependencies: + mime-types "~2.1.18" + negotiator "0.6.1" + +acorn-dynamic-import@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/acorn-dynamic-import/-/acorn-dynamic-import-3.0.0.tgz#901ceee4c7faaef7e07ad2a47e890675da50a278" + integrity sha512-zVWV8Z8lislJoOKKqdNMOB+s6+XV5WERty8MnKBeFgwA+19XJjJHs2RP5dzM57FftIs+jQnRToLiWazKr6sSWg== + dependencies: + acorn "^5.0.0" + +acorn-globals@^4.1.0, acorn-globals@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-4.3.0.tgz#e3b6f8da3c1552a95ae627571f7dd6923bb54103" + integrity sha512-hMtHj3s5RnuhvHPowpBYvJVj3rAar82JiDQHvGs1zO0l10ocX/xEdBShNHTJaboucJUsScghp74pH3s7EnHHQw== + dependencies: + acorn "^6.0.1" + acorn-walk "^6.0.1" + +acorn-jsx@^5.0.0: + version "5.0.1" + resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.0.1.tgz#32a064fd925429216a09b141102bfdd185fae40e" + integrity sha512-HJ7CfNHrfJLlNTzIEUTj43LNWGkqpRLxm3YjAlcD0ACydk9XynzYsCBHxut+iqt+1aBXkx9UP/w/ZqMr13XIzg== + +acorn-walk@^6.0.1: + version "6.1.1" + resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-6.1.1.tgz#d363b66f5fac5f018ff9c3a1e7b6f8e310cc3913" + integrity sha512-OtUw6JUTgxA2QoqqmrmQ7F2NYqiBPi/L2jqHyFtllhOUvXYQXf0Z1CYUinIfyT4bTCGmrA7gX9FvHA81uzCoVw== + +acorn@^5.0.0, acorn@^5.5.3, acorn@^5.6.2: + version "5.7.3" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.7.3.tgz#67aa231bf8812974b85235a96771eb6bd07ea279" + integrity sha512-T/zvzYRfbVojPWahDsE5evJdHb3oJoQfFbsrKM7w5Zcs++Tr257tia3BmMP8XYVjp1S9RZXQMh7gao96BlqZOw== + +acorn@^6.0.1, acorn@^6.0.2, acorn@^6.0.4: + version "6.0.5" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.0.5.tgz#81730c0815f3f3b34d8efa95cb7430965f4d887a" + integrity sha512-i33Zgp3XWtmZBMNvCr4azvOFeWVw1Rk6p3hfi3LUDvIFraOMywb1kAtrbi+med14m4Xfpqm3zRZMT+c0FNE7kg== + +address@1.0.3, address@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/address/-/address-1.0.3.tgz#b5f50631f8d6cec8bd20c963963afb55e06cbce9" + integrity sha512-z55ocwKBRLryBs394Sm3ushTtBeg6VAeuku7utSoSnsJKvKcnXFIyC6vh27n3rXyxSgkJBBCAvyOn7gSUcTYjg== + +aes-js@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/aes-js/-/aes-js-3.0.0.tgz#e21df10ad6c2053295bcbb8dab40b09dbea87e4d" + integrity sha1-4h3xCtbCBTKVvLuNq0Cwnb6ofk0= + +ajv-errors@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/ajv-errors/-/ajv-errors-1.0.1.tgz#f35986aceb91afadec4102fbd85014950cefa64d" + integrity sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ== + +ajv-keywords@^3.0.0, ajv-keywords@^3.1.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.2.0.tgz#e86b819c602cf8821ad637413698f1dec021847a" + integrity sha1-6GuBnGAs+IIa1jdBNpjx3sAhhHo= + +ajv@^6.0.1, ajv@^6.1.0, ajv@^6.5.3, ajv@^6.5.5: + version "6.6.2" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.6.2.tgz#caceccf474bf3fc3ce3b147443711a24063cc30d" + integrity sha512-FBHEW6Jf5TB9MGBgUUA9XHkTbjXYfAUjY43ACMfmdMRHniyoMHjHjzD50OK8LGDWQwp4rWEsIq5kEqq7rvIM1g== + dependencies: + fast-deep-equal "^2.0.1" + fast-json-stable-stringify "^2.0.0" + json-schema-traverse "^0.4.1" + uri-js "^4.2.2" + +alphanum-sort@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/alphanum-sort/-/alphanum-sort-1.0.2.tgz#97a1119649b211ad33691d9f9f486a8ec9fbe0a3" + integrity sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM= + +ansi-colors@^3.0.0: + version "3.2.3" + resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-3.2.3.tgz#57d35b8686e851e2cc04c403f1c00203976a1813" + integrity sha512-LEHHyuhlPY3TmuUYMh2oz89lTShfvgbmzaBcxve9t/9Wuy7Dwf4yoAKcND7KFT1HAQfqZ12qtc+DUrBMeKF9nw== + +ansi-escapes@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.1.0.tgz#f73207bb81207d75fd6c83f125af26eea378ca30" + integrity sha512-UgAb8H9D41AQnu/PbWlCofQVcnV4Gs2bBJi9eZPxfU/hgglFh3SMDMENRIqdr7H6XFnXdoknctFByVsCOotTVw== + +ansi-html@0.0.7: + version "0.0.7" + resolved "https://registry.yarnpkg.com/ansi-html/-/ansi-html-0.0.7.tgz#813584021962a9e9e6fd039f940d12f56ca7859e" + integrity sha1-gTWEAhliqenm/QOflA0S9WynhZ4= + +ansi-regex@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" + integrity sha1-w7M6te42DYbg5ijwRorn7yfWVN8= + +ansi-regex@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998" + integrity sha1-7QMXwyIGT3lGbAKWa922Bas32Zg= + +ansi-regex@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.0.0.tgz#70de791edf021404c3fd615aa89118ae0432e5a9" + integrity sha512-iB5Dda8t/UqpPI/IjsejXu5jOGDrzn41wJyljwPH65VCIbk6+1BzFIMJGFwTNrYXT1CrD+B4l19U7awiQ8rk7w== + +ansi-styles@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" + integrity sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4= + +ansi-styles@^3.2.0, ansi-styles@^3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" + integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== + dependencies: + color-convert "^1.9.0" + +any-promise@1.3.0, any-promise@^1.0.0, any-promise@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/any-promise/-/any-promise-1.3.0.tgz#abc6afeedcea52e809cdc0376aed3ce39635d17f" + integrity sha1-q8av7tzqUugJzcA3au0845Y10X8= + +anymatch@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-2.0.0.tgz#bcb24b4f37934d9aa7ac17b4adaf89e7c76ef2eb" + integrity sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw== + dependencies: + micromatch "^3.1.4" + normalize-path "^2.1.1" + +append-transform@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/append-transform/-/append-transform-0.4.0.tgz#d76ebf8ca94d276e247a36bad44a4b74ab611991" + integrity sha1-126/jKlNJ24keja61EpLdKthGZE= + dependencies: + default-require-extensions "^1.0.0" + +aproba@^1.0.3, aproba@^1.1.1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" + integrity sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw== + +are-we-there-yet@~1.1.2: + version "1.1.5" + resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz#4b35c2944f062a8bfcda66410760350fe9ddfc21" + integrity sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w== + dependencies: + delegates "^1.0.0" + readable-stream "^2.0.6" + +argparse@^1.0.7: + version "1.0.10" + resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" + integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== + dependencies: + sprintf-js "~1.0.2" + +aria-query@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/aria-query/-/aria-query-3.0.0.tgz#65b3fcc1ca1155a8c9ae64d6eee297f15d5133cc" + integrity sha1-ZbP8wcoRVajJrmTW7uKX8V1RM8w= + dependencies: + ast-types-flow "0.0.7" + commander "^2.11.0" + +arr-diff@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-2.0.0.tgz#8f3b827f955a8bd669697e4a4256ac3ceae356cf" + integrity sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8= + dependencies: + arr-flatten "^1.0.1" + +arr-diff@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520" + integrity sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA= + +arr-flatten@^1.0.1, arr-flatten@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1" + integrity sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg== + +arr-union@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4" + integrity sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ= + +array-equal@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/array-equal/-/array-equal-1.0.0.tgz#8c2a5ef2472fd9ea742b04c77a75093ba2757c93" + integrity sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM= + +array-filter@~0.0.0: + version "0.0.1" + resolved "https://registry.yarnpkg.com/array-filter/-/array-filter-0.0.1.tgz#7da8cf2e26628ed732803581fd21f67cacd2eeec" + integrity sha1-fajPLiZijtcygDWB/SH2fKzS7uw= + +array-flatten@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" + integrity sha1-ml9pkFGx5wczKPKgCJaLZOopVdI= + +array-flatten@^2.1.0: + version "2.1.2" + resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-2.1.2.tgz#24ef80a28c1a893617e2149b0c6d0d788293b099" + integrity sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ== + +array-includes@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.0.3.tgz#184b48f62d92d7452bb31b323165c7f8bd02266d" + integrity sha1-GEtI9i2S10UrsxsyMWXH+L0CJm0= + dependencies: + define-properties "^1.1.2" + es-abstract "^1.7.0" + +array-map@~0.0.0: + version "0.0.0" + resolved "https://registry.yarnpkg.com/array-map/-/array-map-0.0.0.tgz#88a2bab73d1cf7bcd5c1b118a003f66f665fa662" + integrity sha1-iKK6tz0c97zVwbEYoAP2b2ZfpmI= + +array-reduce@~0.0.0: + version "0.0.0" + resolved "https://registry.yarnpkg.com/array-reduce/-/array-reduce-0.0.0.tgz#173899d3ffd1c7d9383e4479525dbe278cab5f2b" + integrity sha1-FziZ0//Rx9k4PkR5Ul2+J4yrXys= + +array-union@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39" + integrity sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk= + dependencies: + array-uniq "^1.0.1" + +array-uniq@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6" + integrity sha1-r2rId6Jcx/dOBYiUdThY39sk/bY= + +array-unique@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.2.1.tgz#a1d97ccafcbc2625cc70fadceb36a50c58b01a53" + integrity sha1-odl8yvy8JiXMcPrc6zalDFiwGlM= + +array-unique@^0.3.2: + version "0.3.2" + resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" + integrity sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg= + +arrify@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" + integrity sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0= + +asap@~2.0.3, asap@~2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46" + integrity sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY= + +asn1.js@^4.0.0: + version "4.10.1" + resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-4.10.1.tgz#b9c2bf5805f1e64aadeed6df3a2bfafb5a73f5a0" + integrity sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw== + dependencies: + bn.js "^4.0.0" + inherits "^2.0.1" + minimalistic-assert "^1.0.0" + +asn1@~0.2.3: + version "0.2.4" + resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.4.tgz#8d2475dfab553bb33e77b54e59e880bb8ce23136" + integrity sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg== + dependencies: + safer-buffer "~2.1.0" + +assert-plus@1.0.0, assert-plus@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" + integrity sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU= + +assert@^1.1.1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/assert/-/assert-1.4.1.tgz#99912d591836b5a6f5b345c0f07eefc08fc65d91" + integrity sha1-mZEtWRg2tab1s0XA8H7vwI/GXZE= + dependencies: + util "0.10.3" + +assign-symbols@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" + integrity sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c= + +ast-types-flow@0.0.7, ast-types-flow@^0.0.7: + version "0.0.7" + resolved "https://registry.yarnpkg.com/ast-types-flow/-/ast-types-flow-0.0.7.tgz#f70b735c6bca1a5c9c22d982c3e39e7feba3bdad" + integrity sha1-9wtzXGvKGlycItmCw+Oef+ujva0= + +astral-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-1.0.0.tgz#6c8c3fb827dd43ee3918f27b82782ab7658a6fd9" + integrity sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg== + +async-each@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.1.tgz#19d386a1d9edc6e7c1c85d388aedbcc56d33602d" + integrity sha1-GdOGodntxufByF04iu28xW0zYC0= + +async-eventemitter@^0.2.4: + version "0.2.4" + resolved "https://registry.yarnpkg.com/async-eventemitter/-/async-eventemitter-0.2.4.tgz#f5e7c8ca7d3e46aab9ec40a292baf686a0bafaca" + integrity sha512-pd20BwL7Yt1zwDFy+8MX8F1+WCT8aQeKj0kQnTrH9WaeRETlRamVhD0JtRPmrV4GfOJ2F9CvdQkZeZhnh2TuHw== + dependencies: + async "^2.4.0" + +async-limiter@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.0.tgz#78faed8c3d074ab81f22b4e985d79e8738f720f8" + integrity sha512-jp/uFnooOiO+L211eZOoSyzpOITMXx1rBITauYykG3BRYPu8h0UcxsPNB04RR5vo4Tyz3+ay17tR6JVf9qzYWg== + +async@^1.5.2: + version "1.5.2" + resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a" + integrity sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo= + +async@^2.0.1, async@^2.1.4, async@^2.4.0, async@^2.5.0: + version "2.6.1" + resolved "https://registry.yarnpkg.com/async/-/async-2.6.1.tgz#b245a23ca71930044ec53fa46aa00a3e87c6a610" + integrity sha512-fNEiL2+AZt6AlAw/29Cr0UDe4sRAHCpEHh54WMz+Bb7QfNcFw4h3loofyJpLeQs4Yx7yuqu/2dLgM5hKOs6HlQ== + dependencies: + lodash "^4.17.10" + +asynckit@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" + integrity sha1-x57Zf380y48robyXkLzDZkdLS3k= + +atob@^2.1.1: + version "2.1.2" + resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" + integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== + +autoprefixer@^9.3.1: + version "9.4.4" + resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-9.4.4.tgz#40c42b335bdb22efe8cd80389ca82ffb5e32d68d" + integrity sha512-7tpjBadJyHKf+gOJEmKhZIksWxdZCSrnKbbTJNsw+/zX9+f//DLELRQPWjjjVoDbbWlCuNRkN7RfmZwDVgWMLw== + dependencies: + browserslist "^4.3.7" + caniuse-lite "^1.0.30000926" + normalize-range "^0.1.2" + num2fraction "^1.2.2" + postcss "^7.0.7" + postcss-value-parser "^3.3.1" + +aws-sign2@~0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8" + integrity sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg= + +aws4@^1.8.0: + version "1.8.0" + resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.8.0.tgz#f0e003d9ca9e7f59c7a508945d7b2ef9a04a542f" + integrity sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ== + +axobject-query@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/axobject-query/-/axobject-query-2.0.2.tgz#ea187abe5b9002b377f925d8bf7d1c561adf38f9" + integrity sha512-MCeek8ZH7hKyO1rWUbKNQBbl4l2eY0ntk7OGi+q0RlafrCnfPxC06WZA+uebCfmYp4mNU9jRBP1AhGyf8+W3ww== + dependencies: + ast-types-flow "0.0.7" + +babel-code-frame@^6.22.0, babel-code-frame@^6.26.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.26.0.tgz#63fd43f7dc1e3bb7ce35947db8fe369a3f58c74b" + integrity sha1-Y/1D99weO7fONZR9uP42mj9Yx0s= + dependencies: + chalk "^1.1.3" + esutils "^2.0.2" + js-tokens "^3.0.2" + +babel-core@7.0.0-bridge.0: + version "7.0.0-bridge.0" + resolved "https://registry.yarnpkg.com/babel-core/-/babel-core-7.0.0-bridge.0.tgz#95a492ddd90f9b4e9a4a1da14eb335b87b634ece" + integrity sha512-poPX9mZH/5CSanm50Q+1toVci6pv5KSRv/5TWCwtzQS5XEwn40BcCrgIeMFWP9CKKIniKXNxoIOnOq4VVlGXhg== + +babel-core@^6.0.0, babel-core@^6.0.14, babel-core@^6.26.0: + version "6.26.3" + resolved "https://registry.yarnpkg.com/babel-core/-/babel-core-6.26.3.tgz#b2e2f09e342d0f0c88e2f02e067794125e75c207" + integrity sha512-6jyFLuDmeidKmUEb3NM+/yawG0M2bDZ9Z1qbZP59cyHLz8kYGKYwpJP0UwUKKUiTRNvxfLesJnTedqczP7cTDA== + dependencies: + babel-code-frame "^6.26.0" + babel-generator "^6.26.0" + babel-helpers "^6.24.1" + babel-messages "^6.23.0" + babel-register "^6.26.0" + babel-runtime "^6.26.0" + babel-template "^6.26.0" + babel-traverse "^6.26.0" + babel-types "^6.26.0" + babylon "^6.18.0" + convert-source-map "^1.5.1" + debug "^2.6.9" + json5 "^0.5.1" + lodash "^4.17.4" + minimatch "^3.0.4" + path-is-absolute "^1.0.1" + private "^0.1.8" + slash "^1.0.0" + source-map "^0.5.7" + +babel-eslint@9.0.0: + version "9.0.0" + resolved "https://registry.yarnpkg.com/babel-eslint/-/babel-eslint-9.0.0.tgz#7d9445f81ed9f60aff38115f838970df9f2b6220" + integrity sha512-itv1MwE3TMbY0QtNfeL7wzak1mV47Uy+n6HtSOO4Xd7rvmO+tsGQSgyOEEgo6Y2vHZKZphaoelNeSVj4vkLA1g== + dependencies: + "@babel/code-frame" "^7.0.0" + "@babel/parser" "^7.0.0" + "@babel/traverse" "^7.0.0" + "@babel/types" "^7.0.0" + eslint-scope "3.7.1" + eslint-visitor-keys "^1.0.0" + +babel-extract-comments@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/babel-extract-comments/-/babel-extract-comments-1.0.0.tgz#0a2aedf81417ed391b85e18b4614e693a0351a21" + integrity sha512-qWWzi4TlddohA91bFwgt6zO/J0X+io7Qp184Fw0m2JYRSTZnJbFR8+07KmzudHCZgOiKRCrjhylwv9Xd8gfhVQ== + dependencies: + babylon "^6.18.0" + +babel-generator@^6.18.0, babel-generator@^6.26.0: + version "6.26.1" + resolved "https://registry.yarnpkg.com/babel-generator/-/babel-generator-6.26.1.tgz#1844408d3b8f0d35a404ea7ac180f087a601bd90" + integrity sha512-HyfwY6ApZj7BYTcJURpM5tznulaBvyio7/0d4zFOeMPUmfxkCjHocCuoLa2SAGzBI8AREcH3eP3758F672DppA== + dependencies: + babel-messages "^6.23.0" + babel-runtime "^6.26.0" + babel-types "^6.26.0" + detect-indent "^4.0.0" + jsesc "^1.3.0" + lodash "^4.17.4" + source-map "^0.5.7" + trim-right "^1.0.1" + +babel-helper-builder-binary-assignment-operator-visitor@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-builder-binary-assignment-operator-visitor/-/babel-helper-builder-binary-assignment-operator-visitor-6.24.1.tgz#cce4517ada356f4220bcae8a02c2b346f9a56664" + integrity sha1-zORReto1b0IgvK6KAsKzRvmlZmQ= + dependencies: + babel-helper-explode-assignable-expression "^6.24.1" + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-helper-call-delegate@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-call-delegate/-/babel-helper-call-delegate-6.24.1.tgz#ece6aacddc76e41c3461f88bfc575bd0daa2df8d" + integrity sha1-7Oaqzdx25Bw0YfiL/Fdb0Nqi340= + dependencies: + babel-helper-hoist-variables "^6.24.1" + babel-runtime "^6.22.0" + babel-traverse "^6.24.1" + babel-types "^6.24.1" + +babel-helper-define-map@^6.24.1: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-helper-define-map/-/babel-helper-define-map-6.26.0.tgz#a5f56dab41a25f97ecb498c7ebaca9819f95be5f" + integrity sha1-pfVtq0GiX5fstJjH66ypgZ+Vvl8= + dependencies: + babel-helper-function-name "^6.24.1" + babel-runtime "^6.26.0" + babel-types "^6.26.0" + lodash "^4.17.4" + +babel-helper-explode-assignable-expression@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-explode-assignable-expression/-/babel-helper-explode-assignable-expression-6.24.1.tgz#f25b82cf7dc10433c55f70592d5746400ac22caa" + integrity sha1-8luCz33BBDPFX3BZLVdGQArCLKo= + dependencies: + babel-runtime "^6.22.0" + babel-traverse "^6.24.1" + babel-types "^6.24.1" + +babel-helper-function-name@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-function-name/-/babel-helper-function-name-6.24.1.tgz#d3475b8c03ed98242a25b48351ab18399d3580a9" + integrity sha1-00dbjAPtmCQqJbSDUasYOZ01gKk= + dependencies: + babel-helper-get-function-arity "^6.24.1" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + babel-traverse "^6.24.1" + babel-types "^6.24.1" + +babel-helper-get-function-arity@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-get-function-arity/-/babel-helper-get-function-arity-6.24.1.tgz#8f7782aa93407c41d3aa50908f89b031b1b6853d" + integrity sha1-j3eCqpNAfEHTqlCQj4mwMbG2hT0= + dependencies: + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-helper-hoist-variables@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-hoist-variables/-/babel-helper-hoist-variables-6.24.1.tgz#1ecb27689c9d25513eadbc9914a73f5408be7a76" + integrity sha1-HssnaJydJVE+rbyZFKc/VAi+enY= + dependencies: + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-helper-optimise-call-expression@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-optimise-call-expression/-/babel-helper-optimise-call-expression-6.24.1.tgz#f7a13427ba9f73f8f4fa993c54a97882d1244257" + integrity sha1-96E0J7qfc/j0+pk8VKl4gtEkQlc= + dependencies: + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-helper-regex@^6.24.1: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-helper-regex/-/babel-helper-regex-6.26.0.tgz#325c59f902f82f24b74faceed0363954f6495e72" + integrity sha1-MlxZ+QL4LyS3T6zu0DY5VPZJXnI= + dependencies: + babel-runtime "^6.26.0" + babel-types "^6.26.0" + lodash "^4.17.4" + +babel-helper-remap-async-to-generator@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-remap-async-to-generator/-/babel-helper-remap-async-to-generator-6.24.1.tgz#5ec581827ad723fecdd381f1c928390676e4551b" + integrity sha1-XsWBgnrXI/7N04HxySg5BnbkVRs= + dependencies: + babel-helper-function-name "^6.24.1" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + babel-traverse "^6.24.1" + babel-types "^6.24.1" + +babel-helper-replace-supers@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-replace-supers/-/babel-helper-replace-supers-6.24.1.tgz#bf6dbfe43938d17369a213ca8a8bf74b6a90ab1a" + integrity sha1-v22/5Dk40XNpohPKiov3S2qQqxo= + dependencies: + babel-helper-optimise-call-expression "^6.24.1" + babel-messages "^6.23.0" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + babel-traverse "^6.24.1" + babel-types "^6.24.1" + +babel-helpers@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helpers/-/babel-helpers-6.24.1.tgz#3471de9caec388e5c850e597e58a26ddf37602b2" + integrity sha1-NHHenK7DiOXIUOWX5Yom3fN2ArI= + dependencies: + babel-runtime "^6.22.0" + babel-template "^6.24.1" + +babel-jest@23.6.0, babel-jest@^23.6.0: + version "23.6.0" + resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-23.6.0.tgz#a644232366557a2240a0c083da6b25786185a2f1" + integrity sha512-lqKGG6LYXYu+DQh/slrQ8nxXQkEkhugdXsU6St7GmhVS7Ilc/22ArwqXNJrf0QaOBjZB0360qZMwXqDYQHXaew== + dependencies: + babel-plugin-istanbul "^4.1.6" + babel-preset-jest "^23.2.0" + +babel-loader@8.0.4: + version "8.0.4" + resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-8.0.4.tgz#7bbf20cbe4560629e2e41534147692d3fecbdce6" + integrity sha512-fhBhNkUToJcW9nV46v8w87AJOwAJDz84c1CL57n3Stj73FANM/b9TbCUK4YhdOwEyZ+OxhYpdeZDNzSI29Firw== + dependencies: + find-cache-dir "^1.0.0" + loader-utils "^1.0.2" + mkdirp "^0.5.1" + util.promisify "^1.0.0" + +babel-messages@^6.23.0: + version "6.23.0" + resolved "https://registry.yarnpkg.com/babel-messages/-/babel-messages-6.23.0.tgz#f3cdf4703858035b2a2951c6ec5edf6c62f2630e" + integrity sha1-8830cDhYA1sqKVHG7F7fbGLyYw4= + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-check-es2015-constants@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-check-es2015-constants/-/babel-plugin-check-es2015-constants-6.22.0.tgz#35157b101426fd2ffd3da3f75c7d1e91835bbf8a" + integrity sha1-NRV7EBQm/S/9PaP3XH0ekYNbv4o= + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-dynamic-import-node@2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.2.0.tgz#c0adfb07d95f4a4495e9aaac6ec386c4d7c2524e" + integrity sha512-fP899ELUnTaBcIzmrW7nniyqqdYWrWuJUyPWHxFa/c7r7hS6KC8FscNfLlBNIoPSc55kYMGEEKjPjJGCLbE1qA== + dependencies: + object.assign "^4.1.0" + +babel-plugin-istanbul@^4.1.6: + version "4.1.6" + resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-4.1.6.tgz#36c59b2192efce81c5b378321b74175add1c9a45" + integrity sha512-PWP9FQ1AhZhS01T/4qLSKoHGY/xvkZdVBGlKM/HuxxS3+sC66HhTNR7+MpbO/so/cz/wY94MeSWJuP1hXIPfwQ== + dependencies: + babel-plugin-syntax-object-rest-spread "^6.13.0" + find-up "^2.1.0" + istanbul-lib-instrument "^1.10.1" + test-exclude "^4.2.1" + +babel-plugin-jest-hoist@^23.2.0: + version "23.2.0" + resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-23.2.0.tgz#e61fae05a1ca8801aadee57a6d66b8cefaf44167" + integrity sha1-5h+uBaHKiAGq3uV6bWa4zvr0QWc= + +babel-plugin-macros@2.4.2: + version "2.4.2" + resolved "https://registry.yarnpkg.com/babel-plugin-macros/-/babel-plugin-macros-2.4.2.tgz#21b1a2e82e2130403c5ff785cba6548e9b644b28" + integrity sha512-NBVpEWN4OQ/bHnu1fyDaAaTPAjnhXCEPqr1RwqxrU7b6tZ2hypp+zX4hlNfmVGfClD5c3Sl6Hfj5TJNF5VG5aA== + dependencies: + cosmiconfig "^5.0.5" + resolve "^1.8.1" + +babel-plugin-named-asset-import@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/babel-plugin-named-asset-import/-/babel-plugin-named-asset-import-0.3.0.tgz#3289ec622d19cd1cc84df8d784b41f1b048bd524" + integrity sha512-to6Shd/r8fMRRg/MaOhDNfqpuXfjlQx3ypWDG6jh4ESCVZDJCgdgIalZbrnVlBPGgH/QeyHMjnGb2W+JJiy+NQ== + +babel-plugin-syntax-async-functions@^6.8.0: + version "6.13.0" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-async-functions/-/babel-plugin-syntax-async-functions-6.13.0.tgz#cad9cad1191b5ad634bf30ae0872391e0647be95" + integrity sha1-ytnK0RkbWtY0vzCuCHI5HgZHvpU= + +babel-plugin-syntax-exponentiation-operator@^6.8.0: + version "6.13.0" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-exponentiation-operator/-/babel-plugin-syntax-exponentiation-operator-6.13.0.tgz#9ee7e8337290da95288201a6a57f4170317830de" + integrity sha1-nufoM3KQ2pUoggGmpX9BcDF4MN4= + +babel-plugin-syntax-object-rest-spread@^6.13.0, babel-plugin-syntax-object-rest-spread@^6.8.0: + version "6.13.0" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-object-rest-spread/-/babel-plugin-syntax-object-rest-spread-6.13.0.tgz#fd6536f2bce13836ffa3a5458c4903a597bb3bf5" + integrity sha1-/WU28rzhODb/o6VFjEkDpZe7O/U= + +babel-plugin-syntax-trailing-function-commas@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-6.22.0.tgz#ba0360937f8d06e40180a43fe0d5616fff532cf3" + integrity sha1-ugNgk3+NBuQBgKQ/4NVhb/9TLPM= + +babel-plugin-transform-async-to-generator@^6.22.0: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-async-to-generator/-/babel-plugin-transform-async-to-generator-6.24.1.tgz#6536e378aff6cb1d5517ac0e40eb3e9fc8d08761" + integrity sha1-ZTbjeK/2yx1VF6wOQOs+n8jQh2E= + dependencies: + babel-helper-remap-async-to-generator "^6.24.1" + babel-plugin-syntax-async-functions "^6.8.0" + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-arrow-functions@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-arrow-functions/-/babel-plugin-transform-es2015-arrow-functions-6.22.0.tgz#452692cb711d5f79dc7f85e440ce41b9f244d221" + integrity sha1-RSaSy3EdX3ncf4XkQM5BufJE0iE= + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-block-scoped-functions@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-block-scoped-functions/-/babel-plugin-transform-es2015-block-scoped-functions-6.22.0.tgz#bbc51b49f964d70cb8d8e0b94e820246ce3a6141" + integrity sha1-u8UbSflk1wy42OC5ToICRs46YUE= + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-block-scoping@^6.23.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-block-scoping/-/babel-plugin-transform-es2015-block-scoping-6.26.0.tgz#d70f5299c1308d05c12f463813b0a09e73b1895f" + integrity sha1-1w9SmcEwjQXBL0Y4E7CgnnOxiV8= + dependencies: + babel-runtime "^6.26.0" + babel-template "^6.26.0" + babel-traverse "^6.26.0" + babel-types "^6.26.0" + lodash "^4.17.4" + +babel-plugin-transform-es2015-classes@^6.23.0: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-classes/-/babel-plugin-transform-es2015-classes-6.24.1.tgz#5a4c58a50c9c9461e564b4b2a3bfabc97a2584db" + integrity sha1-WkxYpQyclGHlZLSyo7+ryXolhNs= + dependencies: + babel-helper-define-map "^6.24.1" + babel-helper-function-name "^6.24.1" + babel-helper-optimise-call-expression "^6.24.1" + babel-helper-replace-supers "^6.24.1" + babel-messages "^6.23.0" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + babel-traverse "^6.24.1" + babel-types "^6.24.1" + +babel-plugin-transform-es2015-computed-properties@^6.22.0: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-computed-properties/-/babel-plugin-transform-es2015-computed-properties-6.24.1.tgz#6fe2a8d16895d5634f4cd999b6d3480a308159b3" + integrity sha1-b+Ko0WiV1WNPTNmZttNICjCBWbM= + dependencies: + babel-runtime "^6.22.0" + babel-template "^6.24.1" + +babel-plugin-transform-es2015-destructuring@^6.23.0: + version "6.23.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-destructuring/-/babel-plugin-transform-es2015-destructuring-6.23.0.tgz#997bb1f1ab967f682d2b0876fe358d60e765c56d" + integrity sha1-mXux8auWf2gtKwh2/jWNYOdlxW0= + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-duplicate-keys@^6.22.0: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-duplicate-keys/-/babel-plugin-transform-es2015-duplicate-keys-6.24.1.tgz#73eb3d310ca969e3ef9ec91c53741a6f1576423e" + integrity sha1-c+s9MQypaePvnskcU3QabxV2Qj4= + dependencies: + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-plugin-transform-es2015-for-of@^6.23.0: + version "6.23.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-for-of/-/babel-plugin-transform-es2015-for-of-6.23.0.tgz#f47c95b2b613df1d3ecc2fdb7573623c75248691" + integrity sha1-9HyVsrYT3x0+zC/bdXNiPHUkhpE= + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-function-name@^6.22.0: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-function-name/-/babel-plugin-transform-es2015-function-name-6.24.1.tgz#834c89853bc36b1af0f3a4c5dbaa94fd8eacaa8b" + integrity sha1-g0yJhTvDaxrw86TF26qU/Y6sqos= + dependencies: + babel-helper-function-name "^6.24.1" + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-plugin-transform-es2015-literals@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-literals/-/babel-plugin-transform-es2015-literals-6.22.0.tgz#4f54a02d6cd66cf915280019a31d31925377ca2e" + integrity sha1-T1SgLWzWbPkVKAAZox0xklN3yi4= + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-modules-amd@^6.22.0, babel-plugin-transform-es2015-modules-amd@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-amd/-/babel-plugin-transform-es2015-modules-amd-6.24.1.tgz#3b3e54017239842d6d19c3011c4bd2f00a00d154" + integrity sha1-Oz5UAXI5hC1tGcMBHEvS8AoA0VQ= + dependencies: + babel-plugin-transform-es2015-modules-commonjs "^6.24.1" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + +babel-plugin-transform-es2015-modules-commonjs@^6.23.0, babel-plugin-transform-es2015-modules-commonjs@^6.24.1: + version "6.26.2" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.26.2.tgz#58a793863a9e7ca870bdc5a881117ffac27db6f3" + integrity sha512-CV9ROOHEdrjcwhIaJNBGMBCodN+1cfkwtM1SbUHmvyy35KGT7fohbpOxkE2uLz1o6odKK2Ck/tz47z+VqQfi9Q== + dependencies: + babel-plugin-transform-strict-mode "^6.24.1" + babel-runtime "^6.26.0" + babel-template "^6.26.0" + babel-types "^6.26.0" + +babel-plugin-transform-es2015-modules-systemjs@^6.23.0: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-systemjs/-/babel-plugin-transform-es2015-modules-systemjs-6.24.1.tgz#ff89a142b9119a906195f5f106ecf305d9407d23" + integrity sha1-/4mhQrkRmpBhlfXxBuzzBdlAfSM= + dependencies: + babel-helper-hoist-variables "^6.24.1" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + +babel-plugin-transform-es2015-modules-umd@^6.23.0: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-umd/-/babel-plugin-transform-es2015-modules-umd-6.24.1.tgz#ac997e6285cd18ed6176adb607d602344ad38468" + integrity sha1-rJl+YoXNGO1hdq22B9YCNErThGg= + dependencies: + babel-plugin-transform-es2015-modules-amd "^6.24.1" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + +babel-plugin-transform-es2015-object-super@^6.22.0: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-object-super/-/babel-plugin-transform-es2015-object-super-6.24.1.tgz#24cef69ae21cb83a7f8603dad021f572eb278f8d" + integrity sha1-JM72muIcuDp/hgPa0CH1cusnj40= + dependencies: + babel-helper-replace-supers "^6.24.1" + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-parameters@^6.23.0: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-parameters/-/babel-plugin-transform-es2015-parameters-6.24.1.tgz#57ac351ab49caf14a97cd13b09f66fdf0a625f2b" + integrity sha1-V6w1GrScrxSpfNE7CfZv3wpiXys= + dependencies: + babel-helper-call-delegate "^6.24.1" + babel-helper-get-function-arity "^6.24.1" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + babel-traverse "^6.24.1" + babel-types "^6.24.1" + +babel-plugin-transform-es2015-shorthand-properties@^6.22.0: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-shorthand-properties/-/babel-plugin-transform-es2015-shorthand-properties-6.24.1.tgz#24f875d6721c87661bbd99a4622e51f14de38aa0" + integrity sha1-JPh11nIch2YbvZmkYi5R8U3jiqA= + dependencies: + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-plugin-transform-es2015-spread@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-spread/-/babel-plugin-transform-es2015-spread-6.22.0.tgz#d6d68a99f89aedc4536c81a542e8dd9f1746f8d1" + integrity sha1-1taKmfia7cRTbIGlQujdnxdG+NE= + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-sticky-regex@^6.22.0: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-sticky-regex/-/babel-plugin-transform-es2015-sticky-regex-6.24.1.tgz#00c1cdb1aca71112cdf0cf6126c2ed6b457ccdbc" + integrity sha1-AMHNsaynERLN8M9hJsLta0V8zbw= + dependencies: + babel-helper-regex "^6.24.1" + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-plugin-transform-es2015-template-literals@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-template-literals/-/babel-plugin-transform-es2015-template-literals-6.22.0.tgz#a84b3450f7e9f8f1f6839d6d687da84bb1236d8d" + integrity sha1-qEs0UPfp+PH2g51taH2oS7EjbY0= + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-typeof-symbol@^6.23.0: + version "6.23.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-typeof-symbol/-/babel-plugin-transform-es2015-typeof-symbol-6.23.0.tgz#dec09f1cddff94b52ac73d505c84df59dcceb372" + integrity sha1-3sCfHN3/lLUqxz1QXITfWdzOs3I= + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-unicode-regex@^6.22.0: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-unicode-regex/-/babel-plugin-transform-es2015-unicode-regex-6.24.1.tgz#d38b12f42ea7323f729387f18a7c5ae1faeb35e9" + integrity sha1-04sS9C6nMj9yk4fxinxa4frrNek= + dependencies: + babel-helper-regex "^6.24.1" + babel-runtime "^6.22.0" + regexpu-core "^2.0.0" + +babel-plugin-transform-exponentiation-operator@^6.22.0: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-exponentiation-operator/-/babel-plugin-transform-exponentiation-operator-6.24.1.tgz#2ab0c9c7f3098fa48907772bb813fe41e8de3a0e" + integrity sha1-KrDJx/MJj6SJB3cruBP+QejeOg4= + dependencies: + babel-helper-builder-binary-assignment-operator-visitor "^6.24.1" + babel-plugin-syntax-exponentiation-operator "^6.8.0" + babel-runtime "^6.22.0" + +babel-plugin-transform-object-rest-spread@^6.26.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-object-rest-spread/-/babel-plugin-transform-object-rest-spread-6.26.0.tgz#0f36692d50fef6b7e2d4b3ac1478137a963b7b06" + integrity sha1-DzZpLVD+9rfi1LOsFHgTepY7ewY= + dependencies: + babel-plugin-syntax-object-rest-spread "^6.8.0" + babel-runtime "^6.26.0" + +babel-plugin-transform-react-remove-prop-types@0.4.20: + version "0.4.20" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-react-remove-prop-types/-/babel-plugin-transform-react-remove-prop-types-0.4.20.tgz#688bdea1e27ea0023775dea817fa2d3f8df8802b" + integrity sha512-bWQ8e7LsgdFpyHU/RabjDAjVhL7KLAJXEt0nb0LANFje8YAGA8RlZv88a72aCswOxELWULkYuJqfFoKgs58Tng== + +babel-plugin-transform-regenerator@^6.22.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.26.0.tgz#e0703696fbde27f0a3efcacf8b4dca2f7b3a8f2f" + integrity sha1-4HA2lvveJ/Cj78rPi03KL3s6jy8= + dependencies: + regenerator-transform "^0.10.0" + +babel-plugin-transform-strict-mode@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-strict-mode/-/babel-plugin-transform-strict-mode-6.24.1.tgz#d5faf7aa578a65bbe591cf5edae04a0c67020758" + integrity sha1-1fr3qleKZbvlkc9e2uBKDGcCB1g= + dependencies: + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-preset-env@^1.7.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/babel-preset-env/-/babel-preset-env-1.7.0.tgz#dea79fa4ebeb883cd35dab07e260c1c9c04df77a" + integrity sha512-9OR2afuKDneX2/q2EurSftUYM0xGu4O2D9adAhVfADDhrYDaxXV0rBbevVYoY9n6nyX1PmQW/0jtpJvUNr9CHg== + dependencies: + babel-plugin-check-es2015-constants "^6.22.0" + babel-plugin-syntax-trailing-function-commas "^6.22.0" + babel-plugin-transform-async-to-generator "^6.22.0" + babel-plugin-transform-es2015-arrow-functions "^6.22.0" + babel-plugin-transform-es2015-block-scoped-functions "^6.22.0" + babel-plugin-transform-es2015-block-scoping "^6.23.0" + babel-plugin-transform-es2015-classes "^6.23.0" + babel-plugin-transform-es2015-computed-properties "^6.22.0" + babel-plugin-transform-es2015-destructuring "^6.23.0" + babel-plugin-transform-es2015-duplicate-keys "^6.22.0" + babel-plugin-transform-es2015-for-of "^6.23.0" + babel-plugin-transform-es2015-function-name "^6.22.0" + babel-plugin-transform-es2015-literals "^6.22.0" + babel-plugin-transform-es2015-modules-amd "^6.22.0" + babel-plugin-transform-es2015-modules-commonjs "^6.23.0" + babel-plugin-transform-es2015-modules-systemjs "^6.23.0" + babel-plugin-transform-es2015-modules-umd "^6.23.0" + babel-plugin-transform-es2015-object-super "^6.22.0" + babel-plugin-transform-es2015-parameters "^6.23.0" + babel-plugin-transform-es2015-shorthand-properties "^6.22.0" + babel-plugin-transform-es2015-spread "^6.22.0" + babel-plugin-transform-es2015-sticky-regex "^6.22.0" + babel-plugin-transform-es2015-template-literals "^6.22.0" + babel-plugin-transform-es2015-typeof-symbol "^6.23.0" + babel-plugin-transform-es2015-unicode-regex "^6.22.0" + babel-plugin-transform-exponentiation-operator "^6.22.0" + babel-plugin-transform-regenerator "^6.22.0" + browserslist "^3.2.6" + invariant "^2.2.2" + semver "^5.3.0" + +babel-preset-jest@^23.2.0: + version "23.2.0" + resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-23.2.0.tgz#8ec7a03a138f001a1a8fb1e8113652bf1a55da46" + integrity sha1-jsegOhOPABoaj7HoETZSvxpV2kY= + dependencies: + babel-plugin-jest-hoist "^23.2.0" + babel-plugin-syntax-object-rest-spread "^6.13.0" + +babel-preset-react-app@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/babel-preset-react-app/-/babel-preset-react-app-7.0.0.tgz#86bf71e43cb8d36e40da69f8b4ad5d6f945dec93" + integrity sha512-LQKCB3xxdhAlRbk6IIZdO4ry1yA8gKGVV4phjOIgCEQr3oyaLPXf2j+lfD0zljOE2wkN2axRGOLTzdUPzVDO4w== + dependencies: + "@babel/core" "7.1.6" + "@babel/plugin-proposal-class-properties" "7.1.0" + "@babel/plugin-proposal-decorators" "7.1.6" + "@babel/plugin-proposal-object-rest-spread" "7.0.0" + "@babel/plugin-syntax-dynamic-import" "7.0.0" + "@babel/plugin-transform-classes" "7.1.0" + "@babel/plugin-transform-destructuring" "7.1.3" + "@babel/plugin-transform-flow-strip-types" "7.1.6" + "@babel/plugin-transform-react-constant-elements" "7.0.0" + "@babel/plugin-transform-react-display-name" "7.0.0" + "@babel/plugin-transform-runtime" "7.1.0" + "@babel/preset-env" "7.1.6" + "@babel/preset-react" "7.0.0" + "@babel/preset-typescript" "7.1.0" + "@babel/runtime" "7.1.5" + babel-loader "8.0.4" + babel-plugin-dynamic-import-node "2.2.0" + babel-plugin-macros "2.4.2" + babel-plugin-transform-react-remove-prop-types "0.4.20" + +babel-register@^6.26.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-register/-/babel-register-6.26.0.tgz#6ed021173e2fcb486d7acb45c6009a856f647071" + integrity sha1-btAhFz4vy0htestFxgCahW9kcHE= + dependencies: + babel-core "^6.26.0" + babel-runtime "^6.26.0" + core-js "^2.5.0" + home-or-tmp "^2.0.0" + lodash "^4.17.4" + mkdirp "^0.5.1" + source-map-support "^0.4.15" + +babel-runtime@^6.18.0, babel-runtime@^6.22.0, babel-runtime@^6.26.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.26.0.tgz#965c7058668e82b55d7bfe04ff2337bc8b5647fe" + integrity sha1-llxwWGaOgrVde/4E/yM3vItWR/4= + dependencies: + core-js "^2.4.0" + regenerator-runtime "^0.11.0" + +babel-template@^6.16.0, babel-template@^6.24.1, babel-template@^6.26.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-template/-/babel-template-6.26.0.tgz#de03e2d16396b069f46dd9fff8521fb1a0e35e02" + integrity sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI= + dependencies: + babel-runtime "^6.26.0" + babel-traverse "^6.26.0" + babel-types "^6.26.0" + babylon "^6.18.0" + lodash "^4.17.4" + +babel-traverse@^6.0.0, babel-traverse@^6.18.0, babel-traverse@^6.24.1, babel-traverse@^6.26.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-traverse/-/babel-traverse-6.26.0.tgz#46a9cbd7edcc62c8e5c064e2d2d8d0f4035766ee" + integrity sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4= + dependencies: + babel-code-frame "^6.26.0" + babel-messages "^6.23.0" + babel-runtime "^6.26.0" + babel-types "^6.26.0" + babylon "^6.18.0" + debug "^2.6.8" + globals "^9.18.0" + invariant "^2.2.2" + lodash "^4.17.4" + +babel-types@^6.0.0, babel-types@^6.18.0, babel-types@^6.19.0, babel-types@^6.24.1, babel-types@^6.26.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-types/-/babel-types-6.26.0.tgz#a3b073f94ab49eb6fa55cd65227a334380632497" + integrity sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc= + dependencies: + babel-runtime "^6.26.0" + esutils "^2.0.2" + lodash "^4.17.4" + to-fast-properties "^1.0.3" + +babelify@^7.3.0: + version "7.3.0" + resolved "https://registry.yarnpkg.com/babelify/-/babelify-7.3.0.tgz#aa56aede7067fd7bd549666ee16dc285087e88e5" + integrity sha1-qlau3nBn/XvVSWZu4W3ChQh+iOU= + dependencies: + babel-core "^6.0.14" + object-assign "^4.0.0" + +babylon@^6.18.0: + version "6.18.0" + resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.18.0.tgz#af2f3b88fa6f5c1e4c634d1a0f8eac4f55b395e3" + integrity sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ== + +balanced-match@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" + integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= + +base64-js@0.0.8: + version "0.0.8" + resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-0.0.8.tgz#1101e9544f4a76b1bc3b26d452ca96d7a35e7978" + integrity sha1-EQHpVE9KdrG8OybUUsqW16NeeXg= + +base64-js@^1.0.2: + version "1.3.0" + resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.3.0.tgz#cab1e6118f051095e58b5281aea8c1cd22bfc0e3" + integrity sha512-ccav/yGvoa80BQDljCxsmmQ3Xvx60/UpBIij5QN21W3wBi/hhIC9OoO+KLpu9IJTS9j4DRVJ3aDDF9cMSoa2lw== + +base@^0.11.1: + version "0.11.2" + resolved "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f" + integrity sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg== + dependencies: + cache-base "^1.0.1" + class-utils "^0.3.5" + component-emitter "^1.2.1" + define-property "^1.0.0" + isobject "^3.0.1" + mixin-deep "^1.2.0" + pascalcase "^0.1.1" + +batch@0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/batch/-/batch-0.6.1.tgz#dc34314f4e679318093fc760272525f94bf25c16" + integrity sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY= + +bcrypt-pbkdf@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz#a4301d389b6a43f9b67ff3ca11a3f6637e360e9e" + integrity sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4= + dependencies: + tweetnacl "^0.14.3" + +bfj@6.1.1: + version "6.1.1" + resolved "https://registry.yarnpkg.com/bfj/-/bfj-6.1.1.tgz#05a3b7784fbd72cfa3c22e56002ef99336516c48" + integrity sha512-+GUNvzHR4nRyGybQc2WpNJL4MJazMuvf92ueIyA0bIkPRwhhQu3IfZQ2PSoVPpCBJfmoSdOxu5rnotfFLlvYRQ== + dependencies: + bluebird "^3.5.1" + check-types "^7.3.0" + hoopy "^0.1.2" + tryer "^1.0.0" + +big.js@^3.1.3: + version "3.2.0" + resolved "https://registry.yarnpkg.com/big.js/-/big.js-3.2.0.tgz#a5fc298b81b9e0dca2e458824784b65c52ba588e" + integrity sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q== + +big.js@^5.2.2: + version "5.2.2" + resolved "https://registry.yarnpkg.com/big.js/-/big.js-5.2.2.tgz#65f0af382f578bcdc742bd9c281e9cb2d7768328" + integrity sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ== + +binary-extensions@^1.0.0: + version "1.12.0" + resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.12.0.tgz#c2d780f53d45bba8317a8902d4ceeaf3a6385b14" + integrity sha512-DYWGk01lDcxeS/K9IHPGWfT8PsJmbXRtRd2Sx72Tnb8pcYZQFF1oSDb8hJtS1vhp212q1Rzi5dUf9+nq0o9UIg== + +bindings@^1.2.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/bindings/-/bindings-1.3.1.tgz#21fc7c6d67c18516ec5aaa2815b145ff77b26ea5" + integrity sha512-i47mqjF9UbjxJhxGf+pZ6kSxrnI3wBLlnGI2ArWJ4r0VrvDS7ZYXkprq/pLaBWYq4GM0r4zdHY+NNRqEMU7uew== + +bip66@^1.1.3: + version "1.1.5" + resolved "https://registry.yarnpkg.com/bip66/-/bip66-1.1.5.tgz#01fa8748785ca70955d5011217d1b3139969ca22" + integrity sha1-AfqHSHhcpwlV1QESF9GzE5lpyiI= + dependencies: + safe-buffer "^5.0.1" + +bl@^1.0.0: + version "1.2.2" + resolved "https://registry.yarnpkg.com/bl/-/bl-1.2.2.tgz#a160911717103c07410cef63ef51b397c025af9c" + integrity sha512-e8tQYnZodmebYDWGH7KMRvtzKXaJHx3BbilrgZCfvyLUYdKpK1t5PSPmpkny/SgiTSCnjfLW7v5rlONXVFkQEA== + dependencies: + readable-stream "^2.3.5" + safe-buffer "^5.1.1" + +block-stream@*: + version "0.0.9" + resolved "https://registry.yarnpkg.com/block-stream/-/block-stream-0.0.9.tgz#13ebfe778a03205cfe03751481ebb4b3300c126a" + integrity sha1-E+v+d4oDIFz+A3UUgeu0szAMEmo= + dependencies: + inherits "~2.0.0" + +blubird@^0.0.1-security: + version "0.0.1-security" + resolved "https://registry.yarnpkg.com/blubird/-/blubird-0.0.1-security.tgz#ba3c3a2f9bd4898e54e9919461281be9fe9f4f13" + integrity sha512-OVUIoArjxXSBf23otl/RDoPGvyZlNPephYK6hA4y14r9fwK5EnRPMzztPah8ao3/s+pdsoJrlWRZw8HICXttng== + +bluebird@^2.9.34: + version "2.11.0" + resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-2.11.0.tgz#534b9033c022c9579c56ba3b3e5a5caafbb650e1" + integrity sha1-U0uQM8AiyVecVro7Plpcqvu2UOE= + +bluebird@^3.5.0, bluebird@^3.5.1, bluebird@^3.5.3: + version "3.5.3" + resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.3.tgz#7d01c6f9616c9a51ab0f8c549a79dfe6ec33efa7" + integrity sha512-/qKPUQlaW1OyR51WeCPBvRnAlnZFUJkCSG5HzGnuIqhgyJtF+T94lFnn33eiazjRm2LAHVy2guNnaq48X9SJuw== + +bn.js@4.11.6: + version "4.11.6" + resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.6.tgz#53344adb14617a13f6e8dd2ce28905d1c0ba3215" + integrity sha1-UzRK2xRhehP26N0s4okF0cC6MhU= + +bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.1.1, bn.js@^4.11.0, bn.js@^4.11.3, bn.js@^4.11.6, bn.js@^4.4.0: + version "4.11.8" + resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.8.tgz#2cde09eb5ee341f484746bb0309b3253b1b1442f" + integrity sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA== + +body-parser@1.18.3, body-parser@^1.16.0: + version "1.18.3" + resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.18.3.tgz#5b292198ffdd553b3a0f20ded0592b956955c8b4" + integrity sha1-WykhmP/dVTs6DyDe0FkrlWlVyLQ= + dependencies: + bytes "3.0.0" + content-type "~1.0.4" + debug "2.6.9" + depd "~1.1.2" + http-errors "~1.6.3" + iconv-lite "0.4.23" + on-finished "~2.3.0" + qs "6.5.2" + raw-body "2.3.3" + type-is "~1.6.16" + +bonjour@^3.5.0: + version "3.5.0" + resolved "https://registry.yarnpkg.com/bonjour/-/bonjour-3.5.0.tgz#8e890a183d8ee9a2393b3844c691a42bcf7bc9f5" + integrity sha1-jokKGD2O6aI5OzhExpGkK897yfU= + dependencies: + array-flatten "^2.1.0" + deep-equal "^1.0.1" + dns-equal "^1.0.0" + dns-txt "^2.0.2" + multicast-dns "^6.0.1" + multicast-dns-service-types "^1.1.0" + +boolbase@^1.0.0, boolbase@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e" + integrity sha1-aN/1++YMUes3cl6p4+0xDcwed24= + +brace-expansion@^1.1.7: + version "1.1.11" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" + integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== + dependencies: + balanced-match "^1.0.0" + concat-map "0.0.1" + +braces@^1.8.2: + version "1.8.5" + resolved "https://registry.yarnpkg.com/braces/-/braces-1.8.5.tgz#ba77962e12dff969d6b76711e914b737857bf6a7" + integrity sha1-uneWLhLf+WnWt2cR6RS3N4V79qc= + dependencies: + expand-range "^1.8.1" + preserve "^0.2.0" + repeat-element "^1.1.2" + +braces@^2.3.0, braces@^2.3.1: + version "2.3.2" + resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729" + integrity sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w== + dependencies: + arr-flatten "^1.1.0" + array-unique "^0.3.2" + extend-shallow "^2.0.1" + fill-range "^4.0.0" + isobject "^3.0.1" + repeat-element "^1.1.2" + snapdragon "^0.8.1" + snapdragon-node "^2.0.1" + split-string "^3.0.2" + to-regex "^3.0.1" + +brcast@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/brcast/-/brcast-3.0.1.tgz#6256a8349b20de9eed44257a9b24d71493cd48dd" + integrity sha512-eI3yqf9YEqyGl9PCNTR46MGvDylGtaHjalcz6Q3fAPnP/PhpKkkve52vFdfGpwp4VUvK6LUr4TQN+2stCrEwTg== + +brorand@^1.0.1: + version "1.1.0" + resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" + integrity sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8= + +browser-process-hrtime@^0.1.2: + version "0.1.3" + resolved "https://registry.yarnpkg.com/browser-process-hrtime/-/browser-process-hrtime-0.1.3.tgz#616f00faef1df7ec1b5bf9cfe2bdc3170f26c7b4" + integrity sha512-bRFnI4NnjO6cnyLmOV/7PVoDEMJChlcfN0z4s1YMBY989/SvlfMI1lgCnkFUs53e9gQF+w7qu7XdllSTiSl8Aw== + +browser-resolve@^1.11.3: + version "1.11.3" + resolved "https://registry.yarnpkg.com/browser-resolve/-/browser-resolve-1.11.3.tgz#9b7cbb3d0f510e4cb86bdbd796124d28b5890af6" + integrity sha512-exDi1BYWB/6raKHmDTCicQfTkqwN5fioMFV4j8BsfMU4R2DK/QfZfK7kOVkmWCNANf0snkBzqGqAJBao9gZMdQ== + dependencies: + resolve "1.1.7" + +browserify-aes@^1.0.0, browserify-aes@^1.0.4, browserify-aes@^1.0.6: + version "1.2.0" + resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-1.2.0.tgz#326734642f403dabc3003209853bb70ad428ef48" + integrity sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA== + dependencies: + buffer-xor "^1.0.3" + cipher-base "^1.0.0" + create-hash "^1.1.0" + evp_bytestokey "^1.0.3" + inherits "^2.0.1" + safe-buffer "^5.0.1" + +browserify-cipher@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/browserify-cipher/-/browserify-cipher-1.0.1.tgz#8d6474c1b870bfdabcd3bcfcc1934a10e94f15f0" + integrity sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w== + dependencies: + browserify-aes "^1.0.4" + browserify-des "^1.0.0" + evp_bytestokey "^1.0.0" + +browserify-des@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/browserify-des/-/browserify-des-1.0.2.tgz#3af4f1f59839403572f1c66204375f7a7f703e9c" + integrity sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A== + dependencies: + cipher-base "^1.0.1" + des.js "^1.0.0" + inherits "^2.0.1" + safe-buffer "^5.1.2" + +browserify-rsa@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/browserify-rsa/-/browserify-rsa-4.0.1.tgz#21e0abfaf6f2029cf2fafb133567a701d4135524" + integrity sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ= + dependencies: + bn.js "^4.1.0" + randombytes "^2.0.1" + +browserify-sha3@^0.0.4: + version "0.0.4" + resolved "https://registry.yarnpkg.com/browserify-sha3/-/browserify-sha3-0.0.4.tgz#086c47b8c82316c9d47022c26185954576dd8e26" + integrity sha1-CGxHuMgjFsnUcCLCYYWVRXbdjiY= + dependencies: + js-sha3 "^0.6.1" + safe-buffer "^5.1.1" + +browserify-sign@^4.0.0: + version "4.0.4" + resolved "https://registry.yarnpkg.com/browserify-sign/-/browserify-sign-4.0.4.tgz#aa4eb68e5d7b658baa6bf6a57e630cbd7a93d298" + integrity sha1-qk62jl17ZYuqa/alfmMMvXqT0pg= + dependencies: + bn.js "^4.1.1" + browserify-rsa "^4.0.0" + create-hash "^1.1.0" + create-hmac "^1.1.2" + elliptic "^6.0.0" + inherits "^2.0.1" + parse-asn1 "^5.0.0" + +browserify-zlib@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/browserify-zlib/-/browserify-zlib-0.2.0.tgz#2869459d9aa3be245fe8fe2ca1f46e2e7f54d73f" + integrity sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA== + dependencies: + pako "~1.0.5" + +browserslist@4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.1.1.tgz#328eb4ff1215b12df6589e9ab82f8adaa4fc8cd6" + integrity sha512-VBorw+tgpOtZ1BYhrVSVTzTt/3+vSE3eFUh0N2GCFK1HffceOaf32YS/bs6WiFhjDAblAFrx85jMy3BG9fBK2Q== + dependencies: + caniuse-lite "^1.0.30000884" + electron-to-chromium "^1.3.62" + node-releases "^1.0.0-alpha.11" + +browserslist@^3.2.6: + version "3.2.8" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-3.2.8.tgz#b0005361d6471f0f5952797a76fc985f1f978fc6" + integrity sha512-WHVocJYavUwVgVViC0ORikPHQquXwVh939TaelZ4WDqpWgTX/FsGhl/+P4qBUAGcRvtOgDgC+xftNWWp2RUTAQ== + dependencies: + caniuse-lite "^1.0.30000844" + electron-to-chromium "^1.3.47" + +browserslist@^4.0.0, browserslist@^4.1.0, browserslist@^4.3.4, browserslist@^4.3.7: + version "4.3.7" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.3.7.tgz#f1de479a6466ea47a0a26dcc725e7504817e624a" + integrity sha512-pWQv51Ynb0MNk9JGMCZ8VkM785/4MQNXiFYtPqI7EEP0TJO+/d/NqRVn1uiAN0DNbnlUSpL2sh16Kspasv3pUQ== + dependencies: + caniuse-lite "^1.0.30000925" + electron-to-chromium "^1.3.96" + node-releases "^1.1.3" + +bser@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/bser/-/bser-2.0.0.tgz#9ac78d3ed5d915804fd87acb158bc797147a1719" + integrity sha1-mseNPtXZFYBP2HrLFYvHlxR6Fxk= + dependencies: + node-int64 "^0.4.0" + +buffer-alloc-unsafe@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz#bd7dc26ae2972d0eda253be061dba992349c19f0" + integrity sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg== + +buffer-alloc@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/buffer-alloc/-/buffer-alloc-1.2.0.tgz#890dd90d923a873e08e10e5fd51a57e5b7cce0ec" + integrity sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow== + dependencies: + buffer-alloc-unsafe "^1.1.0" + buffer-fill "^1.0.0" + +buffer-crc32@~0.2.3: + version "0.2.13" + resolved "https://registry.yarnpkg.com/buffer-crc32/-/buffer-crc32-0.2.13.tgz#0d333e3f00eac50aa1454abd30ef8c2a5d9a7242" + integrity sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI= + +buffer-fill@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/buffer-fill/-/buffer-fill-1.0.0.tgz#f8f78b76789888ef39f205cd637f68e702122b2c" + integrity sha1-+PeLdniYiO858gXNY39o5wISKyw= + +buffer-from@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" + integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A== + +buffer-indexof@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/buffer-indexof/-/buffer-indexof-1.1.1.tgz#52fabcc6a606d1a00302802648ef68f639da268c" + integrity sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g== + +buffer-to-arraybuffer@^0.0.5: + version "0.0.5" + resolved "https://registry.yarnpkg.com/buffer-to-arraybuffer/-/buffer-to-arraybuffer-0.0.5.tgz#6064a40fa76eb43c723aba9ef8f6e1216d10511a" + integrity sha1-YGSkD6dutDxyOrqe+PbhIW0QURo= + +buffer-xor@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9" + integrity sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk= + +buffer@^3.0.1: + version "3.6.0" + resolved "https://registry.yarnpkg.com/buffer/-/buffer-3.6.0.tgz#a72c936f77b96bf52f5f7e7b467180628551defb" + integrity sha1-pyyTb3e5a/UvX357RnGAYoVR3vs= + dependencies: + base64-js "0.0.8" + ieee754 "^1.1.4" + isarray "^1.0.0" + +buffer@^4.3.0: + version "4.9.1" + resolved "https://registry.yarnpkg.com/buffer/-/buffer-4.9.1.tgz#6d1bb601b07a4efced97094132093027c95bc298" + integrity sha1-bRu2AbB6TvztlwlBMgkwJ8lbwpg= + dependencies: + base64-js "^1.0.2" + ieee754 "^1.1.4" + isarray "^1.0.0" + +buffer@^5.0.5: + version "5.2.1" + resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.2.1.tgz#dd57fa0f109ac59c602479044dca7b8b3d0b71d6" + integrity sha512-c+Ko0loDaFfuPWiL02ls9Xd3GO3cPVmUobQ6t3rXNUk304u6hGq+8N/kFi+QEIKhzK3uwolVhLzszmfLmMLnqg== + dependencies: + base64-js "^1.0.2" + ieee754 "^1.1.4" + +builtin-modules@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f" + integrity sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8= + +builtin-status-codes@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8" + integrity sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug= + +bytes@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048" + integrity sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg= + +cacache@^10.0.4: + version "10.0.4" + resolved "https://registry.yarnpkg.com/cacache/-/cacache-10.0.4.tgz#6452367999eff9d4188aefd9a14e9d7c6a263460" + integrity sha512-Dph0MzuH+rTQzGPNT9fAnrPmMmjKfST6trxJeK7NQuHRaVw24VzPRWTmg9MpcwOVQZO0E1FBICUlFeNaKPIfHA== + dependencies: + bluebird "^3.5.1" + chownr "^1.0.1" + glob "^7.1.2" + graceful-fs "^4.1.11" + lru-cache "^4.1.1" + mississippi "^2.0.0" + mkdirp "^0.5.1" + move-concurrently "^1.0.1" + promise-inflight "^1.0.1" + rimraf "^2.6.2" + ssri "^5.2.4" + unique-filename "^1.1.0" + y18n "^4.0.0" + +cacache@^11.0.2: + version "11.3.2" + resolved "https://registry.yarnpkg.com/cacache/-/cacache-11.3.2.tgz#2d81e308e3d258ca38125b676b98b2ac9ce69bfa" + integrity sha512-E0zP4EPGDOaT2chM08Als91eYnf8Z+eH1awwwVsngUmgppfM5jjJ8l3z5vO5p5w/I3LsiXawb1sW0VY65pQABg== + dependencies: + bluebird "^3.5.3" + chownr "^1.1.1" + figgy-pudding "^3.5.1" + glob "^7.1.3" + graceful-fs "^4.1.15" + lru-cache "^5.1.1" + mississippi "^3.0.0" + mkdirp "^0.5.1" + move-concurrently "^1.0.1" + promise-inflight "^1.0.1" + rimraf "^2.6.2" + ssri "^6.0.1" + unique-filename "^1.1.1" + y18n "^4.0.0" + +cache-base@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2" + integrity sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ== + dependencies: + collection-visit "^1.0.0" + component-emitter "^1.2.1" + get-value "^2.0.6" + has-value "^1.0.0" + isobject "^3.0.1" + set-value "^2.0.0" + to-object-path "^0.3.0" + union-value "^1.0.0" + unset-value "^1.0.0" + +call-me-maybe@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/call-me-maybe/-/call-me-maybe-1.0.1.tgz#26d208ea89e37b5cbde60250a15f031c16a4d66b" + integrity sha1-JtII6onje1y95gJQoV8DHBak1ms= + +caller-callsite@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/caller-callsite/-/caller-callsite-2.0.0.tgz#847e0fce0a223750a9a027c54b33731ad3154134" + integrity sha1-hH4PzgoiN1CpoCfFSzNzGtMVQTQ= + dependencies: + callsites "^2.0.0" + +caller-path@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/caller-path/-/caller-path-0.1.0.tgz#94085ef63581ecd3daa92444a8fe94e82577751f" + integrity sha1-lAhe9jWB7NPaqSREqP6U6CV3dR8= + dependencies: + callsites "^0.2.0" + +caller-path@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/caller-path/-/caller-path-2.0.0.tgz#468f83044e369ab2010fac5f06ceee15bb2cb1f4" + integrity sha1-Ro+DBE42mrIBD6xfBs7uFbsssfQ= + dependencies: + caller-callsite "^2.0.0" + +callsites@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/callsites/-/callsites-0.2.0.tgz#afab96262910a7f33c19a5775825c69f34e350ca" + integrity sha1-r6uWJikQp/M8GaV3WCXGnzTjUMo= + +callsites@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/callsites/-/callsites-2.0.0.tgz#06eb84f00eea413da86affefacbffb36093b3c50" + integrity sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA= + +camel-case@3.0.x: + version "3.0.0" + resolved "https://registry.yarnpkg.com/camel-case/-/camel-case-3.0.0.tgz#ca3c3688a4e9cf3a4cda777dc4dcbc713249cf73" + integrity sha1-yjw2iKTpzzpM2nd9xNy8cTJJz3M= + dependencies: + no-case "^2.2.0" + upper-case "^1.1.1" + +camelcase@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-4.1.0.tgz#d545635be1e33c542649c69173e5de6acfae34dd" + integrity sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0= + +camelcase@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.0.0.tgz#03295527d58bd3cd4aa75363f35b2e8d97be2f42" + integrity sha512-faqwZqnWxbxn+F1d399ygeamQNy3lPp/H9H6rNrqYh4FSVCtcY+3cub1MxA8o9mDd55mM8Aghuu/kuyYA6VTsA== + +caniuse-api@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/caniuse-api/-/caniuse-api-3.0.0.tgz#5e4d90e2274961d46291997df599e3ed008ee4c0" + integrity sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw== + dependencies: + browserslist "^4.0.0" + caniuse-lite "^1.0.0" + lodash.memoize "^4.1.2" + lodash.uniq "^4.5.0" + +caniuse-lite@^1.0.0, caniuse-lite@^1.0.30000884, caniuse-lite@^1.0.30000905, caniuse-lite@^1.0.30000925, caniuse-lite@^1.0.30000926: + version "1.0.30000927" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30000927.tgz#114a9de4ff1e01f5790fe578ecd93421c7524665" + integrity sha512-ogq4NbUWf1uG/j66k0AmiO3GjqJAlQyF8n4w8a954cbCyFKmYGvRtgz6qkq2fWuduTXHibX7GyYL5Pg58Aks2g== + +caniuse-lite@^1.0.30000844: + version "1.0.30000928" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30000928.tgz#805e828dc72b06498e3683a32e61c7507fd67b88" + integrity sha512-aSpMWRXL6ZXNnzm8hgE4QDLibG5pVJ2Ujzsuj3icazlIkxXkPXtL+BWnMx6FBkWmkZgBHGUxPZQvrbRw2ZTxhg== + +capture-exit@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/capture-exit/-/capture-exit-1.2.0.tgz#1c5fcc489fd0ab00d4f1ac7ae1072e3173fbab6f" + integrity sha1-HF/MSJ/QqwDU8ax64QcuMXP7q28= + dependencies: + rsvp "^3.3.3" + +case-sensitive-paths-webpack-plugin@2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/case-sensitive-paths-webpack-plugin/-/case-sensitive-paths-webpack-plugin-2.1.2.tgz#c899b52175763689224571dad778742e133f0192" + integrity sha512-oEZgAFfEvKtjSRCu6VgYkuGxwrWXMnQzyBmlLPP7r6PWQVtHxP5Z5N6XsuJvtoVax78am/r7lr46bwo3IVEBOg== + +caseless@~0.12.0: + version "0.12.0" + resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" + integrity sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw= + +chalk@2.4.1, chalk@^2.0.0, chalk@^2.0.1, chalk@^2.1.0, chalk@^2.4.1: + version "2.4.1" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.1.tgz#18c49ab16a037b6eb0152cc83e3471338215b66e" + integrity sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ== + dependencies: + ansi-styles "^3.2.1" + escape-string-regexp "^1.0.5" + supports-color "^5.3.0" + +chalk@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" + integrity sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg= + dependencies: + ansi-styles "^2.2.1" + escape-string-regexp "^1.0.2" + has-ansi "^2.0.0" + strip-ansi "^3.0.0" + supports-color "^2.0.0" + +change-emitter@^0.1.2: + version "0.1.6" + resolved "https://registry.yarnpkg.com/change-emitter/-/change-emitter-0.1.6.tgz#e8b2fe3d7f1ab7d69a32199aff91ea6931409515" + integrity sha1-6LL+PX8at9aaMhma/5HqaTFAlRU= + +chardet@^0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e" + integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA== + +check-types@^7.3.0: + version "7.4.0" + resolved "https://registry.yarnpkg.com/check-types/-/check-types-7.4.0.tgz#0378ec1b9616ec71f774931a3c6516fad8c152f4" + integrity sha512-YbulWHdfP99UfZ73NcUDlNJhEIDgm9Doq9GhpyXbF+7Aegi3CVV7qqMCKTTqJxlvEvnQBp9IA+dxsGN6xK/nSg== + +chokidar@^2.0.0, chokidar@^2.0.2, chokidar@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.0.4.tgz#356ff4e2b0e8e43e322d18a372460bbcf3accd26" + integrity sha512-z9n7yt9rOvIJrMhvDtDictKrkFHeihkNl6uWMmZlmL6tJtX9Cs+87oK+teBx+JIgzvbX3yZHT3eF8vpbDxHJXQ== + dependencies: + anymatch "^2.0.0" + async-each "^1.0.0" + braces "^2.3.0" + glob-parent "^3.1.0" + inherits "^2.0.1" + is-binary-path "^1.0.0" + is-glob "^4.0.0" + lodash.debounce "^4.0.8" + normalize-path "^2.1.1" + path-is-absolute "^1.0.0" + readdirp "^2.0.0" + upath "^1.0.5" + optionalDependencies: + fsevents "^1.2.2" + +chownr@^1.0.1, chownr@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.1.tgz#54726b8b8fff4df053c42187e801fb4412df1494" + integrity sha512-j38EvO5+LHX84jlo6h4UzmOwi0UgW61WRyPtJz4qaadK5eY3BTS5TY/S1Stc3Uk2lIM6TPevAlULiEJwie860g== + +chrome-trace-event@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.0.tgz#45a91bd2c20c9411f0963b5aaeb9a1b95e09cc48" + integrity sha512-xDbVgyfDTT2piup/h8dK/y4QZfJRSa73bw1WZ8b4XM1o7fsFubUVGYcE+1ANtOzJJELGpYoG2961z0Z6OAld9A== + dependencies: + tslib "^1.9.0" + +ci-info@^1.5.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-1.6.0.tgz#2ca20dbb9ceb32d4524a683303313f0304b1e497" + integrity sha512-vsGdkwSCDpWmP80ncATX7iea5DWQemg1UgCW5J8tqjU3lYw4FBYuj89J0CTVomA7BEfvSZd84GmHko+MxFQU2A== + +cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.4.tgz#8760e4ecc272f4c363532f926d874aae2c1397de" + integrity sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q== + dependencies: + inherits "^2.0.1" + safe-buffer "^5.0.1" + +circular-json@^0.3.1: + version "0.3.3" + resolved "https://registry.yarnpkg.com/circular-json/-/circular-json-0.3.3.tgz#815c99ea84f6809529d2f45791bdf82711352d66" + integrity sha512-UZK3NBx2Mca+b5LsG7bY183pHWt5Y1xts4P3Pz7ENTwGVnJOUWbRb3ocjvX7hx9tq/yTAdclXm9sZ38gNuem4A== + +class-utils@^0.3.5: + version "0.3.6" + resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463" + integrity sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg== + dependencies: + arr-union "^3.1.0" + define-property "^0.2.5" + isobject "^3.0.0" + static-extend "^0.1.1" + +classnames@^2.2.5: + version "2.2.6" + resolved "https://registry.yarnpkg.com/classnames/-/classnames-2.2.6.tgz#43935bffdd291f326dad0a205309b38d00f650ce" + integrity sha512-JR/iSQOSt+LQIWwrwEzJ9uk0xfN3mTVYMwt1Ir5mUcSN6pU+V4zQFFaJsclJbPuAUQH+yfWef6tm7l1quW3C8Q== + +clean-css@4.2.x: + version "4.2.1" + resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-4.2.1.tgz#2d411ef76b8569b6d0c84068dabe85b0aa5e5c17" + integrity sha512-4ZxI6dy4lrY6FHzfiy1aEOXgu4LIsW2MhwG0VBKdcoGoH/XLFgaHSdLTGr4O8Be6A8r3MOphEiI8Gc1n0ecf3g== + dependencies: + source-map "~0.6.0" + +cli-cursor@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-2.1.0.tgz#b35dac376479facc3e94747d41d0d0f5238ffcb5" + integrity sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU= + dependencies: + restore-cursor "^2.0.0" + +cli-width@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.2.0.tgz#ff19ede8a9a5e579324147b0c11f0fbcbabed639" + integrity sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk= + +cliui@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-4.1.0.tgz#348422dbe82d800b3022eef4f6ac10bf2e4d1b49" + integrity sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ== + dependencies: + string-width "^2.1.1" + strip-ansi "^4.0.0" + wrap-ansi "^2.0.0" + +clone-deep@^0.2.4: + version "0.2.4" + resolved "https://registry.yarnpkg.com/clone-deep/-/clone-deep-0.2.4.tgz#4e73dd09e9fb971cc38670c5dced9c1896481cc6" + integrity sha1-TnPdCen7lxzDhnDF3O2cGJZIHMY= + dependencies: + for-own "^0.1.3" + is-plain-object "^2.0.1" + kind-of "^3.0.2" + lazy-cache "^1.0.3" + shallow-clone "^0.1.2" + +clone-deep@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/clone-deep/-/clone-deep-2.0.2.tgz#00db3a1e173656730d1188c3d6aced6d7ea97713" + integrity sha512-SZegPTKjCgpQH63E+eN6mVEEPdQBOUzjyJm5Pora4lrwWRFS8I0QAxV/KD6vV/i0WuijHZWQC1fMsPEdxfdVCQ== + dependencies: + for-own "^1.0.0" + is-plain-object "^2.0.4" + kind-of "^6.0.0" + shallow-clone "^1.0.0" + +co@^4.6.0: + version "4.6.0" + resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" + integrity sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ= + +coa@~2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/coa/-/coa-2.0.2.tgz#43f6c21151b4ef2bf57187db0d73de229e3e7ec3" + integrity sha512-q5/jG+YQnSy4nRTV4F7lPepBJZ8qBNJJDBuJdoejDyLXgmL7IEo+Le2JDZudFTFt7mrCqIRaSjws4ygRCTCAXA== + dependencies: + "@types/q" "^1.5.1" + chalk "^2.4.1" + q "^1.1.2" + +code-point-at@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" + integrity sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c= + +collection-visit@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0" + integrity sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA= + dependencies: + map-visit "^1.0.0" + object-visit "^1.0.0" + +color-convert@^1.9.0, color-convert@^1.9.1: + version "1.9.3" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" + integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== + dependencies: + color-name "1.1.3" + +color-name@1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" + integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= + +color-name@^1.0.0: + version "1.1.4" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" + integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== + +color-string@^1.5.2: + version "1.5.3" + resolved "https://registry.yarnpkg.com/color-string/-/color-string-1.5.3.tgz#c9bbc5f01b58b5492f3d6857459cb6590ce204cc" + integrity sha512-dC2C5qeWoYkxki5UAXapdjqO672AM4vZuPGRQfO8b5HKuKGBbKWpITyDYN7TOFKvRW7kOgAn3746clDBMDJyQw== + dependencies: + color-name "^1.0.0" + simple-swizzle "^0.2.2" + +color@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/color/-/color-3.1.0.tgz#d8e9fb096732875774c84bf922815df0308d0ffc" + integrity sha512-CwyopLkuRYO5ei2EpzpIh6LqJMt6Mt+jZhO5VI5f/wJLZriXQE32/SSqzmrh+QB+AZT81Cj8yv+7zwToW8ahZg== + dependencies: + color-convert "^1.9.1" + color-string "^1.5.2" + +colors@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/colors/-/colors-1.1.2.tgz#168a4701756b6a7f51a12ce0c97bfa28c084ed63" + integrity sha1-FopHAXVran9RoSzgyXv6KMCE7WM= + +combined-stream@^1.0.6, combined-stream@~1.0.6: + version "1.0.7" + resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.7.tgz#2d1d24317afb8abe95d6d2c0b07b57813539d828" + integrity sha512-brWl9y6vOB1xYPZcpZde3N9zDByXTosAeMDo4p1wzo6UMOX4vumB+TP1RZ76sfE6Md68Q0NJSrE/gbezd4Ul+w== + dependencies: + delayed-stream "~1.0.0" + +commander@2.17.x, commander@~2.17.1: + version "2.17.1" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.17.1.tgz#bd77ab7de6de94205ceacc72f1716d29f20a77bf" + integrity sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg== + +commander@^2.11.0, commander@^2.8.1: + version "2.19.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.19.0.tgz#f6198aa84e5b83c46054b94ddedbfed5ee9ff12a" + integrity sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg== + +commander@~2.13.0: + version "2.13.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.13.0.tgz#6964bca67685df7c1f1430c584f07d7597885b9c" + integrity sha512-MVuS359B+YzaWqjCL/c+22gfryv+mCBPHAv3zyVI2GN8EY6IRP8VwtasXn8jyyhvvq84R4ImN1OKRtcbIasjYA== + +commander@~2.8.1: + version "2.8.1" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.8.1.tgz#06be367febfda0c330aa1e2a072d3dc9762425d4" + integrity sha1-Br42f+v9oMMwqh4qBy09yXYkJdQ= + dependencies: + graceful-readlink ">= 1.0.0" + +common-tags@^1.4.0: + version "1.8.0" + resolved "https://registry.yarnpkg.com/common-tags/-/common-tags-1.8.0.tgz#8e3153e542d4a39e9b10554434afaaf98956a937" + integrity sha512-6P6g0uetGpW/sdyUy/iQQCbFF0kWVMSIVSyYz7Zgjcgh8mgw8PQzDNZeyZ5DQ2gM7LBoZPHmnjz8rUthkBG5tw== + +commondir@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" + integrity sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs= + +component-emitter@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.2.1.tgz#137918d6d78283f7df7a6b7c5a63e140e69425e6" + integrity sha1-E3kY1teCg/ffemt8WmPhQOaUJeY= + +compressible@~2.0.14: + version "2.0.15" + resolved "https://registry.yarnpkg.com/compressible/-/compressible-2.0.15.tgz#857a9ab0a7e5a07d8d837ed43fe2defff64fe212" + integrity sha512-4aE67DL33dSW9gw4CI2H/yTxqHLNcxp0yS6jB+4h+wr3e43+1z7vm0HU9qXOH8j+qjKuL8+UtkOxYQSMq60Ylw== + dependencies: + mime-db ">= 1.36.0 < 2" + +compression@^1.5.2: + version "1.7.3" + resolved "https://registry.yarnpkg.com/compression/-/compression-1.7.3.tgz#27e0e176aaf260f7f2c2813c3e440adb9f1993db" + integrity sha512-HSjyBG5N1Nnz7tF2+O7A9XUhyjru71/fwgNb7oIsEVHR0WShfs2tIS/EySLgiTe98aOK18YDlMXpzjCXY/n9mg== + dependencies: + accepts "~1.3.5" + bytes "3.0.0" + compressible "~2.0.14" + debug "2.6.9" + on-headers "~1.0.1" + safe-buffer "5.1.2" + vary "~1.1.2" + +concat-map@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" + integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= + +concat-stream@^1.5.0: + version "1.6.2" + resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34" + integrity sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw== + dependencies: + buffer-from "^1.0.0" + inherits "^2.0.3" + readable-stream "^2.2.2" + typedarray "^0.0.6" + +confusing-browser-globals@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/confusing-browser-globals/-/confusing-browser-globals-1.0.5.tgz#0171050cfdd4261e278978078bc00c4d88e135f4" + integrity sha512-tHo1tQL/9Ox5RELbkCAJhnViqWlzBz3MG1bB2czbHjH2mWd4aYUgNCNLfysFL7c4LoDws7pjg2tj48Gmpw4QHA== + +connect-history-api-fallback@^1.3.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/connect-history-api-fallback/-/connect-history-api-fallback-1.5.0.tgz#b06873934bc5e344fef611a196a6faae0aee015a" + integrity sha1-sGhzk0vF40T+9hGhlqb6rgruAVo= + +console-browserify@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/console-browserify/-/console-browserify-1.1.0.tgz#f0241c45730a9fc6323b206dbf38edc741d0bb10" + integrity sha1-8CQcRXMKn8YyOyBtvzjtx0HQuxA= + dependencies: + date-now "^0.1.4" + +console-control-strings@^1.0.0, console-control-strings@~1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" + integrity sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4= + +constants-browserify@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/constants-browserify/-/constants-browserify-1.0.0.tgz#c20b96d8c617748aaf1c16021760cd27fcb8cb75" + integrity sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U= + +contains-path@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/contains-path/-/contains-path-0.1.0.tgz#fe8cf184ff6670b6baef01a9d4861a5cbec4120a" + integrity sha1-/ozxhP9mcLa67wGp1IYaXL7EEgo= + +content-disposition@0.5.2: + version "0.5.2" + resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.2.tgz#0cf68bb9ddf5f2be7961c3a85178cb85dba78cb4" + integrity sha1-DPaLud318r55YcOoUXjLhdunjLQ= + +content-type@~1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b" + integrity sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA== + +convert-source-map@^1.1.0, convert-source-map@^1.4.0, convert-source-map@^1.5.1: + version "1.6.0" + resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.6.0.tgz#51b537a8c43e0f04dec1993bffcdd504e758ac20" + integrity sha512-eFu7XigvxdZ1ETfbgPBohgyQ/Z++C0eEhTor0qRwBw9unw+L0/6V8wkSuGgzdThkiS5lSpdptOQPD8Ak40a+7A== + dependencies: + safe-buffer "~5.1.1" + +cookie-signature@1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" + integrity sha1-4wOogrNCzD7oylE6eZmXNNqzriw= + +cookie@0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.3.1.tgz#e7e0a1f9ef43b4c8ba925c5c5a96e806d16873bb" + integrity sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s= + +cookiejar@^2.1.1: + version "2.1.2" + resolved "https://registry.yarnpkg.com/cookiejar/-/cookiejar-2.1.2.tgz#dd8a235530752f988f9a0844f3fc589e3111125c" + integrity sha512-Mw+adcfzPxcPeI+0WlvRrr/3lGVO0bD75SxX6811cxSh1Wbxx7xZBGK1eVtDf6si8rg2lhnUjsVLMFMfbRIuwA== + +copy-concurrently@^1.0.0: + version "1.0.5" + resolved "https://registry.yarnpkg.com/copy-concurrently/-/copy-concurrently-1.0.5.tgz#92297398cae34937fcafd6ec8139c18051f0b5e0" + integrity sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A== + dependencies: + aproba "^1.1.1" + fs-write-stream-atomic "^1.0.8" + iferr "^0.1.5" + mkdirp "^0.5.1" + rimraf "^2.5.4" + run-queue "^1.0.0" + +copy-descriptor@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" + integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40= + +core-js@2.5.7: + version "2.5.7" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.5.7.tgz#f972608ff0cead68b841a16a932d0b183791814e" + integrity sha512-RszJCAxg/PP6uzXVXL6BsxSXx/B05oJAQ2vkJRjyjrEcNVycaqOmNb5OTxZPE3xa5gwZduqza6L9JOCenh/Ecw== + +core-js@^1.0.0: + version "1.2.7" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-1.2.7.tgz#652294c14651db28fa93bd2d5ff2983a4f08c636" + integrity sha1-ZSKUwUZR2yj6k70tX/KYOk8IxjY= + +core-js@^2.4.0, core-js@^2.5.0: + version "2.6.1" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.1.tgz#87416ae817de957a3f249b3b5ca475d4aaed6042" + integrity sha512-L72mmmEayPJBejKIWe2pYtGis5r0tQ5NaJekdhyXgeMQTpJoBsH0NL4ElY2LfSoV15xeQWKQ+XTTOZdyero5Xg== + +core-util-is@1.0.2, core-util-is@~1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" + integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= + +cors@^2.8.1: + version "2.8.5" + resolved "https://registry.yarnpkg.com/cors/-/cors-2.8.5.tgz#eac11da51592dd86b9f06f6e7ac293b3df875d29" + integrity sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g== + dependencies: + object-assign "^4" + vary "^1" + +cosmiconfig@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-4.0.0.tgz#760391549580bbd2df1e562bc177b13c290972dc" + integrity sha512-6e5vDdrXZD+t5v0L8CrurPeybg4Fmf+FCSYxXKYVAqLUtyCSbuyqE059d0kDthTNRzKVjL7QMgNpEUlsoYH3iQ== + dependencies: + is-directory "^0.3.1" + js-yaml "^3.9.0" + parse-json "^4.0.0" + require-from-string "^2.0.1" + +cosmiconfig@^5.0.0, cosmiconfig@^5.0.5, cosmiconfig@^5.0.6: + version "5.0.7" + resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-5.0.7.tgz#39826b292ee0d78eda137dfa3173bd1c21a43b04" + integrity sha512-PcLqxTKiDmNT6pSpy4N6KtuPwb53W+2tzNvwOZw0WH9N6O0vLIBq0x8aj8Oj75ere4YcGi48bDFCL+3fRJdlNA== + dependencies: + import-fresh "^2.0.0" + is-directory "^0.3.1" + js-yaml "^3.9.0" + parse-json "^4.0.0" + +create-ecdh@^4.0.0: + version "4.0.3" + resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.3.tgz#c9111b6f33045c4697f144787f9254cdc77c45ff" + integrity sha512-GbEHQPMOswGpKXM9kCWVrremUcBmjteUaQ01T9rkKCPDXfUHX0IoP9LpHYo2NPFampa4e+/pFDc3jQdxrxQLaw== + dependencies: + bn.js "^4.1.0" + elliptic "^6.0.0" + +create-hash@^1.1.0, create-hash@^1.1.2: + version "1.2.0" + resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.2.0.tgz#889078af11a63756bcfb59bd221996be3a9ef196" + integrity sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg== + dependencies: + cipher-base "^1.0.1" + inherits "^2.0.1" + md5.js "^1.3.4" + ripemd160 "^2.0.1" + sha.js "^2.4.0" + +create-hmac@^1.1.0, create-hmac@^1.1.2, create-hmac@^1.1.4: + version "1.1.7" + resolved "https://registry.yarnpkg.com/create-hmac/-/create-hmac-1.1.7.tgz#69170c78b3ab957147b2b8b04572e47ead2243ff" + integrity sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg== + dependencies: + cipher-base "^1.0.3" + create-hash "^1.1.0" + inherits "^2.0.1" + ripemd160 "^2.0.0" + safe-buffer "^5.0.1" + sha.js "^2.4.8" + +create-react-class@^15.6.0: + version "15.6.3" + resolved "https://registry.yarnpkg.com/create-react-class/-/create-react-class-15.6.3.tgz#2d73237fb3f970ae6ebe011a9e66f46dbca80036" + integrity sha512-M+/3Q6E6DLO6Yx3OwrWjwHBnvfXXYA7W+dFjt/ZDBemHO1DDZhsalX/NUtnTYclN6GfnBDRh4qRHjcDHmlJBJg== + dependencies: + fbjs "^0.8.9" + loose-envify "^1.3.1" + object-assign "^4.1.1" + +create-react-context@^0.2.2: + version "0.2.3" + resolved "https://registry.yarnpkg.com/create-react-context/-/create-react-context-0.2.3.tgz#9ec140a6914a22ef04b8b09b7771de89567cb6f3" + integrity sha512-CQBmD0+QGgTaxDL3OX1IDXYqjkp2It4RIbcb99jS6AEg27Ga+a9G3JtK6SIu0HBwPLZlmwt9F7UwWA4Bn92Rag== + dependencies: + fbjs "^0.8.0" + gud "^1.0.0" + +cross-spawn@6.0.5, cross-spawn@^6.0.0, cross-spawn@^6.0.5: + version "6.0.5" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" + integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ== + dependencies: + nice-try "^1.0.4" + path-key "^2.0.1" + semver "^5.5.0" + shebang-command "^1.2.0" + which "^1.2.9" + +cross-spawn@^5.0.1: + version "5.1.0" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-5.1.0.tgz#e8bd0efee58fcff6f8f94510a0a554bbfa235449" + integrity sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk= + dependencies: + lru-cache "^4.0.1" + shebang-command "^1.2.0" + which "^1.2.9" + +crypto-browserify@3.12.0, crypto-browserify@^3.11.0: + version "3.12.0" + resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.12.0.tgz#396cf9f3137f03e4b8e532c58f698254e00f80ec" + integrity sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg== + dependencies: + browserify-cipher "^1.0.0" + browserify-sign "^4.0.0" + create-ecdh "^4.0.0" + create-hash "^1.1.0" + create-hmac "^1.1.0" + diffie-hellman "^5.0.0" + inherits "^2.0.1" + pbkdf2 "^3.0.3" + public-encrypt "^4.0.0" + randombytes "^2.0.0" + randomfill "^1.0.3" + +css-color-names@0.0.4, css-color-names@^0.0.4: + version "0.0.4" + resolved "https://registry.yarnpkg.com/css-color-names/-/css-color-names-0.0.4.tgz#808adc2e79cf84738069b646cb20ec27beb629e0" + integrity sha1-gIrcLnnPhHOAabZGyyDsJ762KeA= + +css-declaration-sorter@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/css-declaration-sorter/-/css-declaration-sorter-4.0.1.tgz#c198940f63a76d7e36c1e71018b001721054cb22" + integrity sha512-BcxQSKTSEEQUftYpBVnsH4SF05NTuBokb19/sBt6asXGKZ/6VP7PLG1CBCkFDYOnhXhPh0jMhO6xZ71oYHXHBA== + dependencies: + postcss "^7.0.1" + timsort "^0.3.0" + +css-loader@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-1.0.0.tgz#9f46aaa5ca41dbe31860e3b62b8e23c42916bf56" + integrity sha512-tMXlTYf3mIMt3b0dDCOQFJiVvxbocJ5Ho577WiGPYPZcqVEO218L2iU22pDXzkTZCLDE+9AmGSUkWxeh/nZReA== + dependencies: + babel-code-frame "^6.26.0" + css-selector-tokenizer "^0.7.0" + icss-utils "^2.1.0" + loader-utils "^1.0.2" + lodash.camelcase "^4.3.0" + postcss "^6.0.23" + postcss-modules-extract-imports "^1.2.0" + postcss-modules-local-by-default "^1.2.0" + postcss-modules-scope "^1.1.0" + postcss-modules-values "^1.3.0" + postcss-value-parser "^3.3.0" + source-list-map "^2.0.0" + +css-select-base-adapter@~0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz#3b2ff4972cc362ab88561507a95408a1432135d7" + integrity sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w== + +css-select@^1.1.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/css-select/-/css-select-1.2.0.tgz#2b3a110539c5355f1cd8d314623e870b121ec858" + integrity sha1-KzoRBTnFNV8c2NMUYj6HCxIeyFg= + dependencies: + boolbase "~1.0.0" + css-what "2.1" + domutils "1.5.1" + nth-check "~1.0.1" + +css-select@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/css-select/-/css-select-2.0.2.tgz#ab4386cec9e1f668855564b17c3733b43b2a5ede" + integrity sha512-dSpYaDVoWaELjvZ3mS6IKZM/y2PMPa/XYoEfYNZePL4U/XgyxZNroHEHReDx/d+VgXh9VbCTtFqLkFbmeqeaRQ== + dependencies: + boolbase "^1.0.0" + css-what "^2.1.2" + domutils "^1.7.0" + nth-check "^1.0.2" + +css-selector-tokenizer@^0.7.0: + version "0.7.1" + resolved "https://registry.yarnpkg.com/css-selector-tokenizer/-/css-selector-tokenizer-0.7.1.tgz#a177271a8bca5019172f4f891fc6eed9cbf68d5d" + integrity sha512-xYL0AMZJ4gFzJQsHUKa5jiWWi2vH77WVNg7JYRyewwj6oPh4yb/y6Y9ZCw9dsj/9UauMhtuxR+ogQd//EdEVNA== + dependencies: + cssesc "^0.1.0" + fastparse "^1.1.1" + regexpu-core "^1.0.0" + +css-tree@1.0.0-alpha.28: + version "1.0.0-alpha.28" + resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.0.0-alpha.28.tgz#8e8968190d886c9477bc8d61e96f61af3f7ffa7f" + integrity sha512-joNNW1gCp3qFFzj4St6zk+Wh/NBv0vM5YbEreZk0SD4S23S+1xBKb6cLDg2uj4P4k/GUMlIm6cKIDqIG+vdt0w== + dependencies: + mdn-data "~1.1.0" + source-map "^0.5.3" + +css-tree@1.0.0-alpha.29: + version "1.0.0-alpha.29" + resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.0.0-alpha.29.tgz#3fa9d4ef3142cbd1c301e7664c1f352bd82f5a39" + integrity sha512-sRNb1XydwkW9IOci6iB2xmy8IGCj6r/fr+JWitvJ2JxQRPzN3T4AGGVWCMlVmVwM1gtgALJRmGIlWv5ppnGGkg== + dependencies: + mdn-data "~1.1.0" + source-map "^0.5.3" + +css-unit-converter@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/css-unit-converter/-/css-unit-converter-1.1.1.tgz#d9b9281adcfd8ced935bdbaba83786897f64e996" + integrity sha1-2bkoGtz9jO2TW9urqDeGiX9k6ZY= + +css-url-regex@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/css-url-regex/-/css-url-regex-1.1.0.tgz#83834230cc9f74c457de59eebd1543feeb83b7ec" + integrity sha1-g4NCMMyfdMRX3lnuvRVD/uuDt+w= + +css-vendor@^0.3.8: + version "0.3.8" + resolved "https://registry.yarnpkg.com/css-vendor/-/css-vendor-0.3.8.tgz#6421cfd3034ce664fe7673972fd0119fc28941fa" + integrity sha1-ZCHP0wNM5mT+dnOXL9ARn8KJQfo= + dependencies: + is-in-browser "^1.0.2" + +css-what@2.1, css-what@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/css-what/-/css-what-2.1.2.tgz#c0876d9d0480927d7d4920dcd72af3595649554d" + integrity sha512-wan8dMWQ0GUeF7DGEPVjhHemVW/vy6xUYmFzRY8RYqgA0JtXC9rJmbScBjqSu6dg9q0lwPQy6ZAmJVr3PPTvqQ== + +cssdb@^4.1.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/cssdb/-/cssdb-4.3.0.tgz#2e1229900616f80c66ff2d568ea2b4f92db1c78c" + integrity sha512-VHPES/+c9s+I0ryNj+PXvp84nz+ms843z/efpaEINwP/QfGsINL3gpLp5qjapzDNzNzbXxur8uxKxSXImrg4ag== + +cssesc@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-0.1.0.tgz#c814903e45623371a0477b40109aaafbeeaddbb4" + integrity sha1-yBSQPkViM3GgR3tAEJqq++6t27Q= + +cssesc@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-2.0.0.tgz#3b13bd1bb1cb36e1bcb5a4dcd27f54c5dcb35703" + integrity sha512-MsCAG1z9lPdoO/IUMLSBWBSVxVtJ1395VGIQ+Fc2gNdkQ1hNDnQdw3YhA71WJCBW1vdwA0cAnk/DnW6bqoEUYg== + +cssnano-preset-default@^4.0.6: + version "4.0.6" + resolved "https://registry.yarnpkg.com/cssnano-preset-default/-/cssnano-preset-default-4.0.6.tgz#92379e2a6db4a91c0ea727f5f556eeac693eab6a" + integrity sha512-UPboYbFaJFtDUhJ4fqctThWbbyF4q01/7UhsZbLzp35l+nUxtzh1SifoVlEfyLM3n3Z0htd8B1YlCxy9i+bQvg== + dependencies: + css-declaration-sorter "^4.0.1" + cssnano-util-raw-cache "^4.0.1" + postcss "^7.0.0" + postcss-calc "^7.0.0" + postcss-colormin "^4.0.2" + postcss-convert-values "^4.0.1" + postcss-discard-comments "^4.0.1" + postcss-discard-duplicates "^4.0.2" + postcss-discard-empty "^4.0.1" + postcss-discard-overridden "^4.0.1" + postcss-merge-longhand "^4.0.10" + postcss-merge-rules "^4.0.2" + postcss-minify-font-values "^4.0.2" + postcss-minify-gradients "^4.0.1" + postcss-minify-params "^4.0.1" + postcss-minify-selectors "^4.0.1" + postcss-normalize-charset "^4.0.1" + postcss-normalize-display-values "^4.0.1" + postcss-normalize-positions "^4.0.1" + postcss-normalize-repeat-style "^4.0.1" + postcss-normalize-string "^4.0.1" + postcss-normalize-timing-functions "^4.0.1" + postcss-normalize-unicode "^4.0.1" + postcss-normalize-url "^4.0.1" + postcss-normalize-whitespace "^4.0.1" + postcss-ordered-values "^4.1.1" + postcss-reduce-initial "^4.0.2" + postcss-reduce-transforms "^4.0.1" + postcss-svgo "^4.0.1" + postcss-unique-selectors "^4.0.1" + +cssnano-util-get-arguments@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/cssnano-util-get-arguments/-/cssnano-util-get-arguments-4.0.0.tgz#ed3a08299f21d75741b20f3b81f194ed49cc150f" + integrity sha1-7ToIKZ8h11dBsg87gfGU7UnMFQ8= + +cssnano-util-get-match@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/cssnano-util-get-match/-/cssnano-util-get-match-4.0.0.tgz#c0e4ca07f5386bb17ec5e52250b4f5961365156d" + integrity sha1-wOTKB/U4a7F+xeUiULT1lhNlFW0= + +cssnano-util-raw-cache@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/cssnano-util-raw-cache/-/cssnano-util-raw-cache-4.0.1.tgz#b26d5fd5f72a11dfe7a7846fb4c67260f96bf282" + integrity sha512-qLuYtWK2b2Dy55I8ZX3ky1Z16WYsx544Q0UWViebptpwn/xDBmog2TLg4f+DBMg1rJ6JDWtn96WHbOKDWt1WQA== + dependencies: + postcss "^7.0.0" + +cssnano-util-same-parent@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/cssnano-util-same-parent/-/cssnano-util-same-parent-4.0.1.tgz#574082fb2859d2db433855835d9a8456ea18bbf3" + integrity sha512-WcKx5OY+KoSIAxBW6UBBRay1U6vkYheCdjyVNDm85zt5K9mHoGOfsOsqIszfAqrQQFIIKgjh2+FDgIj/zsl21Q== + +cssnano@^4.1.0: + version "4.1.8" + resolved "https://registry.yarnpkg.com/cssnano/-/cssnano-4.1.8.tgz#8014989679d5fd42491e4499a521dbfb85c95fd1" + integrity sha512-5GIY0VzAHORpbKiL3rMXp4w4M1Ki+XlXgEXyuWXVd3h6hlASb+9Vo76dNP56/elLMVBBsUfusCo1q56uW0UWig== + dependencies: + cosmiconfig "^5.0.0" + cssnano-preset-default "^4.0.6" + is-resolvable "^1.0.0" + postcss "^7.0.0" + +csso@^3.5.0: + version "3.5.1" + resolved "https://registry.yarnpkg.com/csso/-/csso-3.5.1.tgz#7b9eb8be61628973c1b261e169d2f024008e758b" + integrity sha512-vrqULLffYU1Q2tLdJvaCYbONStnfkfimRxXNaGjxMldI0C7JPBC4rB1RyjhfdZ4m1frm8pM9uRPKH3d2knZ8gg== + dependencies: + css-tree "1.0.0-alpha.29" + +cssom@0.3.x, "cssom@>= 0.3.2 < 0.4.0", cssom@^0.3.4: + version "0.3.4" + resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.3.4.tgz#8cd52e8a3acfd68d3aed38ee0a640177d2f9d797" + integrity sha512-+7prCSORpXNeR4/fUP3rL+TzqtiFfhMvTd7uEqMdgPvLPt4+uzFUeufx5RHjGTACCargg/DiEt/moMQmvnfkog== + +cssstyle@^1.0.0, cssstyle@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/cssstyle/-/cssstyle-1.1.1.tgz#18b038a9c44d65f7a8e428a653b9f6fe42faf5fb" + integrity sha512-364AI1l/M5TYcFH83JnOH/pSqgaNnKmYgKrm0didZMGKWjQB60dymwWy1rKUgL3J1ffdq9xVi2yGLHdSjjSNog== + dependencies: + cssom "0.3.x" + +csstype@^2.0.0, csstype@^2.2.0, csstype@^2.5.2: + version "2.6.4" + resolved "https://registry.yarnpkg.com/csstype/-/csstype-2.6.4.tgz#d585a6062096e324e7187f80e04f92bd0f00e37f" + integrity sha512-lAJUJP3M6HxFXbqtGRc0iZrdyeN+WzOWeY0q/VnFzI+kqVrYIzC7bWlKqCW7oCIdzoPkvfp82EVvrTlQ8zsWQg== + +cyclist@~0.2.2: + version "0.2.2" + resolved "https://registry.yarnpkg.com/cyclist/-/cyclist-0.2.2.tgz#1b33792e11e914a2fd6d6ed6447464444e5fa640" + integrity sha1-GzN5LhHpFKL9bW7WRHRkRE5fpkA= + +damerau-levenshtein@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/damerau-levenshtein/-/damerau-levenshtein-1.0.4.tgz#03191c432cb6eea168bb77f3a55ffdccb8978514" + integrity sha1-AxkcQyy27qFou3fzpV/9zLiXhRQ= + +dashdash@^1.12.0: + version "1.14.1" + resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" + integrity sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA= + dependencies: + assert-plus "^1.0.0" + +data-urls@^1.0.0, data-urls@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/data-urls/-/data-urls-1.1.0.tgz#15ee0582baa5e22bb59c77140da8f9c76963bbfe" + integrity sha512-YTWYI9se1P55u58gL5GkQHW4P6VJBJ5iBT+B5a7i2Tjadhv52paJG0qHX4A0OR6/t52odI64KP2YvFpkDOi3eQ== + dependencies: + abab "^2.0.0" + whatwg-mimetype "^2.2.0" + whatwg-url "^7.0.0" + +date-now@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/date-now/-/date-now-0.1.4.tgz#eaf439fd4d4848ad74e5cc7dbef200672b9e345b" + integrity sha1-6vQ5/U1ISK105cx9vvIAZyueNFs= + +debounce@^1.1.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/debounce/-/debounce-1.2.0.tgz#44a540abc0ea9943018dc0eaa95cce87f65cd131" + integrity sha512-mYtLl1xfZLi1m4RtQYlZgJUNQjl4ZxVnHzIR8nLLgi4q1YT8o/WM+MK/f8yfcc9s5Ir5zRaPZyZU6xs1Syoocg== + +debug@2.6.9, debug@^2.1.2, debug@^2.2.0, debug@^2.3.3, debug@^2.6.0, debug@^2.6.6, debug@^2.6.8, debug@^2.6.9: + version "2.6.9" + resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" + integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== + dependencies: + ms "2.0.0" + +debug@=3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261" + integrity sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g== + dependencies: + ms "2.0.0" + +debug@^3.1.0, debug@^3.2.5: + version "3.2.6" + resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b" + integrity sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ== + dependencies: + ms "^2.1.1" + +debug@^4.1.0: + version "4.1.1" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.1.tgz#3b72260255109c6b589cee050f1d516139664791" + integrity sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw== + dependencies: + ms "^2.1.1" + +decamelize@^1.1.1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" + integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= + +decamelize@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-2.0.0.tgz#656d7bbc8094c4c788ea53c5840908c9c7d063c7" + integrity sha512-Ikpp5scV3MSYxY39ymh45ZLEecsTdv/Xj2CaQfI8RLMuwi7XvjX9H/fhraiSuU+C5w5NTDu4ZU72xNiZnurBPg== + dependencies: + xregexp "4.0.0" + +decode-uri-component@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545" + integrity sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU= + +decompress-response@^3.2.0, decompress-response@^3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-3.3.0.tgz#80a4dd323748384bfa248083622aedec982adff3" + integrity sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M= + dependencies: + mimic-response "^1.0.0" + +decompress-tar@^4.0.0, decompress-tar@^4.1.0, decompress-tar@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/decompress-tar/-/decompress-tar-4.1.1.tgz#718cbd3fcb16209716e70a26b84e7ba4592e5af1" + integrity sha512-JdJMaCrGpB5fESVyxwpCx4Jdj2AagLmv3y58Qy4GE6HMVjWz1FeVQk1Ct4Kye7PftcdOo/7U7UKzYBJgqnGeUQ== + dependencies: + file-type "^5.2.0" + is-stream "^1.1.0" + tar-stream "^1.5.2" + +decompress-tarbz2@^4.0.0: + version "4.1.1" + resolved "https://registry.yarnpkg.com/decompress-tarbz2/-/decompress-tarbz2-4.1.1.tgz#3082a5b880ea4043816349f378b56c516be1a39b" + integrity sha512-s88xLzf1r81ICXLAVQVzaN6ZmX4A6U4z2nMbOwobxkLoIIfjVMBg7TeguTUXkKeXni795B6y5rnvDw7rxhAq9A== + dependencies: + decompress-tar "^4.1.0" + file-type "^6.1.0" + is-stream "^1.1.0" + seek-bzip "^1.0.5" + unbzip2-stream "^1.0.9" + +decompress-targz@^4.0.0: + version "4.1.1" + resolved "https://registry.yarnpkg.com/decompress-targz/-/decompress-targz-4.1.1.tgz#c09bc35c4d11f3de09f2d2da53e9de23e7ce1eee" + integrity sha512-4z81Znfr6chWnRDNfFNqLwPvm4db3WuZkqV+UgXQzSngG3CEKdBkw5jrv3axjjL96glyiiKjsxJG3X6WBZwX3w== + dependencies: + decompress-tar "^4.1.1" + file-type "^5.2.0" + is-stream "^1.1.0" + +decompress-unzip@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/decompress-unzip/-/decompress-unzip-4.0.1.tgz#deaaccdfd14aeaf85578f733ae8210f9b4848f69" + integrity sha1-3qrM39FK6vhVePczroIQ+bSEj2k= + dependencies: + file-type "^3.8.0" + get-stream "^2.2.0" + pify "^2.3.0" + yauzl "^2.4.2" + +decompress@^4.0.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/decompress/-/decompress-4.2.0.tgz#7aedd85427e5a92dacfe55674a7c505e96d01f9d" + integrity sha1-eu3YVCflqS2s/lVnSnxQXpbQH50= + dependencies: + decompress-tar "^4.0.0" + decompress-tarbz2 "^4.0.0" + decompress-targz "^4.0.0" + decompress-unzip "^4.0.1" + graceful-fs "^4.1.10" + make-dir "^1.0.0" + pify "^2.3.0" + strip-dirs "^2.0.0" + +deep-equal@^1.0.1, deep-equal@~1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-1.0.1.tgz#f5d260292b660e084eff4cdbc9f08ad3247448b5" + integrity sha1-9dJgKStmDghO/0zbyfCK0yR0SLU= + +deep-extend@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" + integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA== + +deep-is@~0.1.3: + version "0.1.3" + resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" + integrity sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ= + +deepmerge@^2.1.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-2.2.1.tgz#5d3ff22a01c00f645405a2fbc17d0778a1801170" + integrity sha512-R9hc1Xa/NOBi9WRVUWg19rl1UB7Tt4kuPd+thNJgFZoxXsTz7ncaPaeIm+40oSGuP33DfMb4sZt1QIGiJzC4EA== + +deepmerge@^3.0.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-3.2.0.tgz#58ef463a57c08d376547f8869fdc5bcee957f44e" + integrity sha512-6+LuZGU7QCNUnAJyX8cIrlzoEgggTM6B7mm+znKOX4t5ltluT9KLjN6g61ECMS0LTsLW7yDpNoxhix5FZcrIow== + +default-gateway@^2.6.0: + version "2.7.2" + resolved "https://registry.yarnpkg.com/default-gateway/-/default-gateway-2.7.2.tgz#b7ef339e5e024b045467af403d50348db4642d0f" + integrity sha512-lAc4i9QJR0YHSDFdzeBQKfZ1SRDG3hsJNEkrpcZa8QhBfidLAilT60BDEIVUUGqosFp425KOgB3uYqcnQrWafQ== + dependencies: + execa "^0.10.0" + ip-regex "^2.1.0" + +default-require-extensions@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/default-require-extensions/-/default-require-extensions-1.0.0.tgz#f37ea15d3e13ffd9b437d33e1a75b5fb97874cb8" + integrity sha1-836hXT4T/9m0N9M+GnW1+5eHTLg= + dependencies: + strip-bom "^2.0.0" + +define-properties@^1.1.2, define-properties@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1" + integrity sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ== + dependencies: + object-keys "^1.0.12" + +define-property@^0.2.5: + version "0.2.5" + resolved "https://registry.yarnpkg.com/define-property/-/define-property-0.2.5.tgz#c35b1ef918ec3c990f9a5bc57be04aacec5c8116" + integrity sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY= + dependencies: + is-descriptor "^0.1.0" + +define-property@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/define-property/-/define-property-1.0.0.tgz#769ebaaf3f4a63aad3af9e8d304c9bbe79bfb0e6" + integrity sha1-dp66rz9KY6rTr56NMEybvnm/sOY= + dependencies: + is-descriptor "^1.0.0" + +define-property@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/define-property/-/define-property-2.0.2.tgz#d459689e8d654ba77e02a817f8710d702cb16e9d" + integrity sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ== + dependencies: + is-descriptor "^1.0.2" + isobject "^3.0.1" + +defined@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/defined/-/defined-1.0.0.tgz#c98d9bcef75674188e110969151199e39b1fa693" + integrity sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM= + +del@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/del/-/del-3.0.0.tgz#53ecf699ffcbcb39637691ab13baf160819766e5" + integrity sha1-U+z2mf/LyzljdpGrE7rxYIGXZuU= + dependencies: + globby "^6.1.0" + is-path-cwd "^1.0.0" + is-path-in-cwd "^1.0.0" + p-map "^1.1.1" + pify "^3.0.0" + rimraf "^2.2.8" + +delayed-stream@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" + integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk= + +delegates@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" + integrity sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o= + +depd@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" + integrity sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak= + +des.js@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/des.js/-/des.js-1.0.0.tgz#c074d2e2aa6a8a9a07dbd61f9a15c2cd83ec8ecc" + integrity sha1-wHTS4qpqipoH29YfmhXCzYPsjsw= + dependencies: + inherits "^2.0.1" + minimalistic-assert "^1.0.0" + +destroy@~1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80" + integrity sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA= + +detect-indent@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-4.0.0.tgz#f76d064352cdf43a1cb6ce619c4ee3a9475de208" + integrity sha1-920GQ1LN9Docts5hnE7jqUdd4gg= + dependencies: + repeating "^2.0.0" + +detect-libc@^1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b" + integrity sha1-+hN8S9aY7fVc1c0CrFWfkaTEups= + +detect-newline@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-2.1.0.tgz#f41f1c10be4b00e87b5f13da680759f2c5bfd3e2" + integrity sha1-9B8cEL5LAOh7XxPaaAdZ8sW/0+I= + +detect-node@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/detect-node/-/detect-node-2.0.4.tgz#014ee8f8f669c5c58023da64b8179c083a28c46c" + integrity sha512-ZIzRpLJrOj7jjP2miAtgqIfmzbxa4ZOr5jJc601zklsfEx9oTzmmj2nVpIPRpNlRTIh8lc1kyViIY7BWSGNmKw== + +detect-port-alt@1.1.6: + version "1.1.6" + resolved "https://registry.yarnpkg.com/detect-port-alt/-/detect-port-alt-1.1.6.tgz#24707deabe932d4a3cf621302027c2b266568275" + integrity sha512-5tQykt+LqfJFBEYaDITx7S7cR7mJ/zQmLXZ2qt5w04ainYZw6tBf9dBunMjVeVOdYVRUzUOE4HkY5J7+uttb5Q== + dependencies: + address "^1.0.1" + debug "^2.6.0" + +diff@^3.2.0: + version "3.5.0" + resolved "https://registry.yarnpkg.com/diff/-/diff-3.5.0.tgz#800c0dd1e0a8bfbc95835c202ad220fe317e5a12" + integrity sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA== + +diffie-hellman@^5.0.0: + version "5.0.3" + resolved "https://registry.yarnpkg.com/diffie-hellman/-/diffie-hellman-5.0.3.tgz#40e8ee98f55a2149607146921c63e1ae5f3d2875" + integrity sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg== + dependencies: + bn.js "^4.1.0" + miller-rabin "^4.0.0" + randombytes "^2.0.0" + +dir-glob@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-2.0.0.tgz#0b205d2b6aef98238ca286598a8204d29d0a0034" + integrity sha512-37qirFDz8cA5fimp9feo43fSuRo2gHwaIn6dXL8Ber1dGwUosDrGZeCCXq57WnIqE4aQ+u3eQZzsk1yOzhdwag== + dependencies: + arrify "^1.0.1" + path-type "^3.0.0" + +dns-equal@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/dns-equal/-/dns-equal-1.0.0.tgz#b39e7f1da6eb0a75ba9c17324b34753c47e0654d" + integrity sha1-s55/HabrCnW6nBcySzR1PEfgZU0= + +dns-packet@^1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/dns-packet/-/dns-packet-1.3.1.tgz#12aa426981075be500b910eedcd0b47dd7deda5a" + integrity sha512-0UxfQkMhYAUaZI+xrNZOz/as5KgDU0M/fQ9b6SpkyLbk3GEswDi6PADJVaYJradtRVsRIlF1zLyOodbcTCDzUg== + dependencies: + ip "^1.1.0" + safe-buffer "^5.0.1" + +dns-txt@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/dns-txt/-/dns-txt-2.0.2.tgz#b91d806f5d27188e4ab3e7d107d881a1cc4642b6" + integrity sha1-uR2Ab10nGI5Ks+fRB9iBocxGQrY= + dependencies: + buffer-indexof "^1.0.0" + +doctrine@1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-1.5.0.tgz#379dce730f6166f76cefa4e6707a159b02c5a6fa" + integrity sha1-N53Ocw9hZvds76TmcHoVmwLFpvo= + dependencies: + esutils "^2.0.2" + isarray "^1.0.0" + +doctrine@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.1.0.tgz#5cd01fc101621b42c4cd7f5d1a66243716d3f39d" + integrity sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw== + dependencies: + esutils "^2.0.2" + +dom-converter@~0.2: + version "0.2.0" + resolved "https://registry.yarnpkg.com/dom-converter/-/dom-converter-0.2.0.tgz#6721a9daee2e293682955b6afe416771627bb768" + integrity sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA== + dependencies: + utila "~0.4" + +dom-helpers@^3.2.1, dom-helpers@^3.4.0: + version "3.4.0" + resolved "https://registry.yarnpkg.com/dom-helpers/-/dom-helpers-3.4.0.tgz#e9b369700f959f62ecde5a6babde4bccd9169af8" + integrity sha512-LnuPJ+dwqKDIyotW1VzmOZ5TONUN7CwkCR5hrgawTUbkBGYdeoNLZo6nNfGkCrjtE1nXXaj7iMMpDa8/d9WoIA== + dependencies: + "@babel/runtime" "^7.1.2" + +dom-serializer@0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-0.1.0.tgz#073c697546ce0780ce23be4a28e293e40bc30c82" + integrity sha1-BzxpdUbOB4DOI75KKOKT5AvDDII= + dependencies: + domelementtype "~1.1.1" + entities "~1.1.1" + +dom-walk@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/dom-walk/-/dom-walk-0.1.1.tgz#672226dc74c8f799ad35307df936aba11acd6018" + integrity sha1-ZyIm3HTI95mtNTB9+TaroRrNYBg= + +domain-browser@^1.1.1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.2.0.tgz#3d31f50191a6749dd1375a7f522e823d42e54eda" + integrity sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA== + +domelementtype@1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.3.1.tgz#d048c44b37b0d10a7f2a3d5fee3f4333d790481f" + integrity sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w== + +domelementtype@~1.1.1: + version "1.1.3" + resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.1.3.tgz#bd28773e2642881aec51544924299c5cd822185b" + integrity sha1-vSh3PiZCiBrsUVRJJCmcXNgiGFs= + +domexception@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/domexception/-/domexception-1.0.1.tgz#937442644ca6a31261ef36e3ec677fe805582c90" + integrity sha512-raigMkn7CJNNo6Ihro1fzG7wr3fHuYVytzquZKX5n0yizGsTcYgzdIUwj1X9pK0VvjeihV+XiclP+DjwbsSKug== + dependencies: + webidl-conversions "^4.0.2" + +domhandler@2.1: + version "2.1.0" + resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-2.1.0.tgz#d2646f5e57f6c3bab11cf6cb05d3c0acf7412594" + integrity sha1-0mRvXlf2w7qxHPbLBdPArPdBJZQ= + dependencies: + domelementtype "1" + +domutils@1.1: + version "1.1.6" + resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.1.6.tgz#bddc3de099b9a2efacc51c623f28f416ecc57485" + integrity sha1-vdw94Jm5ou+sxRxiPyj0FuzFdIU= + dependencies: + domelementtype "1" + +domutils@1.5.1: + version "1.5.1" + resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.5.1.tgz#dcd8488a26f563d61079e48c9f7b7e32373682cf" + integrity sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8= + dependencies: + dom-serializer "0" + domelementtype "1" + +domutils@^1.7.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.7.0.tgz#56ea341e834e06e6748af7a1cb25da67ea9f8c2a" + integrity sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg== + dependencies: + dom-serializer "0" + domelementtype "1" + +dot-prop@^4.1.1: + version "4.2.0" + resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-4.2.0.tgz#1f19e0c2e1aa0e32797c49799f2837ac6af69c57" + integrity sha512-tUMXrxlExSW6U2EXiiKGSBVdYgtV8qlHL+C10TsW4PURY/ic+eaysnSkwB4kA/mBlCyy/IKDJ+Lc3wbWeaXtuQ== + dependencies: + is-obj "^1.0.0" + +dotenv-expand@4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/dotenv-expand/-/dotenv-expand-4.2.0.tgz#def1f1ca5d6059d24a766e587942c21106ce1275" + integrity sha1-3vHxyl1gWdJKdm5YeULCEQbOEnU= + +dotenv@6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-6.0.0.tgz#24e37c041741c5f4b25324958ebbc34bca965935" + integrity sha512-FlWbnhgjtwD+uNLUGHbMykMOYQaTivdHEmYwAKFjn6GKe/CqY0fNae93ZHTd20snh9ZLr8mTzIL9m0APQ1pjQg== + +drbg.js@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/drbg.js/-/drbg.js-1.0.1.tgz#3e36b6c42b37043823cdbc332d58f31e2445480b" + integrity sha1-Pja2xCs3BDgjzbwzLVjzHiRFSAs= + dependencies: + browserify-aes "^1.0.6" + create-hash "^1.1.2" + create-hmac "^1.1.4" + +drizzle-react-components@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/drizzle-react-components/-/drizzle-react-components-1.2.1.tgz#011b2f9a9bf77acb8d870798e307cafa0ef42404" + integrity sha512-Uv5r8+J8PdIfSPMb29Lfh8KxReT4r+mpH9k59kU+PW3i1oGXhxTK5J17/7Rv31rYGLOraaqXzXeqiA0k0AWHEg== + dependencies: + prop-types "^15.5.10" + react "^15.4.2" + +drizzle-react@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/drizzle-react/-/drizzle-react-1.2.0.tgz#4da5e7bd61ee4482dc2d0b3db060c874b33a9326" + integrity sha512-CyEMq9VBOivBz/EHCZmzXt3oQgGe4aflL3HAC7nCqUHlv2iJrMc+HEs9NVHQxlymIqOn+l5WvLLBAJ9FEevh2w== + dependencies: + prop-types "^15.5.10" + react "^16.4.2" + +drizzle@^1.2.4: + version "1.2.4" + resolved "https://registry.yarnpkg.com/drizzle/-/drizzle-1.2.4.tgz#903e8d85fa5b718efcfdc9ac3f145fd9c3876a09" + integrity sha512-5EHOx8QTpL+bAf4PfDwdTJ3eZp6HGrFxIIF/K9DrI+v3LrmDXPuVlefaI0HyZlOpfb1No5Y1e5/v2nannQeKhg== + dependencies: + deepmerge "^2.1.1" + eth-block-tracker-es5 "^2.3.2" + is-plain-object "^2.0.4" + redux "^4.0.0" + redux-saga "^0.16.0" + web3 "^1.0.0-beta.35" + +duplexer3@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/duplexer3/-/duplexer3-0.1.4.tgz#ee01dd1cac0ed3cbc7fdbea37dc0a8f1ce002ce2" + integrity sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI= + +duplexer@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.1.tgz#ace6ff808c1ce66b57d1ebf97977acb02334cfc1" + integrity sha1-rOb/gIwc5mtX0ev5eXessCM0z8E= + +duplexify@^3.4.2, duplexify@^3.6.0: + version "3.6.1" + resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-3.6.1.tgz#b1a7a29c4abfd639585efaecce80d666b1e34125" + integrity sha512-vM58DwdnKmty+FSPzT14K9JXb90H+j5emaR4KYbr2KTIz00WHGbWOe5ghQTx233ZCLZtrGDALzKwcjEtSt35mA== + dependencies: + end-of-stream "^1.0.0" + inherits "^2.0.1" + readable-stream "^2.0.0" + stream-shift "^1.0.0" + +ecc-jsbn@~0.1.1: + version "0.1.2" + resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9" + integrity sha1-OoOpBOVDUyh4dMVkt1SThoSamMk= + dependencies: + jsbn "~0.1.0" + safer-buffer "^2.1.0" + +ee-first@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" + integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0= + +electron-to-chromium@^1.3.47: + version "1.3.103" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.103.tgz#a695777efdbc419cad6cbb0e58458251302cd52f" + integrity sha512-tObPqGmY9X8MUM8i3MEimYmbnLLf05/QV5gPlkR8MQ3Uj8G8B2govE1U4cQcBYtv3ymck9Y8cIOu4waoiykMZQ== + +electron-to-chromium@^1.3.62, electron-to-chromium@^1.3.96: + version "1.3.96" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.96.tgz#25770ec99b8b07706dedf3a5f43fa50cb54c4f9a" + integrity sha512-ZUXBUyGLeoJxp4Nt6G/GjBRLnyz8IKQGexZ2ndWaoegThgMGFO1tdDYID5gBV32/1S83osjJHyfzvanE/8HY4Q== + +elliptic@6.3.3: + version "6.3.3" + resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.3.3.tgz#5482d9646d54bcb89fd7d994fc9e2e9568876e3f" + integrity sha1-VILZZG1UvLif19mU/J4ulWiHbj8= + dependencies: + bn.js "^4.4.0" + brorand "^1.0.1" + hash.js "^1.0.0" + inherits "^2.0.1" + +elliptic@^6.0.0, elliptic@^6.2.3, elliptic@^6.4.0: + version "6.4.1" + resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.4.1.tgz#c2d0b7776911b86722c632c3c06c60f2f819939a" + integrity sha512-BsXLz5sqX8OHcsh7CqBMztyXARmGQ3LWPtGjJi6DiJHq5C/qvi9P3OqgswKSDftbu8+IoI/QDTAm2fFnQ9SZSQ== + dependencies: + bn.js "^4.4.0" + brorand "^1.0.1" + hash.js "^1.0.0" + hmac-drbg "^1.0.0" + inherits "^2.0.1" + minimalistic-assert "^1.0.0" + minimalistic-crypto-utils "^1.0.0" + +emoji-regex@^6.5.1: + version "6.5.1" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-6.5.1.tgz#9baea929b155565c11ea41c6626eaa65cef992c2" + integrity sha512-PAHp6TxrCy7MGMFidro8uikr+zlJJKJ/Q6mm2ExZ7HwkyR9lSVFfE3kt36qcwa24BQL7y0G9axycGjK1A/0uNQ== + +emojis-list@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-2.1.0.tgz#4daa4d9db00f9819880c79fa457ae5b09a1fd389" + integrity sha1-TapNnbAPmBmIDHn6RXrlsJof04k= + +encodeurl@~1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" + integrity sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k= + +encoding@^0.1.11: + version "0.1.12" + resolved "https://registry.yarnpkg.com/encoding/-/encoding-0.1.12.tgz#538b66f3ee62cd1ab51ec323829d1f9480c74beb" + integrity sha1-U4tm8+5izRq1HsMjgp0flIDHS+s= + dependencies: + iconv-lite "~0.4.13" + +end-of-stream@^1.0.0, end-of-stream@^1.1.0: + version "1.4.1" + resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.1.tgz#ed29634d19baba463b6ce6b80a37213eab71ec43" + integrity sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q== + dependencies: + once "^1.4.0" + +enhanced-resolve@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-4.1.0.tgz#41c7e0bfdfe74ac1ffe1e57ad6a5c6c9f3742a7f" + integrity sha512-F/7vkyTtyc/llOIn8oWclcB25KdRaiPBpZYDgJHgh/UHtpgT2p2eldQgtQnLtUvfMKPKxbRaQM/hHkvLHt1Vng== + dependencies: + graceful-fs "^4.1.2" + memory-fs "^0.4.0" + tapable "^1.0.0" + +entities@~1.1.1: + version "1.1.2" + resolved "https://registry.yarnpkg.com/entities/-/entities-1.1.2.tgz#bdfa735299664dfafd34529ed4f8522a275fea56" + integrity sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w== + +errno@^0.1.3, errno@~0.1.7: + version "0.1.7" + resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.7.tgz#4684d71779ad39af177e3f007996f7c67c852618" + integrity sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg== + dependencies: + prr "~1.0.1" + +error-ex@^1.2.0, error-ex@^1.3.1: + version "1.3.2" + resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" + integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== + dependencies: + is-arrayish "^0.2.1" + +es-abstract@^1.12.0, es-abstract@^1.5.0, es-abstract@^1.5.1, es-abstract@^1.7.0: + version "1.13.0" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.13.0.tgz#ac86145fdd5099d8dd49558ccba2eaf9b88e24e9" + integrity sha512-vDZfg/ykNxQVwup/8E1BZhVzFfBxs9NqMzGcvIJrqg5k2/5Za2bWo40dK2J1pgLngZ7c+Shh8lwYtLGyrwPutg== + dependencies: + es-to-primitive "^1.2.0" + function-bind "^1.1.1" + has "^1.0.3" + is-callable "^1.1.4" + is-regex "^1.0.4" + object-keys "^1.0.12" + +es-to-primitive@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.0.tgz#edf72478033456e8dda8ef09e00ad9650707f377" + integrity sha512-qZryBOJjV//LaxLTV6UC//WewneB3LcXOL9NP++ozKVXsIIIpm/2c13UDiD9Jp2eThsecw9m3jPqDwTyobcdbg== + dependencies: + is-callable "^1.1.4" + is-date-object "^1.0.1" + is-symbol "^1.0.2" + +escape-html@~1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" + integrity sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg= + +escape-string-regexp@1.0.5, escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" + integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= + +escodegen@^1.11.0, escodegen@^1.9.1: + version "1.11.0" + resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.11.0.tgz#b27a9389481d5bfd5bec76f7bb1eb3f8f4556589" + integrity sha512-IeMV45ReixHS53K/OmfKAIztN/igDHzTJUhZM3k1jMhIZWjk45SMwAtBsEXiJp3vSPmTcu6CXn7mDvFHRN66fw== + dependencies: + esprima "^3.1.3" + estraverse "^4.2.0" + esutils "^2.0.2" + optionator "^0.8.1" + optionalDependencies: + source-map "~0.6.1" + +eslint-config-react-app@^3.0.6: + version "3.0.6" + resolved "https://registry.yarnpkg.com/eslint-config-react-app/-/eslint-config-react-app-3.0.6.tgz#addcae1359235941e95f3c96970b7ac8552e1130" + integrity sha512-VL5rA1EBZv7f9toc9x71or7nr4jRmwCH4V9JKB9DFVaTLOLI9+vjWLgQLjMu3xR9iUT80dty86RbCfNaKyrFFg== + dependencies: + confusing-browser-globals "^1.0.5" + +eslint-import-resolver-node@^0.3.1: + version "0.3.2" + resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.2.tgz#58f15fb839b8d0576ca980413476aab2472db66a" + integrity sha512-sfmTqJfPSizWu4aymbPr4Iidp5yKm8yDkHp+Ir3YiTHiiDfxh69mOUsmiqW6RZ9zRXFaF64GtYmN7e+8GHBv6Q== + dependencies: + debug "^2.6.9" + resolve "^1.5.0" + +eslint-loader@2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/eslint-loader/-/eslint-loader-2.1.1.tgz#2a9251523652430bfdd643efdb0afc1a2a89546a" + integrity sha512-1GrJFfSevQdYpoDzx8mEE2TDWsb/zmFuY09l6hURg1AeFIKQOvZ+vH0UPjzmd1CZIbfTV5HUkMeBmFiDBkgIsQ== + dependencies: + loader-fs-cache "^1.0.0" + loader-utils "^1.0.2" + object-assign "^4.0.1" + object-hash "^1.1.4" + rimraf "^2.6.1" + +eslint-module-utils@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.2.0.tgz#b270362cd88b1a48ad308976ce7fa54e98411746" + integrity sha1-snA2LNiLGkitMIl2zn+lTphBF0Y= + dependencies: + debug "^2.6.8" + pkg-dir "^1.0.0" + +eslint-plugin-flowtype@2.50.1: + version "2.50.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-flowtype/-/eslint-plugin-flowtype-2.50.1.tgz#36d4c961ac8b9e9e1dc091d3fba0537dad34ae8a" + integrity sha512-9kRxF9hfM/O6WGZcZPszOVPd2W0TLHBtceulLTsGfwMPtiCCLnCW0ssRiOOiXyqrCA20pm1iXdXm7gQeN306zQ== + dependencies: + lodash "^4.17.10" + +eslint-plugin-import@2.14.0: + version "2.14.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.14.0.tgz#6b17626d2e3e6ad52cfce8807a845d15e22111a8" + integrity sha512-FpuRtniD/AY6sXByma2Wr0TXvXJ4nA/2/04VPlfpmUDPOpOY264x+ILiwnrk/k4RINgDAyFZByxqPUbSQ5YE7g== + dependencies: + contains-path "^0.1.0" + debug "^2.6.8" + doctrine "1.5.0" + eslint-import-resolver-node "^0.3.1" + eslint-module-utils "^2.2.0" + has "^1.0.1" + lodash "^4.17.4" + minimatch "^3.0.3" + read-pkg-up "^2.0.0" + resolve "^1.6.0" + +eslint-plugin-jsx-a11y@6.1.2: + version "6.1.2" + resolved "https://registry.yarnpkg.com/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.1.2.tgz#69bca4890b36dcf0fe16dd2129d2d88b98f33f88" + integrity sha512-7gSSmwb3A+fQwtw0arguwMdOdzmKUgnUcbSNlo+GjKLAQFuC2EZxWqG9XHRI8VscBJD5a8raz3RuxQNFW+XJbw== + dependencies: + aria-query "^3.0.0" + array-includes "^3.0.3" + ast-types-flow "^0.0.7" + axobject-query "^2.0.1" + damerau-levenshtein "^1.0.4" + emoji-regex "^6.5.1" + has "^1.0.3" + jsx-ast-utils "^2.0.1" + +eslint-plugin-react@7.11.1: + version "7.11.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.11.1.tgz#c01a7af6f17519457d6116aa94fc6d2ccad5443c" + integrity sha512-cVVyMadRyW7qsIUh3FHp3u6QHNhOgVrLQYdQEB1bPWBsgbNCHdFAeNMquBMCcZJu59eNthX053L70l7gRt4SCw== + dependencies: + array-includes "^3.0.3" + doctrine "^2.1.0" + has "^1.0.3" + jsx-ast-utils "^2.0.1" + prop-types "^15.6.2" + +eslint-scope@3.7.1: + version "3.7.1" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-3.7.1.tgz#3d63c3edfda02e06e01a452ad88caacc7cdcb6e8" + integrity sha1-PWPD7f2gLgbgGkUq2IyqzHzctug= + dependencies: + esrecurse "^4.1.0" + estraverse "^4.1.1" + +eslint-scope@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-4.0.0.tgz#50bf3071e9338bcdc43331794a0cb533f0136172" + integrity sha512-1G6UTDi7Jc1ELFwnR58HV4fK9OQK4S6N985f166xqXxpjU6plxFISJa2Ba9KCQuFa8RCnj/lSFJbHo7UFDBnUA== + dependencies: + esrecurse "^4.1.0" + estraverse "^4.1.1" + +eslint-utils@^1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-1.3.1.tgz#9a851ba89ee7c460346f97cf8939c7298827e512" + integrity sha512-Z7YjnIldX+2XMcjr7ZkgEsOj/bREONV60qYeB/bjMAqqqZ4zxKyWX+BOUkdmRmA9riiIPVvo5x86m5elviOk0Q== + +eslint-visitor-keys@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz#3f3180fb2e291017716acb4c9d6d5b5c34a6a81d" + integrity sha512-qzm/XxIbxm/FHyH341ZrbnMUpe+5Bocte9xkmFMzPMjRaZMcXww+MpBptFvtU+79L362nqiLhekCxCxDPaUMBQ== + +eslint@5.6.0: + version "5.6.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-5.6.0.tgz#b6f7806041af01f71b3f1895cbb20971ea4b6223" + integrity sha512-/eVYs9VVVboX286mBK7bbKnO1yamUy2UCRjiY6MryhQL2PaaXCExsCQ2aO83OeYRhU2eCU/FMFP+tVMoOrzNrA== + dependencies: + "@babel/code-frame" "^7.0.0" + ajv "^6.5.3" + chalk "^2.1.0" + cross-spawn "^6.0.5" + debug "^3.1.0" + doctrine "^2.1.0" + eslint-scope "^4.0.0" + eslint-utils "^1.3.1" + eslint-visitor-keys "^1.0.0" + espree "^4.0.0" + esquery "^1.0.1" + esutils "^2.0.2" + file-entry-cache "^2.0.0" + functional-red-black-tree "^1.0.1" + glob "^7.1.2" + globals "^11.7.0" + ignore "^4.0.6" + imurmurhash "^0.1.4" + inquirer "^6.1.0" + is-resolvable "^1.1.0" + js-yaml "^3.12.0" + json-stable-stringify-without-jsonify "^1.0.1" + levn "^0.3.0" + lodash "^4.17.5" + minimatch "^3.0.4" + mkdirp "^0.5.1" + natural-compare "^1.4.0" + optionator "^0.8.2" + path-is-inside "^1.0.2" + pluralize "^7.0.0" + progress "^2.0.0" + regexpp "^2.0.0" + require-uncached "^1.0.3" + semver "^5.5.1" + strip-ansi "^4.0.0" + strip-json-comments "^2.0.1" + table "^4.0.3" + text-table "^0.2.0" + +espree@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/espree/-/espree-4.1.0.tgz#728d5451e0fd156c04384a7ad89ed51ff54eb25f" + integrity sha512-I5BycZW6FCVIub93TeVY1s7vjhP9CY6cXCznIRfiig7nRviKZYdRnj/sHEWC6A7WE9RDWOFq9+7OsWSYz8qv2w== + dependencies: + acorn "^6.0.2" + acorn-jsx "^5.0.0" + eslint-visitor-keys "^1.0.0" + +esprima@^3.1.3: + version "3.1.3" + resolved "https://registry.yarnpkg.com/esprima/-/esprima-3.1.3.tgz#fdca51cee6133895e3c88d535ce49dbff62a4633" + integrity sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM= + +esprima@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" + integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== + +esquery@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.0.1.tgz#406c51658b1f5991a5f9b62b1dc25b00e3e5c708" + integrity sha512-SmiyZ5zIWH9VM+SRUReLS5Q8a7GxtRdxEBVZpm98rJM7Sb+A9DVCndXfkeFUd3byderg+EbDkfnevfCwynWaNA== + dependencies: + estraverse "^4.0.0" + +esrecurse@^4.1.0: + version "4.2.1" + resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.2.1.tgz#007a3b9fdbc2b3bb87e4879ea19c92fdbd3942cf" + integrity sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ== + dependencies: + estraverse "^4.1.0" + +estraverse@^4.0.0, estraverse@^4.1.0, estraverse@^4.1.1, estraverse@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.2.0.tgz#0dee3fed31fcd469618ce7342099fc1afa0bdb13" + integrity sha1-De4/7TH81GlhjOc0IJn8GvoL2xM= + +esutils@^2.0.0, esutils@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b" + integrity sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs= + +etag@~1.8.1: + version "1.8.1" + resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" + integrity sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc= + +eth-block-tracker-es5@^2.3.2: + version "2.3.2" + resolved "https://registry.yarnpkg.com/eth-block-tracker-es5/-/eth-block-tracker-es5-2.3.2.tgz#c83d1fd95178e760fc3c3c88df5e64fe1918683c" + integrity sha512-CD/GVPj9zuEBqO4Nu20YQfUOd6nB6O6uVAk+c3ReLBgLQSklkiRaB8F3L7bph0EYpgAL34eWTToRSMNAetxirQ== + dependencies: + async-eventemitter "^0.2.4" + eth-query "^2.1.0" + ethereumjs-tx "^1.3.3" + ethereumjs-util "^5.1.3" + ethjs-util "^0.1.3" + json-rpc-engine "^3.6.0" + pify "^2.3.0" + tape "^4.6.3" + +eth-ens-namehash@2.0.8: + version "2.0.8" + resolved "https://registry.yarnpkg.com/eth-ens-namehash/-/eth-ens-namehash-2.0.8.tgz#229ac46eca86d52e0c991e7cb2aef83ff0f68bcf" + integrity sha1-IprEbsqG1S4MmR58sq74P/D2i88= + dependencies: + idna-uts46-hx "^2.3.1" + js-sha3 "^0.5.7" + +eth-lib@0.1.27, eth-lib@^0.1.26: + version "0.1.27" + resolved "https://registry.yarnpkg.com/eth-lib/-/eth-lib-0.1.27.tgz#f0b0fd144f865d2d6bf8257a40004f2e75ca1dd6" + integrity sha512-B8czsfkJYzn2UIEMwjc7Mbj+Cy72V+/OXH/tb44LV8jhrjizQJJ325xMOMyk3+ETa6r6oi0jsUY14+om8mQMWA== + dependencies: + bn.js "^4.11.6" + elliptic "^6.4.0" + keccakjs "^0.2.1" + nano-json-stream-parser "^0.1.2" + servify "^0.1.12" + ws "^3.0.0" + xhr-request-promise "^0.1.2" + +eth-lib@0.2.7: + version "0.2.7" + resolved "https://registry.yarnpkg.com/eth-lib/-/eth-lib-0.2.7.tgz#2f93f17b1e23aec3759cd4a3fe20c1286a3fc1ca" + integrity sha1-L5Pxex4jrsN1nNSj/iDBKGo/wco= + dependencies: + bn.js "^4.11.6" + elliptic "^6.4.0" + xhr-request-promise "^0.1.2" + +eth-query@^2.1.0: + version "2.1.2" + resolved "https://registry.yarnpkg.com/eth-query/-/eth-query-2.1.2.tgz#d6741d9000106b51510c72db92d6365456a6da5e" + integrity sha1-1nQdkAAQa1FRDHLbktY2VFam2l4= + dependencies: + json-rpc-random-id "^1.0.0" + xtend "^4.0.1" + +ethereum-common@^0.0.18: + version "0.0.18" + resolved "https://registry.yarnpkg.com/ethereum-common/-/ethereum-common-0.0.18.tgz#2fdc3576f232903358976eb39da783213ff9523f" + integrity sha1-L9w1dvIykDNYl26znaeDIT/5Uj8= + +ethereumjs-tx@^1.3.3: + version "1.3.7" + resolved "https://registry.yarnpkg.com/ethereumjs-tx/-/ethereumjs-tx-1.3.7.tgz#88323a2d875b10549b8347e09f4862b546f3d89a" + integrity sha512-wvLMxzt1RPhAQ9Yi3/HKZTn0FZYpnsmQdbKYfUUpi4j1SEIcbkd9tndVjcPrufY3V7j2IebOpC00Zp2P/Ay2kA== + dependencies: + ethereum-common "^0.0.18" + ethereumjs-util "^5.0.0" + +ethereumjs-util@^5.0.0, ethereumjs-util@^5.1.3: + version "5.2.0" + resolved "https://registry.yarnpkg.com/ethereumjs-util/-/ethereumjs-util-5.2.0.tgz#3e0c0d1741471acf1036052d048623dee54ad642" + integrity sha512-CJAKdI0wgMbQFLlLRtZKGcy/L6pzVRgelIZqRqNbuVFM3K9VEnyfbcvz0ncWMRNCe4kaHWjwRYQcYMucmwsnWA== + dependencies: + bn.js "^4.11.0" + create-hash "^1.1.2" + ethjs-util "^0.1.3" + keccak "^1.0.2" + rlp "^2.0.0" + safe-buffer "^5.1.1" + secp256k1 "^3.0.1" + +ethers@4.0.0-beta.1: + version "4.0.0-beta.1" + resolved "https://registry.yarnpkg.com/ethers/-/ethers-4.0.0-beta.1.tgz#0648268b83e0e91a961b1af971c662cdf8cbab6d" + integrity sha512-SoYhktEbLxf+fiux5SfCEwdzWENMvgIbMZD90I62s4GZD9nEjgEWy8ZboI3hck193Vs0bDoTohDISx84f2H2tw== + dependencies: + "@types/node" "^10.3.2" + aes-js "3.0.0" + bn.js "^4.4.0" + elliptic "6.3.3" + hash.js "1.1.3" + js-sha3 "0.5.7" + scrypt-js "2.0.3" + setimmediate "1.0.4" + uuid "2.0.1" + xmlhttprequest "1.8.0" + +ethjs-unit@0.1.6: + version "0.1.6" + resolved "https://registry.yarnpkg.com/ethjs-unit/-/ethjs-unit-0.1.6.tgz#c665921e476e87bce2a9d588a6fe0405b2c41699" + integrity sha1-xmWSHkduh7ziqdWIpv4EBbLEFpk= + dependencies: + bn.js "4.11.6" + number-to-bn "1.7.0" + +ethjs-util@^0.1.3: + version "0.1.6" + resolved "https://registry.yarnpkg.com/ethjs-util/-/ethjs-util-0.1.6.tgz#f308b62f185f9fe6237132fb2a9818866a5cd536" + integrity sha512-CUnVOQq7gSpDHZVVrQW8ExxUETWrnrvXYvYz55wOU8Uj4VCgw56XC2B/fVqQN+f7gmrnRHSLVnFAwsCuNwji8w== + dependencies: + is-hex-prefixed "1.0.0" + strip-hex-prefix "1.0.0" + +eventemitter3@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-1.1.1.tgz#47786bdaa087caf7b1b75e73abc5c7d540158cd0" + integrity sha1-R3hr2qCHyvext15zq8XH1UAVjNA= + +eventemitter3@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-3.1.0.tgz#090b4d6cdbd645ed10bf750d4b5407942d7ba163" + integrity sha512-ivIvhpq/Y0uSjcHDcOIccjmYjGLcP09MFGE7ysAwkAvkXfpZlC985pH2/ui64DKazbTW/4kN3yqozUxlXzI6cA== + +events@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/events/-/events-1.1.1.tgz#9ebdb7635ad099c70dcc4c2a1f5004288e8bd924" + integrity sha1-nr23Y1rQmccNzEwqH1AEKI6L2SQ= + +events@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/events/-/events-3.0.0.tgz#9a0a0dfaf62893d92b875b8f2698ca4114973e88" + integrity sha512-Dc381HFWJzEOhQ+d8pkNon++bk9h6cdAoAj4iE6Q4y6xgTzySWXlKn05/TVNpjnfRqi/X0EpJEJohPjNI3zpVA== + +eventsource@0.1.6: + version "0.1.6" + resolved "https://registry.yarnpkg.com/eventsource/-/eventsource-0.1.6.tgz#0acede849ed7dd1ccc32c811bb11b944d4f29232" + integrity sha1-Cs7ehJ7X3RzMMsgRuxG5RNTykjI= + dependencies: + original ">=0.0.5" + +eventsource@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/eventsource/-/eventsource-1.0.7.tgz#8fbc72c93fcd34088090bc0a4e64f4b5cee6d8d0" + integrity sha512-4Ln17+vVT0k8aWq+t/bF5arcS3EpT9gYtW66EPacdj/mAFevznsnyoHLPy2BA8gbIQeIHoPsvwmfBftfcG//BQ== + dependencies: + original "^1.0.0" + +evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz#7fcbdb198dc71959432efe13842684e0525acb02" + integrity sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA== + dependencies: + md5.js "^1.3.4" + safe-buffer "^5.1.1" + +exec-sh@^0.2.0: + version "0.2.2" + resolved "https://registry.yarnpkg.com/exec-sh/-/exec-sh-0.2.2.tgz#2a5e7ffcbd7d0ba2755bdecb16e5a427dfbdec36" + integrity sha512-FIUCJz1RbuS0FKTdaAafAByGS0CPvU3R0MeHxgtl+djzCc//F8HakL8GzmVNZanasTbTAY/3DRFA0KpVqj/eAw== + dependencies: + merge "^1.2.0" + +execa@^0.10.0: + version "0.10.0" + resolved "https://registry.yarnpkg.com/execa/-/execa-0.10.0.tgz#ff456a8f53f90f8eccc71a96d11bdfc7f082cb50" + integrity sha512-7XOMnz8Ynx1gGo/3hyV9loYNPWM94jG3+3T3Y8tsfSstFmETmENCMU/A/zj8Lyaj1lkgEepKepvd6240tBRvlw== + dependencies: + cross-spawn "^6.0.0" + get-stream "^3.0.0" + is-stream "^1.1.0" + npm-run-path "^2.0.0" + p-finally "^1.0.0" + signal-exit "^3.0.0" + strip-eof "^1.0.0" + +execa@^0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/execa/-/execa-0.7.0.tgz#944becd34cc41ee32a63a9faf27ad5a65fc59777" + integrity sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c= + dependencies: + cross-spawn "^5.0.1" + get-stream "^3.0.0" + is-stream "^1.1.0" + npm-run-path "^2.0.0" + p-finally "^1.0.0" + signal-exit "^3.0.0" + strip-eof "^1.0.0" + +execa@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/execa/-/execa-1.0.0.tgz#c6236a5bb4df6d6f15e88e7f017798216749ddd8" + integrity sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA== + dependencies: + cross-spawn "^6.0.0" + get-stream "^4.0.0" + is-stream "^1.1.0" + npm-run-path "^2.0.0" + p-finally "^1.0.0" + signal-exit "^3.0.0" + strip-eof "^1.0.0" + +exit@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c" + integrity sha1-BjJjj42HfMghB9MKD/8aF8uhzQw= + +expand-brackets@^0.1.4: + version "0.1.5" + resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-0.1.5.tgz#df07284e342a807cd733ac5af72411e581d1177b" + integrity sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s= + dependencies: + is-posix-bracket "^0.1.0" + +expand-brackets@^2.1.4: + version "2.1.4" + resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622" + integrity sha1-t3c14xXOMPa27/D4OwQVGiJEliI= + dependencies: + debug "^2.3.3" + define-property "^0.2.5" + extend-shallow "^2.0.1" + posix-character-classes "^0.1.0" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.1" + +expand-range@^1.8.1: + version "1.8.2" + resolved "https://registry.yarnpkg.com/expand-range/-/expand-range-1.8.2.tgz#a299effd335fe2721ebae8e257ec79644fc85337" + integrity sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc= + dependencies: + fill-range "^2.1.0" + +expand-tilde@^2.0.0, expand-tilde@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/expand-tilde/-/expand-tilde-2.0.2.tgz#97e801aa052df02454de46b02bf621642cdc8502" + integrity sha1-l+gBqgUt8CRU3kawK/YhZCzchQI= + dependencies: + homedir-polyfill "^1.0.1" + +expect@^23.6.0: + version "23.6.0" + resolved "https://registry.yarnpkg.com/expect/-/expect-23.6.0.tgz#1e0c8d3ba9a581c87bd71fb9bc8862d443425f98" + integrity sha512-dgSoOHgmtn/aDGRVFWclQyPDKl2CQRq0hmIEoUAuQs/2rn2NcvCWcSCovm6BLeuB/7EZuLGu2QfnR+qRt5OM4w== + dependencies: + ansi-styles "^3.2.0" + jest-diff "^23.6.0" + jest-get-type "^22.1.0" + jest-matcher-utils "^23.6.0" + jest-message-util "^23.4.0" + jest-regex-util "^23.3.0" + +express@^4.14.0, express@^4.16.2: + version "4.16.4" + resolved "https://registry.yarnpkg.com/express/-/express-4.16.4.tgz#fddef61926109e24c515ea97fd2f1bdbf62df12e" + integrity sha512-j12Uuyb4FMrd/qQAm6uCHAkPtO8FDTRJZBDd5D2KOL2eLaz1yUNdUB/NOIyq0iU4q4cFarsUCrnFDPBcnksuOg== + dependencies: + accepts "~1.3.5" + array-flatten "1.1.1" + body-parser "1.18.3" + content-disposition "0.5.2" + content-type "~1.0.4" + cookie "0.3.1" + cookie-signature "1.0.6" + debug "2.6.9" + depd "~1.1.2" + encodeurl "~1.0.2" + escape-html "~1.0.3" + etag "~1.8.1" + finalhandler "1.1.1" + fresh "0.5.2" + merge-descriptors "1.0.1" + methods "~1.1.2" + on-finished "~2.3.0" + parseurl "~1.3.2" + path-to-regexp "0.1.7" + proxy-addr "~2.0.4" + qs "6.5.2" + range-parser "~1.2.0" + safe-buffer "5.1.2" + send "0.16.2" + serve-static "1.13.2" + setprototypeof "1.1.0" + statuses "~1.4.0" + type-is "~1.6.16" + utils-merge "1.0.1" + vary "~1.1.2" + +extend-shallow@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f" + integrity sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8= + dependencies: + is-extendable "^0.1.0" + +extend-shallow@^3.0.0, extend-shallow@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-3.0.2.tgz#26a71aaf073b39fb2127172746131c2704028db8" + integrity sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg= + dependencies: + assign-symbols "^1.0.0" + is-extendable "^1.0.1" + +extend@~3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" + integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== + +external-editor@^3.0.0: + version "3.0.3" + resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-3.0.3.tgz#5866db29a97826dbe4bf3afd24070ead9ea43a27" + integrity sha512-bn71H9+qWoOQKyZDo25mOMVpSmXROAsTJVVVYzrrtol3d4y+AsKjf4Iwl2Q+IuT0kFSQ1qo166UuIwqYq7mGnA== + dependencies: + chardet "^0.7.0" + iconv-lite "^0.4.24" + tmp "^0.0.33" + +extglob@^0.3.1: + version "0.3.2" + resolved "https://registry.yarnpkg.com/extglob/-/extglob-0.3.2.tgz#2e18ff3d2f49ab2765cec9023f011daa8d8349a1" + integrity sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE= + dependencies: + is-extglob "^1.0.0" + +extglob@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543" + integrity sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw== + dependencies: + array-unique "^0.3.2" + define-property "^1.0.0" + expand-brackets "^2.1.4" + extend-shallow "^2.0.1" + fragment-cache "^0.2.1" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.1" + +extsprintf@1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" + integrity sha1-lpGEQOMEGnpBT4xS48V06zw+HgU= + +extsprintf@^1.2.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.0.tgz#e2689f8f356fad62cca65a3a91c5df5f9551692f" + integrity sha1-4mifjzVvrWLMplo6kcXfX5VRaS8= + +fast-deep-equal@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz#7b05218ddf9667bf7f370bf7fdb2cb15fdd0aa49" + integrity sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk= + +fast-glob@^2.0.2: + version "2.2.4" + resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-2.2.4.tgz#e54f4b66d378040e0e4d6a68ec36bbc5b04363c0" + integrity sha512-FjK2nCGI/McyzgNtTESqaWP3trPvHyRyoyY70hxjc3oKPNmDe8taohLZpoVKoUjW85tbU5txaYUZCNtVzygl1g== + dependencies: + "@mrmlnc/readdir-enhanced" "^2.2.1" + "@nodelib/fs.stat" "^1.1.2" + glob-parent "^3.1.0" + is-glob "^4.0.0" + merge2 "^1.2.3" + micromatch "^3.1.10" + +fast-json-stable-stringify@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz#d5142c0caee6b1189f87d3a76111064f86c8bbf2" + integrity sha1-1RQsDK7msRifh9OnYREGT4bIu/I= + +fast-levenshtein@~2.0.4: + version "2.0.6" + resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" + integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= + +fastparse@^1.1.1: + version "1.1.2" + resolved "https://registry.yarnpkg.com/fastparse/-/fastparse-1.1.2.tgz#91728c5a5942eced8531283c79441ee4122c35a9" + integrity sha512-483XLLxTVIwWK3QTrMGRqUfUpoOs/0hbQrl2oz4J0pAcm3A3bu84wxTFqGqkJzewCLdME38xJLJAxBABfQT8sQ== + +faye-websocket@^0.10.0: + version "0.10.0" + resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.10.0.tgz#4e492f8d04dfb6f89003507f6edbf2d501e7c6f4" + integrity sha1-TkkvjQTftviQA1B/btvy1QHnxvQ= + dependencies: + websocket-driver ">=0.5.1" + +faye-websocket@~0.11.0, faye-websocket@~0.11.1: + version "0.11.1" + resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.11.1.tgz#f0efe18c4f56e4f40afc7e06c719fd5ee6188f38" + integrity sha1-8O/hjE9W5PQK/H4Gxxn9XuYYjzg= + dependencies: + websocket-driver ">=0.5.1" + +fb-watchman@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/fb-watchman/-/fb-watchman-2.0.0.tgz#54e9abf7dfa2f26cd9b1636c588c1afc05de5d58" + integrity sha1-VOmr99+i8mzZsWNsWIwa/AXeXVg= + dependencies: + bser "^2.0.0" + +fbjs@^0.8.0, fbjs@^0.8.1, fbjs@^0.8.9: + version "0.8.17" + resolved "https://registry.yarnpkg.com/fbjs/-/fbjs-0.8.17.tgz#c4d598ead6949112653d6588b01a5cdcd9f90fdd" + integrity sha1-xNWY6taUkRJlPWWIsBpc3Nn5D90= + dependencies: + core-js "^1.0.0" + isomorphic-fetch "^2.1.1" + loose-envify "^1.0.0" + object-assign "^4.1.0" + promise "^7.1.1" + setimmediate "^1.0.5" + ua-parser-js "^0.7.18" + +fd-slicer@~1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/fd-slicer/-/fd-slicer-1.1.0.tgz#25c7c89cb1f9077f8891bbe61d8f390eae256f1e" + integrity sha1-JcfInLH5B3+IkbvmHY85Dq4lbx4= + dependencies: + pend "~1.2.0" + +figgy-pudding@^3.5.1: + version "3.5.1" + resolved "https://registry.yarnpkg.com/figgy-pudding/-/figgy-pudding-3.5.1.tgz#862470112901c727a0e495a80744bd5baa1d6790" + integrity sha512-vNKxJHTEKNThjfrdJwHc7brvM6eVevuO5nTj6ez8ZQ1qbXTvGthucRF7S4vf2cr71QVnT70V34v0S1DyQsti0w== + +figures@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/figures/-/figures-2.0.0.tgz#3ab1a2d2a62c8bfb431a0c94cb797a2fce27c962" + integrity sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI= + dependencies: + escape-string-regexp "^1.0.5" + +file-entry-cache@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-2.0.0.tgz#c392990c3e684783d838b8c84a45d8a048458361" + integrity sha1-w5KZDD5oR4PYOLjISkXYoEhFg2E= + dependencies: + flat-cache "^1.2.1" + object-assign "^4.0.1" + +file-loader@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/file-loader/-/file-loader-2.0.0.tgz#39749c82f020b9e85901dcff98e8004e6401cfde" + integrity sha512-YCsBfd1ZGCyonOKLxPiKPdu+8ld9HAaMEvJewzz+b2eTF7uL5Zm/HdBF6FjCrpCMRq25Mi0U1gl4pwn2TlH7hQ== + dependencies: + loader-utils "^1.0.2" + schema-utils "^1.0.0" + +file-type@^3.8.0: + version "3.9.0" + resolved "https://registry.yarnpkg.com/file-type/-/file-type-3.9.0.tgz#257a078384d1db8087bc449d107d52a52672b9e9" + integrity sha1-JXoHg4TR24CHvESdEH1SpSZyuek= + +file-type@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/file-type/-/file-type-5.2.0.tgz#2ddbea7c73ffe36368dfae49dc338c058c2b8ad6" + integrity sha1-LdvqfHP/42No365J3DOMBYwritY= + +file-type@^6.1.0: + version "6.2.0" + resolved "https://registry.yarnpkg.com/file-type/-/file-type-6.2.0.tgz#e50cd75d356ffed4e306dc4f5bcf52a79903a919" + integrity sha512-YPcTBDV+2Tm0VqjybVd32MHdlEGAtuxS3VAYsumFokDSMG+ROT5wawGlnHDoz7bfMcMDt9hxuXvXwoKUx2fkOg== + +filename-regex@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/filename-regex/-/filename-regex-2.0.1.tgz#c1c4b9bee3e09725ddb106b75c1e301fe2f18b26" + integrity sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY= + +fileset@^2.0.2: + version "2.0.3" + resolved "https://registry.yarnpkg.com/fileset/-/fileset-2.0.3.tgz#8e7548a96d3cc2327ee5e674168723a333bba2a0" + integrity sha1-jnVIqW08wjJ+5eZ0FocjozO7oqA= + dependencies: + glob "^7.0.3" + minimatch "^3.0.3" + +filesize@3.6.1: + version "3.6.1" + resolved "https://registry.yarnpkg.com/filesize/-/filesize-3.6.1.tgz#090bb3ee01b6f801a8a8be99d31710b3422bb317" + integrity sha512-7KjR1vv6qnicaPMi1iiTcI85CyYwRO/PSFCu6SvqL8jN2Wjt/NIYQTFtFs7fSDCYOstUkEWIQGFUg5YZQfjlcg== + +fill-range@^2.1.0: + version "2.2.4" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-2.2.4.tgz#eb1e773abb056dcd8df2bfdf6af59b8b3a936565" + integrity sha512-cnrcCbj01+j2gTG921VZPnHbjmdAf8oQV/iGeV2kZxGSyfYjjTyY79ErsK1WJWMpw6DaApEX72binqJE+/d+5Q== + dependencies: + is-number "^2.1.0" + isobject "^2.0.0" + randomatic "^3.0.0" + repeat-element "^1.1.2" + repeat-string "^1.5.2" + +fill-range@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7" + integrity sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc= + dependencies: + extend-shallow "^2.0.1" + is-number "^3.0.0" + repeat-string "^1.6.1" + to-regex-range "^2.1.0" + +finalhandler@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.1.tgz#eebf4ed840079c83f4249038c9d703008301b105" + integrity sha512-Y1GUDo39ez4aHAw7MysnUD5JzYX+WaIj8I57kO3aEPT1fFRL4sr7mjei97FgnwhAyyzRYmQZaTHb2+9uZ1dPtg== + dependencies: + debug "2.6.9" + encodeurl "~1.0.2" + escape-html "~1.0.3" + on-finished "~2.3.0" + parseurl "~1.3.2" + statuses "~1.4.0" + unpipe "~1.0.0" + +find-cache-dir@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-0.1.1.tgz#c8defae57c8a52a8a784f9e31c57c742e993a0b9" + integrity sha1-yN765XyKUqinhPnjHFfHQumToLk= + dependencies: + commondir "^1.0.1" + mkdirp "^0.5.1" + pkg-dir "^1.0.0" + +find-cache-dir@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-1.0.0.tgz#9288e3e9e3cc3748717d39eade17cf71fc30ee6f" + integrity sha1-kojj6ePMN0hxfTnq3hfPcfww7m8= + dependencies: + commondir "^1.0.1" + make-dir "^1.0.0" + pkg-dir "^2.0.0" + +find-cache-dir@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-2.0.0.tgz#4c1faed59f45184530fb9d7fa123a4d04a98472d" + integrity sha512-LDUY6V1Xs5eFskUVYtIwatojt6+9xC9Chnlk/jYOOvn3FAFfSaWddxahDGyNHh0b2dMXa6YW2m0tk8TdVaXHlA== + dependencies: + commondir "^1.0.1" + make-dir "^1.0.0" + pkg-dir "^3.0.0" + +find-up@3.0.0, find-up@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73" + integrity sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg== + dependencies: + locate-path "^3.0.0" + +find-up@^1.0.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-1.1.2.tgz#6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f" + integrity sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8= + dependencies: + path-exists "^2.0.0" + pinkie-promise "^2.0.0" + +find-up@^2.0.0, find-up@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" + integrity sha1-RdG35QbHF93UgndaK3eSCjwMV6c= + dependencies: + locate-path "^2.0.0" + +flat-cache@^1.2.1: + version "1.3.4" + resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-1.3.4.tgz#2c2ef77525cc2929007dfffa1dd314aa9c9dee6f" + integrity sha512-VwyB3Lkgacfik2vhqR4uv2rvebqmDvFu4jlN/C1RzWoJEo8I7z4Q404oiqYCkq41mni8EzQnm95emU9seckwtg== + dependencies: + circular-json "^0.3.1" + graceful-fs "^4.1.2" + rimraf "~2.6.2" + write "^0.2.1" + +flatten@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/flatten/-/flatten-1.0.2.tgz#dae46a9d78fbe25292258cc1e780a41d95c03782" + integrity sha1-2uRqnXj74lKSJYzB54CkHZXAN4I= + +flush-write-stream@^1.0.0: + version "1.0.3" + resolved "https://registry.yarnpkg.com/flush-write-stream/-/flush-write-stream-1.0.3.tgz#c5d586ef38af6097650b49bc41b55fabb19f35bd" + integrity sha512-calZMC10u0FMUqoiunI2AiGIIUtUIvifNwkHhNupZH4cbNnW1Itkoh/Nf5HFYmDrwWPjrUxpkZT0KhuCq0jmGw== + dependencies: + inherits "^2.0.1" + readable-stream "^2.0.4" + +follow-redirects@^1.0.0: + version "1.6.1" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.6.1.tgz#514973c44b5757368bad8bddfe52f81f015c94cb" + integrity sha512-t2JCjbzxQpWvbhts3l6SH1DKzSrx8a+SsaVf4h6bG4kOXUuPYS/kg2Lr4gQSb7eemaHqJkOThF1BGyjlUkO1GQ== + dependencies: + debug "=3.1.0" + +for-each@^0.3.2, for-each@~0.3.3: + version "0.3.3" + resolved "https://registry.yarnpkg.com/for-each/-/for-each-0.3.3.tgz#69b447e88a0a5d32c3e7084f3f1710034b21376e" + integrity sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw== + dependencies: + is-callable "^1.1.3" + +for-in@^0.1.3: + version "0.1.8" + resolved "https://registry.yarnpkg.com/for-in/-/for-in-0.1.8.tgz#d8773908e31256109952b1fdb9b3fa867d2775e1" + integrity sha1-2Hc5COMSVhCZUrH9ubP6hn0ndeE= + +for-in@^1.0.1, for-in@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" + integrity sha1-gQaNKVqBQuwKxybG4iAMMPttXoA= + +for-own@^0.1.3, for-own@^0.1.4: + version "0.1.5" + resolved "https://registry.yarnpkg.com/for-own/-/for-own-0.1.5.tgz#5265c681a4f294dabbf17c9509b6763aa84510ce" + integrity sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4= + dependencies: + for-in "^1.0.1" + +for-own@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/for-own/-/for-own-1.0.0.tgz#c63332f415cedc4b04dbfe70cf836494c53cb44b" + integrity sha1-xjMy9BXO3EsE2/5wz4NklMU8tEs= + dependencies: + for-in "^1.0.1" + +forever-agent@~0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" + integrity sha1-+8cfDEGt6zf5bFd60e1C2P2sypE= + +fork-ts-checker-webpack-plugin-alt@0.4.14: + version "0.4.14" + resolved "https://registry.yarnpkg.com/fork-ts-checker-webpack-plugin-alt/-/fork-ts-checker-webpack-plugin-alt-0.4.14.tgz#1bd6c0d97b7d4682dde61255fcbd78b72f7473a0" + integrity sha512-s0wjOBuPdylMRBzZ4yO8LSJuzem3g0MYZFxsjRXrFDQyL5KJBVSq30+GoHM/t/r2CRU4tI6zi04sq6OXK0UYnw== + dependencies: + babel-code-frame "^6.22.0" + chalk "^2.4.1" + chokidar "^2.0.4" + lodash "^4.17.11" + micromatch "^3.1.10" + minimatch "^3.0.4" + resolve "^1.5.0" + tapable "^1.0.0" + +form-data@~2.3.2: + version "2.3.3" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.3.tgz#dcce52c05f644f298c6a7ab936bd724ceffbf3a6" + integrity sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ== + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.6" + mime-types "^2.1.12" + +forwarded@~0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.1.2.tgz#98c23dab1175657b8c0573e8ceccd91b0ff18c84" + integrity sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ= + +fragment-cache@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/fragment-cache/-/fragment-cache-0.2.1.tgz#4290fad27f13e89be7f33799c6bc5a0abfff0d19" + integrity sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk= + dependencies: + map-cache "^0.2.2" + +fresh@0.5.2: + version "0.5.2" + resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" + integrity sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac= + +from2@^2.1.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/from2/-/from2-2.3.0.tgz#8bfb5502bde4a4d36cfdeea007fcca21d7e382af" + integrity sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8= + dependencies: + inherits "^2.0.1" + readable-stream "^2.0.0" + +fs-constants@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs-constants/-/fs-constants-1.0.0.tgz#6be0de9be998ce16af8afc24497b9ee9b7ccd9ad" + integrity sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow== + +fs-extra@7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-7.0.0.tgz#8cc3f47ce07ef7b3593a11b9fb245f7e34c041d6" + integrity sha512-EglNDLRpmaTWiD/qraZn6HREAEAHJcJOmxNEYwq6xeMKnVMAy3GUcFB+wXt2C6k4CNvB/mP1y/U3dzvKKj5OtQ== + dependencies: + graceful-fs "^4.1.2" + jsonfile "^4.0.0" + universalify "^0.1.0" + +fs-extra@^2.0.0, fs-extra@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-2.1.2.tgz#046c70163cef9aad46b0e4a7fa467fb22d71de35" + integrity sha1-BGxwFjzvmq1GsOSn+kZ/si1x3jU= + dependencies: + graceful-fs "^4.1.2" + jsonfile "^2.1.0" + +fs-extra@^4.0.2: + version "4.0.3" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-4.0.3.tgz#0d852122e5bc5beb453fb028e9c0c9bf36340c94" + integrity sha512-q6rbdDd1o2mAnQreO7YADIxf/Whx4AHBiRf6d+/cVT8h44ss+lHgxf1FemcqDnQt9X3ct4McHr+JMGlYSsK7Cg== + dependencies: + graceful-fs "^4.1.2" + jsonfile "^4.0.0" + universalify "^0.1.0" + +fs-extra@^7.0.0: + version "7.0.1" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-7.0.1.tgz#4f189c44aa123b895f722804f55ea23eadc348e9" + integrity sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw== + dependencies: + graceful-fs "^4.1.2" + jsonfile "^4.0.0" + universalify "^0.1.0" + +fs-minipass@^1.2.5: + version "1.2.5" + resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-1.2.5.tgz#06c277218454ec288df77ada54a03b8702aacb9d" + integrity sha512-JhBl0skXjUPCFH7x6x61gQxrKyXsxB5gcgePLZCwfyCGGsTISMoIeObbrvVeP6Xmyaudw4TT43qV2Gz+iyd2oQ== + dependencies: + minipass "^2.2.1" + +fs-promise@^2.0.0: + version "2.0.3" + resolved "https://registry.yarnpkg.com/fs-promise/-/fs-promise-2.0.3.tgz#f64e4f854bcf689aa8bddcba268916db3db46854" + integrity sha1-9k5PhUvPaJqovdy6JokW2z20aFQ= + dependencies: + any-promise "^1.3.0" + fs-extra "^2.0.0" + mz "^2.6.0" + thenify-all "^1.6.0" + +fs-write-stream-atomic@^1.0.8: + version "1.0.10" + resolved "https://registry.yarnpkg.com/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz#b47df53493ef911df75731e70a9ded0189db40c9" + integrity sha1-tH31NJPvkR33VzHnCp3tAYnbQMk= + dependencies: + graceful-fs "^4.1.2" + iferr "^0.1.5" + imurmurhash "^0.1.4" + readable-stream "1 || 2" + +fs.realpath@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" + integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= + +fsevents@1.2.4, fsevents@^1.2.2, fsevents@^1.2.3: + version "1.2.4" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.4.tgz#f41dcb1af2582af3692da36fc55cbd8e1041c426" + integrity sha512-z8H8/diyk76B7q5wg+Ud0+CqzcAF3mBBI/bA5ne5zrRUUIvNkJY//D3BqyH571KuAC4Nr7Rw7CjWX4r0y9DvNg== + dependencies: + nan "^2.9.2" + node-pre-gyp "^0.10.0" + +fstream@^1.0.2, fstream@^1.0.8: + version "1.0.11" + resolved "https://registry.yarnpkg.com/fstream/-/fstream-1.0.11.tgz#5c1fb1f117477114f0632a0eb4b71b3cb0fd3171" + integrity sha1-XB+x8RdHcRTwYyoOtLcbPLD9MXE= + dependencies: + graceful-fs "^4.1.2" + inherits "~2.0.0" + mkdirp ">=0.5 0" + rimraf "2" + +function-bind@^1.0.2, function-bind@^1.1.1, function-bind@~1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" + integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== + +functional-red-black-tree@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" + integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc= + +gauge@~2.7.3: + version "2.7.4" + resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7" + integrity sha1-LANAXHU4w51+s3sxcCLjJfsBi/c= + dependencies: + aproba "^1.0.3" + console-control-strings "^1.0.0" + has-unicode "^2.0.0" + object-assign "^4.1.0" + signal-exit "^3.0.0" + string-width "^1.0.1" + strip-ansi "^3.0.1" + wide-align "^1.1.0" + +get-caller-file@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.3.tgz#f978fa4c90d1dfe7ff2d6beda2a515e713bdcf4a" + integrity sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w== + +get-own-enumerable-property-symbols@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.0.tgz#b877b49a5c16aefac3655f2ed2ea5b684df8d203" + integrity sha512-CIJYJC4GGF06TakLg8z4GQKvDsx9EMspVxOYih7LerEL/WosUnFIww45CGfxfeKHqlg3twgUrYRT1O3WQqjGCg== + +get-stream@^2.2.0: + version "2.3.1" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-2.3.1.tgz#5f38f93f346009666ee0150a054167f91bdd95de" + integrity sha1-Xzj5PzRgCWZu4BUKBUFn+Rvdld4= + dependencies: + object-assign "^4.0.1" + pinkie-promise "^2.0.0" + +get-stream@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14" + integrity sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ= + +get-stream@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5" + integrity sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w== + dependencies: + pump "^3.0.0" + +get-value@^2.0.3, get-value@^2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28" + integrity sha1-3BXKHGcjh8p2vTesCjlbogQqLCg= + +getpass@^0.1.1: + version "0.1.7" + resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" + integrity sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo= + dependencies: + assert-plus "^1.0.0" + +glob-base@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/glob-base/-/glob-base-0.3.0.tgz#dbb164f6221b1c0b1ccf82aea328b497df0ea3c4" + integrity sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q= + dependencies: + glob-parent "^2.0.0" + is-glob "^2.0.0" + +glob-parent@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-2.0.0.tgz#81383d72db054fcccf5336daa902f182f6edbb28" + integrity sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg= + dependencies: + is-glob "^2.0.0" + +glob-parent@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-3.1.0.tgz#9e6af6299d8d3bd2bd40430832bd113df906c5ae" + integrity sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4= + dependencies: + is-glob "^3.1.0" + path-dirname "^1.0.0" + +glob-to-regexp@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz#8c5a1494d2066c570cc3bfe4496175acc4d502ab" + integrity sha1-jFoUlNIGbFcMw7/kSWF1rMTVAqs= + +glob@^7.0.3, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@~7.1.2: + version "7.1.3" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.3.tgz#3960832d3f1574108342dafd3a67b332c0969df1" + integrity sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.0.4" + once "^1.3.0" + path-is-absolute "^1.0.0" + +global-modules@1.0.0, global-modules@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-1.0.0.tgz#6d770f0eb523ac78164d72b5e71a8877265cc3ea" + integrity sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg== + dependencies: + global-prefix "^1.0.1" + is-windows "^1.0.1" + resolve-dir "^1.0.0" + +global-prefix@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/global-prefix/-/global-prefix-1.0.2.tgz#dbf743c6c14992593c655568cb66ed32c0122ebe" + integrity sha1-2/dDxsFJklk8ZVVoy2btMsASLr4= + dependencies: + expand-tilde "^2.0.2" + homedir-polyfill "^1.0.1" + ini "^1.3.4" + is-windows "^1.0.1" + which "^1.2.14" + +global@~4.3.0: + version "4.3.2" + resolved "https://registry.yarnpkg.com/global/-/global-4.3.2.tgz#e76989268a6c74c38908b1305b10fc0e394e9d0f" + integrity sha1-52mJJopsdMOJCLEwWxD8DjlOnQ8= + dependencies: + min-document "^2.19.0" + process "~0.5.1" + +globals@^11.1.0, globals@^11.7.0: + version "11.9.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-11.9.0.tgz#bde236808e987f290768a93d065060d78e6ab249" + integrity sha512-5cJVtyXWH8PiJPVLZzzoIizXx944O4OmRro5MWKx5fT4MgcN7OfaMutPeaTdJCCURwbWdhhcCWcKIffPnmTzBg== + +globals@^9.18.0: + version "9.18.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-9.18.0.tgz#aa3896b3e69b487f17e31ed2143d69a8e30c2d8a" + integrity sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ== + +globby@8.0.1: + version "8.0.1" + resolved "https://registry.yarnpkg.com/globby/-/globby-8.0.1.tgz#b5ad48b8aa80b35b814fc1281ecc851f1d2b5b50" + integrity sha512-oMrYrJERnKBLXNLVTqhm3vPEdJ/b2ZE28xN4YARiix1NOIOBPEpOUnm844K1iu/BkphCaf2WNFwMszv8Soi1pw== + dependencies: + array-union "^1.0.1" + dir-glob "^2.0.0" + fast-glob "^2.0.2" + glob "^7.1.2" + ignore "^3.3.5" + pify "^3.0.0" + slash "^1.0.0" + +globby@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/globby/-/globby-6.1.0.tgz#f5a6d70e8395e21c858fb0489d64df02424d506c" + integrity sha1-9abXDoOV4hyFj7BInWTfAkJNUGw= + dependencies: + array-union "^1.0.1" + glob "^7.0.3" + object-assign "^4.0.1" + pify "^2.0.0" + pinkie-promise "^2.0.0" + +got@7.1.0, got@^7.1.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/got/-/got-7.1.0.tgz#05450fd84094e6bbea56f451a43a9c289166385a" + integrity sha512-Y5WMo7xKKq1muPsxD+KmrR8DH5auG7fBdDVueZwETwV6VytKyU9OX/ddpq2/1hp1vIPvVb4T81dKQz3BivkNLw== + dependencies: + decompress-response "^3.2.0" + duplexer3 "^0.1.4" + get-stream "^3.0.0" + is-plain-obj "^1.1.0" + is-retry-allowed "^1.0.0" + is-stream "^1.0.0" + isurl "^1.0.0-alpha5" + lowercase-keys "^1.0.0" + p-cancelable "^0.3.0" + p-timeout "^1.1.1" + safe-buffer "^5.0.1" + timed-out "^4.0.0" + url-parse-lax "^1.0.0" + url-to-options "^1.0.1" + +graceful-fs@^4.1.10, graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6: + version "4.1.15" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.15.tgz#ffb703e1066e8a0eeaa4c8b80ba9253eeefbfb00" + integrity sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA== + +"graceful-readlink@>= 1.0.0": + version "1.0.1" + resolved "https://registry.yarnpkg.com/graceful-readlink/-/graceful-readlink-1.0.1.tgz#4cafad76bc62f02fa039b2f94e9a3dd3a391a725" + integrity sha1-TK+tdrxi8C+gObL5Tpo906ORpyU= + +growly@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/growly/-/growly-1.3.0.tgz#f10748cbe76af964b7c96c93c6bcc28af120c081" + integrity sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE= + +gud@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/gud/-/gud-1.0.0.tgz#a489581b17e6a70beca9abe3ae57de7a499852c0" + integrity sha512-zGEOVKFM5sVPPrYs7J5/hYEw2Pof8KCyOwyhG8sAF26mCAeUFAcYPu1mwB7hhpIP29zOIBaDqwuHdLp0jvZXjw== + +gzip-size@5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/gzip-size/-/gzip-size-5.0.0.tgz#a55ecd99222f4c48fd8c01c625ce3b349d0a0e80" + integrity sha512-5iI7omclyqrnWw4XbXAmGhPsABkSIDQonv2K0h61lybgofWa6iZyvrI3r2zsJH4P8Nb64fFVzlvfhs0g7BBxAA== + dependencies: + duplexer "^0.1.1" + pify "^3.0.0" + +h2x-core@^1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/h2x-core/-/h2x-core-1.1.1.tgz#7fb31ab28e30ebf11818e3c7d183487ecf489f9f" + integrity sha512-LdXe4Irs731knLtHgLyFrnJCumfiqXXQwKN1IMUhi37li29PLfLbMDvfK7Rk4wmgHLKP+sIITT1mcJV4QsC3nw== + dependencies: + h2x-generate "^1.1.0" + h2x-parse "^1.1.1" + h2x-traverse "^1.1.0" + +h2x-generate@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/h2x-generate/-/h2x-generate-1.1.0.tgz#c2c98c60070e1eed231e482d5826c3c5dab2a9ba" + integrity sha512-L7Hym0yb20QIjvqeULUPOeh/cyvScdOAyJ6oRlh5dF0+w92hf3OiTk1q15KBijde7jGEe+0R4aOmtW8gkPNIzg== + dependencies: + h2x-traverse "^1.1.0" + +h2x-parse@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/h2x-parse/-/h2x-parse-1.1.1.tgz#875712cd3be75cf736c610d279b8653b24f58385" + integrity sha512-WRSmPF+tIWuUXVEZaYRhcZx/JGEJx8LjZpDDtrvMr5m/GTR0NerydCik5dRzcKXPWCtfXxuJRLR4v2P4HB2B1A== + dependencies: + h2x-types "^1.1.0" + jsdom ">=11.0.0" + +h2x-plugin-jsx@^1.1.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/h2x-plugin-jsx/-/h2x-plugin-jsx-1.2.0.tgz#211fa02e5c4e0a07307b0005629923910e631c01" + integrity sha512-a7Vb3BHhJJq0dPDNdqguEyQirENkVsFtvM2YkiaT5h/fmGhmM1nDy3BLeJeSKi2tL2g9v4ykm2Z+GG9QrhDgPA== + dependencies: + h2x-types "^1.1.0" + +h2x-traverse@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/h2x-traverse/-/h2x-traverse-1.1.0.tgz#194b36c593f4e20a754dee47fa6b2288647b2271" + integrity sha512-1ND8ZbISLSUgpLHYJRvhvElITvs0g44L7RxjeXViz5XP6rooa+FtXTFLByl2Yg01zj2txubifHIuU4pgvj8l+A== + dependencies: + h2x-types "^1.1.0" + +h2x-types@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/h2x-types/-/h2x-types-1.1.0.tgz#ec0d5e3674e2207269f32976ac9c82aaff4818e6" + integrity sha512-QdH5qfLcdF209UsCdM0ZNZ9Dwm2PHvMfeLZtivBrjX3Y/df4US2pwsUC4HBfWhye/mx/t6puODeC7Oacb/Ol8g== + +handle-thing@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/handle-thing/-/handle-thing-2.0.0.tgz#0e039695ff50c93fc288557d696f3c1dc6776754" + integrity sha512-d4sze1JNC454Wdo2fkuyzCr6aHcbL6PGGuFAz0Li/NcOm1tCHGnWDRmJP85dh9IhQErTc2svWFEX5xHIOo//kQ== + +handlebars@^4.0.3: + version "4.0.12" + resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.0.12.tgz#2c15c8a96d46da5e266700518ba8cb8d919d5bc5" + integrity sha512-RhmTekP+FZL+XNhwS1Wf+bTTZpdLougwt5pcgA1tuz6Jcx0fpH/7z0qd71RKnZHBCxIRBHfBOnio4gViPemNzA== + dependencies: + async "^2.5.0" + optimist "^0.6.1" + source-map "^0.6.1" + optionalDependencies: + uglify-js "^3.1.4" + +har-schema@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" + integrity sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI= + +har-validator@~5.1.0: + version "5.1.3" + resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.3.tgz#1ef89ebd3e4996557675eed9893110dc350fa080" + integrity sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g== + dependencies: + ajv "^6.5.5" + har-schema "^2.0.0" + +harmony-reflect@^1.4.6: + version "1.6.1" + resolved "https://registry.yarnpkg.com/harmony-reflect/-/harmony-reflect-1.6.1.tgz#c108d4f2bb451efef7a37861fdbdae72c9bdefa9" + integrity sha512-WJTeyp0JzGtHcuMsi7rw2VwtkvLa+JyfEKJCFyfcS0+CDkjQ5lHPu7zEhFZP+PDSRrEgXa5Ah0l1MbgbE41XjA== + +has-ansi@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91" + integrity sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE= + dependencies: + ansi-regex "^2.0.0" + +has-flag@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-1.0.0.tgz#9d9e793165ce017a00f00418c43f942a7b1d11fa" + integrity sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo= + +has-flag@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" + integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= + +has-symbol-support-x@^1.4.1: + version "1.4.2" + resolved "https://registry.yarnpkg.com/has-symbol-support-x/-/has-symbol-support-x-1.4.2.tgz#1409f98bc00247da45da67cee0a36f282ff26455" + integrity sha512-3ToOva++HaW+eCpgqZrCfN51IPB+7bJNVT6CUATzueB5Heb8o6Nam0V3HG5dlDvZU1Gn5QLcbahiKw/XVk5JJw== + +has-symbols@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.0.tgz#ba1a8f1af2a0fc39650f5c850367704122063b44" + integrity sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q= + +has-to-string-tag-x@^1.2.0: + version "1.4.1" + resolved "https://registry.yarnpkg.com/has-to-string-tag-x/-/has-to-string-tag-x-1.4.1.tgz#a045ab383d7b4b2012a00148ab0aa5f290044d4d" + integrity sha512-vdbKfmw+3LoOYVr+mtxHaX5a96+0f3DljYd8JOqvOLsf5mw2Otda2qCDT9qRqLAhrjyQ0h7ual5nOiASpsGNFw== + dependencies: + has-symbol-support-x "^1.4.1" + +has-unicode@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" + integrity sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk= + +has-value@^0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f" + integrity sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8= + dependencies: + get-value "^2.0.3" + has-values "^0.1.4" + isobject "^2.0.0" + +has-value@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-value/-/has-value-1.0.0.tgz#18b281da585b1c5c51def24c930ed29a0be6b177" + integrity sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc= + dependencies: + get-value "^2.0.6" + has-values "^1.0.0" + isobject "^3.0.0" + +has-values@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/has-values/-/has-values-0.1.4.tgz#6d61de95d91dfca9b9a02089ad384bff8f62b771" + integrity sha1-bWHeldkd/Km5oCCJrThL/49it3E= + +has-values@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-values/-/has-values-1.0.0.tgz#95b0b63fec2146619a6fe57fe75628d5a39efe4f" + integrity sha1-lbC2P+whRmGab+V/51Yo1aOe/k8= + dependencies: + is-number "^3.0.0" + kind-of "^4.0.0" + +has@^1.0.0, has@^1.0.1, has@^1.0.3, has@~1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" + integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== + dependencies: + function-bind "^1.1.1" + +hash-base@^3.0.0: + version "3.0.4" + resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-3.0.4.tgz#5fc8686847ecd73499403319a6b0a3f3f6ae4918" + integrity sha1-X8hoaEfs1zSZQDMZprCj8/auSRg= + dependencies: + inherits "^2.0.1" + safe-buffer "^5.0.1" + +hash.js@1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.3.tgz#340dedbe6290187151c1ea1d777a3448935df846" + integrity sha512-/UETyP0W22QILqS+6HowevwhEFJ3MBJnwTf75Qob9Wz9t0DPuisL8kW8YZMK62dHAKE1c1p+gY1TtOLY+USEHA== + dependencies: + inherits "^2.0.3" + minimalistic-assert "^1.0.0" + +hash.js@^1.0.0, hash.js@^1.0.3: + version "1.1.7" + resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.7.tgz#0babca538e8d4ee4a0f8988d68866537a003cf42" + integrity sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA== + dependencies: + inherits "^2.0.3" + minimalistic-assert "^1.0.1" + +he@1.2.x: + version "1.2.0" + resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" + integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== + +hex-color-regex@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/hex-color-regex/-/hex-color-regex-1.1.0.tgz#4c06fccb4602fe2602b3c93df82d7e7dbf1a8a8e" + integrity sha512-l9sfDFsuqtOqKDsQdqrMRk0U85RZc0RtOR9yPI7mRVOa4FsR/BVnZ0shmQRM96Ji99kYZP/7hn1cedc1+ApsTQ== + +history@^4.9.0: + version "4.9.0" + resolved "https://registry.yarnpkg.com/history/-/history-4.9.0.tgz#84587c2068039ead8af769e9d6a6860a14fa1bca" + integrity sha512-H2DkjCjXf0Op9OAr6nJ56fcRkTSNrUiv41vNJ6IswJjif6wlpZK0BTfFbi7qK9dXLSYZxkq5lBsj3vUjlYBYZA== + dependencies: + "@babel/runtime" "^7.1.2" + loose-envify "^1.2.0" + resolve-pathname "^2.2.0" + tiny-invariant "^1.0.2" + tiny-warning "^1.0.0" + value-equal "^0.4.0" + +hmac-drbg@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1" + integrity sha1-0nRXAQJabHdabFRXk+1QL8DGSaE= + dependencies: + hash.js "^1.0.3" + minimalistic-assert "^1.0.0" + minimalistic-crypto-utils "^1.0.1" + +hoek@4.x.x: + version "4.2.1" + resolved "https://registry.yarnpkg.com/hoek/-/hoek-4.2.1.tgz#9634502aa12c445dd5a7c5734b572bb8738aacbb" + integrity sha512-QLg82fGkfnJ/4iy1xZ81/9SIJiq1NGFUMGs6ParyjBZr6jW2Ufj/snDqTHixNlHdPNwN2RLVD0Pi3igeK9+JfA== + +hoist-non-react-statics@^2.3.1: + version "2.5.5" + resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-2.5.5.tgz#c5903cf409c0dfd908f388e619d86b9c1174cb47" + integrity sha512-rqcy4pJo55FTTLWt+bU8ukscqHeE/e9KWvsOW2b/a3afxQZhwkQdT1rPPCJ0rYXdj4vNcasY8zHTH+jF/qStxw== + +hoist-non-react-statics@^3.1.0, hoist-non-react-statics@^3.2.1: + version "3.3.0" + resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-3.3.0.tgz#b09178f0122184fb95acf525daaecb4d8f45958b" + integrity sha512-0XsbTXxgiaCDYDIWFcwkmerZPSwywfUqYmwT4jzewKTQSWoE6FCMoUVOeBJWK3E/CrWbxRG3m5GzY4lnIwGRBA== + dependencies: + react-is "^16.7.0" + +home-or-tmp@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/home-or-tmp/-/home-or-tmp-2.0.0.tgz#e36c3f2d2cae7d746a857e38d18d5f32a7882db8" + integrity sha1-42w/LSyufXRqhX440Y1fMqeILbg= + dependencies: + os-homedir "^1.0.0" + os-tmpdir "^1.0.1" + +homedir-polyfill@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/homedir-polyfill/-/homedir-polyfill-1.0.1.tgz#4c2bbc8a758998feebf5ed68580f76d46768b4bc" + integrity sha1-TCu8inWJmP7r9e1oWA921GdotLw= + dependencies: + parse-passwd "^1.0.0" + +hoopy@^0.1.2: + version "0.1.4" + resolved "https://registry.yarnpkg.com/hoopy/-/hoopy-0.1.4.tgz#609207d661100033a9a9402ad3dea677381c1b1d" + integrity sha512-HRcs+2mr52W0K+x8RzcLzuPPmVIKMSv97RGHy0Ea9y/mpcaK+xTrjICA04KAHi4GRzxliNqNJEFYWHghy3rSfQ== + +hosted-git-info@^2.1.4: + version "2.7.1" + resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.7.1.tgz#97f236977bd6e125408930ff6de3eec6281ec047" + integrity sha512-7T/BxH19zbcCTa8XkMlbK5lTo1WtgkFi3GvdWEyNuc4Vex7/9Dqbnpsf4JMydcfj9HCg4zUWFTL3Za6lapg5/w== + +hpack.js@^2.1.6: + version "2.1.6" + resolved "https://registry.yarnpkg.com/hpack.js/-/hpack.js-2.1.6.tgz#87774c0949e513f42e84575b3c45681fade2a0b2" + integrity sha1-h3dMCUnlE/QuhFdbPEVoH63ioLI= + dependencies: + inherits "^2.0.1" + obuf "^1.0.0" + readable-stream "^2.0.1" + wbuf "^1.1.0" + +hsl-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/hsl-regex/-/hsl-regex-1.0.0.tgz#d49330c789ed819e276a4c0d272dffa30b18fe6e" + integrity sha1-1JMwx4ntgZ4nakwNJy3/owsY/m4= + +hsla-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/hsla-regex/-/hsla-regex-1.0.0.tgz#c1ce7a3168c8c6614033a4b5f7877f3b225f9c38" + integrity sha1-wc56MWjIxmFAM6S194d/OyJfnDg= + +html-comment-regex@^1.1.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/html-comment-regex/-/html-comment-regex-1.1.2.tgz#97d4688aeb5c81886a364faa0cad1dda14d433a7" + integrity sha512-P+M65QY2JQ5Y0G9KKdlDpo0zK+/OHptU5AaBwUfAIDJZk1MYf32Frm84EcOytfJE0t5JvkAnKlmjsXDnWzCJmQ== + +html-encoding-sniffer@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz#e70d84b94da53aa375e11fe3a351be6642ca46f8" + integrity sha512-71lZziiDnsuabfdYiUeWdCVyKuqwWi23L8YeIgV9jSSZHCtb6wB1BKWooH7L3tn4/FuZJMVWyNaIDr4RGmaSYw== + dependencies: + whatwg-encoding "^1.0.1" + +html-entities@^1.2.0: + version "1.2.1" + resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-1.2.1.tgz#0df29351f0721163515dfb9e5543e5f6eed5162f" + integrity sha1-DfKTUfByEWNRXfueVUPl9u7VFi8= + +html-minifier@^3.2.3: + version "3.5.21" + resolved "https://registry.yarnpkg.com/html-minifier/-/html-minifier-3.5.21.tgz#d0040e054730e354db008463593194015212d20c" + integrity sha512-LKUKwuJDhxNa3uf/LPR/KVjm/l3rBqtYeCOAekvG8F1vItxMUpueGd94i/asDDr8/1u7InxzFA5EeGjhhG5mMA== + dependencies: + camel-case "3.0.x" + clean-css "4.2.x" + commander "2.17.x" + he "1.2.x" + param-case "2.1.x" + relateurl "0.2.x" + uglify-js "3.4.x" + +html-webpack-plugin@4.0.0-alpha.2: + version "4.0.0-alpha.2" + resolved "https://registry.yarnpkg.com/html-webpack-plugin/-/html-webpack-plugin-4.0.0-alpha.2.tgz#7745967e389a57a098e26963f328ebe4c19b598d" + integrity sha512-tyvhjVpuGqD7QYHi1l1drMQTg5i+qRxpQEGbdnYFREgOKy7aFDf/ocQ/V1fuEDlQx7jV2zMap3Hj2nE9i5eGXw== + dependencies: + "@types/tapable" "1.0.2" + html-minifier "^3.2.3" + loader-utils "^1.1.0" + lodash "^4.17.10" + pretty-error "^2.0.2" + tapable "^1.0.0" + util.promisify "1.0.0" + +htmlparser2@~3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-3.3.0.tgz#cc70d05a59f6542e43f0e685c982e14c924a9efe" + integrity sha1-zHDQWln2VC5D8OaFyYLhTJJKnv4= + dependencies: + domelementtype "1" + domhandler "2.1" + domutils "1.1" + readable-stream "1.0" + +http-deceiver@^1.2.7: + version "1.2.7" + resolved "https://registry.yarnpkg.com/http-deceiver/-/http-deceiver-1.2.7.tgz#fa7168944ab9a519d337cb0bec7284dc3e723d87" + integrity sha1-+nFolEq5pRnTN8sL7HKE3D5yPYc= + +http-errors@1.6.3, http-errors@~1.6.2, http-errors@~1.6.3: + version "1.6.3" + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.3.tgz#8b55680bb4be283a0b5bf4ea2e38580be1d9320d" + integrity sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0= + dependencies: + depd "~1.1.2" + inherits "2.0.3" + setprototypeof "1.1.0" + statuses ">= 1.4.0 < 2" + +http-https@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/http-https/-/http-https-1.0.0.tgz#2f908dd5f1db4068c058cd6e6d4ce392c913389b" + integrity sha1-L5CN1fHbQGjAWM1ubUzjkskTOJs= + +http-parser-js@>=0.4.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.5.0.tgz#d65edbede84349d0dc30320815a15d39cc3cbbd8" + integrity sha512-cZdEF7r4gfRIq7ezX9J0T+kQmJNOub71dWbgAXVHDct80TKP4MCETtZQ31xyv38UwgzkWPYF/Xc0ge55dW9Z9w== + +http-proxy-middleware@~0.18.0: + version "0.18.0" + resolved "https://registry.yarnpkg.com/http-proxy-middleware/-/http-proxy-middleware-0.18.0.tgz#0987e6bb5a5606e5a69168d8f967a87f15dd8aab" + integrity sha512-Fs25KVMPAIIcgjMZkVHJoKg9VcXcC1C8yb9JUgeDvVXY0S/zgVIhMb+qVswDIgtJe2DfckMSY2d6TuTEutlk6Q== + dependencies: + http-proxy "^1.16.2" + is-glob "^4.0.0" + lodash "^4.17.5" + micromatch "^3.1.9" + +http-proxy@^1.16.2: + version "1.17.0" + resolved "https://registry.yarnpkg.com/http-proxy/-/http-proxy-1.17.0.tgz#7ad38494658f84605e2f6db4436df410f4e5be9a" + integrity sha512-Taqn+3nNvYRfJ3bGvKfBSRwy1v6eePlm3oc/aWVxZp57DQr5Eq3xhKJi7Z4hZpS8PC3H4qI+Yly5EmFacGuA/g== + dependencies: + eventemitter3 "^3.0.0" + follow-redirects "^1.0.0" + requires-port "^1.0.0" + +http-signature@~1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1" + integrity sha1-muzZJRFHcvPZW2WmCruPfBj7rOE= + dependencies: + assert-plus "^1.0.0" + jsprim "^1.2.2" + sshpk "^1.7.0" + +https-browserify@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-1.0.0.tgz#ec06c10e0a34c0f2faf199f7fd7fc78fffd03c73" + integrity sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM= + +hyphenate-style-name@^1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/hyphenate-style-name/-/hyphenate-style-name-1.0.3.tgz#097bb7fa0b8f1a9cf0bd5c734cf95899981a9b48" + integrity sha512-EcuixamT82oplpoJ2XU4pDtKGWQ7b00CD9f1ug9IaQ3p1bkHMiKCZ9ut9QDI6qsa6cpUuB+A/I+zLtdNK4n2DQ== + +iconv-lite@0.4.23: + version "0.4.23" + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.23.tgz#297871f63be507adcfbfca715d0cd0eed84e9a63" + integrity sha512-neyTUVFtahjf0mB3dZT77u+8O0QB89jFdnBkd5P1JgYPbPaia3gXXOVL2fq8VyU2gMMD7SaN7QukTB/pmXYvDA== + dependencies: + safer-buffer ">= 2.1.2 < 3" + +iconv-lite@0.4.24, iconv-lite@^0.4.24, iconv-lite@^0.4.4, iconv-lite@~0.4.13: + version "0.4.24" + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" + integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== + dependencies: + safer-buffer ">= 2.1.2 < 3" + +icss-replace-symbols@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/icss-replace-symbols/-/icss-replace-symbols-1.1.0.tgz#06ea6f83679a7749e386cfe1fe812ae5db223ded" + integrity sha1-Bupvg2ead0njhs/h/oEq5dsiPe0= + +icss-utils@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/icss-utils/-/icss-utils-2.1.0.tgz#83f0a0ec378bf3246178b6c2ad9136f135b1c962" + integrity sha1-g/Cg7DeL8yRheLbCrZE28TWxyWI= + dependencies: + postcss "^6.0.1" + +identity-obj-proxy@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/identity-obj-proxy/-/identity-obj-proxy-3.0.0.tgz#94d2bda96084453ef36fbc5aaec37e0f79f1fc14" + integrity sha1-lNK9qWCERT7zb7xarsN+D3nx/BQ= + dependencies: + harmony-reflect "^1.4.6" + +idna-uts46-hx@^2.3.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/idna-uts46-hx/-/idna-uts46-hx-2.3.1.tgz#a1dc5c4df37eee522bf66d969cc980e00e8711f9" + integrity sha512-PWoF9Keq6laYdIRwwCdhTPl60xRqAloYNMQLiyUnG42VjT53oW07BXIRM+NK7eQjzXjAk2gUvX9caRxlnF9TAA== + dependencies: + punycode "2.1.0" + +ieee754@^1.1.4: + version "1.1.12" + resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.12.tgz#50bf24e5b9c8bb98af4964c941cdb0918da7b60b" + integrity sha512-GguP+DRY+pJ3soyIiGPTvdiVXjZ+DbXOxGpXn3eMvNW4x4irjqXm4wHKscC+TfxSJ0yw/S1F24tqdMNsMZTiLA== + +iferr@^0.1.5: + version "0.1.5" + resolved "https://registry.yarnpkg.com/iferr/-/iferr-0.1.5.tgz#c60eed69e6d8fdb6b3104a1fcbca1c192dc5b501" + integrity sha1-xg7taebY/bazEEofy8ocGS3FtQE= + +ignore-walk@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/ignore-walk/-/ignore-walk-3.0.1.tgz#a83e62e7d272ac0e3b551aaa82831a19b69f82f8" + integrity sha512-DTVlMx3IYPe0/JJcYP7Gxg7ttZZu3IInhuEhbchuqneY9wWe5Ojy2mXLBaQFUQmo0AW2r3qG7m1mg86js+gnlQ== + dependencies: + minimatch "^3.0.4" + +ignore@^3.3.5: + version "3.3.10" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-3.3.10.tgz#0a97fb876986e8081c631160f8f9f389157f0043" + integrity sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug== + +ignore@^4.0.6: + version "4.0.6" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" + integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg== + +immer@1.7.2: + version "1.7.2" + resolved "https://registry.yarnpkg.com/immer/-/immer-1.7.2.tgz#a51e9723c50b27e132f6566facbec1c85fc69547" + integrity sha512-4Urocwu9+XLDJw4Tc6ZCg7APVjjLInCFvO4TwGsAYV5zT6YYSor14dsZR0+0tHlDIN92cFUOq+i7fC00G5vTxA== + +import-cwd@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/import-cwd/-/import-cwd-2.1.0.tgz#aa6cf36e722761285cb371ec6519f53e2435b0a9" + integrity sha1-qmzzbnInYShcs3HsZRn1PiQ1sKk= + dependencies: + import-from "^2.1.0" + +import-fresh@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-2.0.0.tgz#d81355c15612d386c61f9ddd3922d4304822a546" + integrity sha1-2BNVwVYS04bGH53dOSLUMEgipUY= + dependencies: + caller-path "^2.0.0" + resolve-from "^3.0.0" + +import-from@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/import-from/-/import-from-2.1.0.tgz#335db7f2a7affd53aaa471d4b8021dee36b7f3b1" + integrity sha1-M1238qev/VOqpHHUuAId7ja387E= + dependencies: + resolve-from "^3.0.0" + +import-local@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/import-local/-/import-local-1.0.0.tgz#5e4ffdc03f4fe6c009c6729beb29631c2f8227bc" + integrity sha512-vAaZHieK9qjGo58agRBg+bhHX3hoTZU/Oa3GESWLz7t1U62fk63aHuDJJEteXoDeTCcPmUT+z38gkHPZkkmpmQ== + dependencies: + pkg-dir "^2.0.0" + resolve-cwd "^2.0.0" + +import-local@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/import-local/-/import-local-2.0.0.tgz#55070be38a5993cf18ef6db7e961f5bee5c5a09d" + integrity sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ== + dependencies: + pkg-dir "^3.0.0" + resolve-cwd "^2.0.0" + +imurmurhash@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" + integrity sha1-khi5srkoojixPcT7a21XbyMUU+o= + +indefinite-observable@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/indefinite-observable/-/indefinite-observable-1.0.2.tgz#0a328793ab2385d4b9dca23eaab4afe6936a73f8" + integrity sha512-Mps0898zEduHyPhb7UCgNmfzlqNZknVmaFz5qzr0mm04YQ5FGLhAyK/dJ+NaRxGyR6juQXIxh5Ev0xx+qq0nYA== + dependencies: + symbol-observable "1.2.0" + +indexes-of@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/indexes-of/-/indexes-of-1.0.1.tgz#f30f716c8e2bd346c7b67d3df3915566a7c05607" + integrity sha1-8w9xbI4r00bHtn0985FVZqfAVgc= + +indexof@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/indexof/-/indexof-0.0.1.tgz#82dc336d232b9062179d05ab3293a66059fd435d" + integrity sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10= + +inflight@^1.0.4: + version "1.0.6" + resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" + integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= + dependencies: + once "^1.3.0" + wrappy "1" + +inherits@2, inherits@2.0.3, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.0, inherits@~2.0.1, inherits@~2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" + integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= + +inherits@2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.1.tgz#b17d08d326b4423e568eff719f91b0b1cbdf69f1" + integrity sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE= + +ini@^1.3.4, ini@~1.3.0: + version "1.3.5" + resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927" + integrity sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw== + +inquirer@6.2.0: + version "6.2.0" + resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-6.2.0.tgz#51adcd776f661369dc1e894859c2560a224abdd8" + integrity sha512-QIEQG4YyQ2UYZGDC4srMZ7BjHOmNk1lR2JQj5UknBapklm6WHA+VVH7N+sUdX3A7NeCfGF8o4X1S3Ao7nAcIeg== + dependencies: + ansi-escapes "^3.0.0" + chalk "^2.0.0" + cli-cursor "^2.1.0" + cli-width "^2.0.0" + external-editor "^3.0.0" + figures "^2.0.0" + lodash "^4.17.10" + mute-stream "0.0.7" + run-async "^2.2.0" + rxjs "^6.1.0" + string-width "^2.1.0" + strip-ansi "^4.0.0" + through "^2.3.6" + +inquirer@^6.1.0: + version "6.2.1" + resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-6.2.1.tgz#9943fc4882161bdb0b0c9276769c75b32dbfcd52" + integrity sha512-088kl3DRT2dLU5riVMKKr1DlImd6X7smDhpXUCkJDCKvTEJeRiXh0G132HG9u5a+6Ylw9plFRY7RuTnwohYSpg== + dependencies: + ansi-escapes "^3.0.0" + chalk "^2.0.0" + cli-cursor "^2.1.0" + cli-width "^2.0.0" + external-editor "^3.0.0" + figures "^2.0.0" + lodash "^4.17.10" + mute-stream "0.0.7" + run-async "^2.2.0" + rxjs "^6.1.0" + string-width "^2.1.0" + strip-ansi "^5.0.0" + through "^2.3.6" + +internal-ip@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/internal-ip/-/internal-ip-3.0.1.tgz#df5c99876e1d2eb2ea2d74f520e3f669a00ece27" + integrity sha512-NXXgESC2nNVtU+pqmC9e6R8B1GpKxzsAQhffvh5AL79qKnodd+L7tnEQmTiUAVngqLalPbSqRA7XGIEL5nCd0Q== + dependencies: + default-gateway "^2.6.0" + ipaddr.js "^1.5.2" + +invariant@^2.2.2, invariant@^2.2.4: + version "2.2.4" + resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6" + integrity sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA== + dependencies: + loose-envify "^1.0.0" + +invert-kv@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-1.0.0.tgz#104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6" + integrity sha1-EEqOSqym09jNFXqO+L+rLXo//bY= + +invert-kv@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-2.0.0.tgz#7393f5afa59ec9ff5f67a27620d11c226e3eec02" + integrity sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA== + +ip-regex@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/ip-regex/-/ip-regex-2.1.0.tgz#fa78bf5d2e6913c911ce9f819ee5146bb6d844e9" + integrity sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk= + +ip@^1.1.0, ip@^1.1.5: + version "1.1.5" + resolved "https://registry.yarnpkg.com/ip/-/ip-1.1.5.tgz#bdded70114290828c0a039e72ef25f5aaec4354a" + integrity sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo= + +ipaddr.js@1.8.0: + version "1.8.0" + resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.8.0.tgz#eaa33d6ddd7ace8f7f6fe0c9ca0440e706738b1e" + integrity sha1-6qM9bd16zo9/b+DJygRA5wZzix4= + +ipaddr.js@^1.5.2: + version "1.8.1" + resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.8.1.tgz#fa4b79fa47fd3def5e3b159825161c0a519c9427" + integrity sha1-+kt5+kf9Pe9eOxWYJRYcClGclCc= + +is-absolute-url@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-absolute-url/-/is-absolute-url-2.1.0.tgz#50530dfb84fcc9aa7dbe7852e83a37b93b9f2aa6" + integrity sha1-UFMN+4T8yap9vnhS6Do3uTufKqY= + +is-accessor-descriptor@^0.1.6: + version "0.1.6" + resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6" + integrity sha1-qeEss66Nh2cn7u84Q/igiXtcmNY= + dependencies: + kind-of "^3.0.2" + +is-accessor-descriptor@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz#169c2f6d3df1f992618072365c9b0ea1f6878656" + integrity sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ== + dependencies: + kind-of "^6.0.0" + +is-arrayish@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" + integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0= + +is-arrayish@^0.3.1: + version "0.3.2" + resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.3.2.tgz#4574a2ae56f7ab206896fb431eaeed066fdf8f03" + integrity sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ== + +is-binary-path@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898" + integrity sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg= + dependencies: + binary-extensions "^1.0.0" + +is-buffer@^1.0.2, is-buffer@^1.1.5: + version "1.1.6" + resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" + integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== + +is-builtin-module@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-builtin-module/-/is-builtin-module-1.0.0.tgz#540572d34f7ac3119f8f76c30cbc1b1e037affbe" + integrity sha1-VAVy0096wxGfj3bDDLwbHgN6/74= + dependencies: + builtin-modules "^1.0.0" + +is-callable@^1.1.3, is-callable@^1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.4.tgz#1e1adf219e1eeb684d691f9d6a05ff0d30a24d75" + integrity sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA== + +is-ci@^1.0.10: + version "1.2.1" + resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-1.2.1.tgz#e3779c8ee17fccf428488f6e281187f2e632841c" + integrity sha512-s6tfsaQaQi3JNciBH6shVqEDvhGut0SUXr31ag8Pd8BBbVVlcGfWhpPmEOoM6RJ5TFhbypvf5yyRw/VXW1IiWg== + dependencies: + ci-info "^1.5.0" + +is-color-stop@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-color-stop/-/is-color-stop-1.1.0.tgz#cfff471aee4dd5c9e158598fbe12967b5cdad345" + integrity sha1-z/9HGu5N1cnhWFmPvhKWe1za00U= + dependencies: + css-color-names "^0.0.4" + hex-color-regex "^1.1.0" + hsl-regex "^1.0.0" + hsla-regex "^1.0.0" + rgb-regex "^1.0.1" + rgba-regex "^1.0.0" + +is-data-descriptor@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56" + integrity sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y= + dependencies: + kind-of "^3.0.2" + +is-data-descriptor@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz#d84876321d0e7add03990406abbbbd36ba9268c7" + integrity sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ== + dependencies: + kind-of "^6.0.0" + +is-date-object@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.1.tgz#9aa20eb6aeebbff77fbd33e74ca01b33581d3a16" + integrity sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY= + +is-descriptor@^0.1.0: + version "0.1.6" + resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-0.1.6.tgz#366d8240dde487ca51823b1ab9f07a10a78251ca" + integrity sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg== + dependencies: + is-accessor-descriptor "^0.1.6" + is-data-descriptor "^0.1.4" + kind-of "^5.0.0" + +is-descriptor@^1.0.0, is-descriptor@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-1.0.2.tgz#3b159746a66604b04f8c81524ba365c5f14d86ec" + integrity sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg== + dependencies: + is-accessor-descriptor "^1.0.0" + is-data-descriptor "^1.0.0" + kind-of "^6.0.2" + +is-directory@^0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/is-directory/-/is-directory-0.3.1.tgz#61339b6f2475fc772fd9c9d83f5c8575dc154ae1" + integrity sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE= + +is-dotfile@^1.0.0: + version "1.0.3" + resolved "https://registry.yarnpkg.com/is-dotfile/-/is-dotfile-1.0.3.tgz#a6a2f32ffd2dfb04f5ca25ecd0f6b83cf798a1e1" + integrity sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE= + +is-equal-shallow@^0.1.3: + version "0.1.3" + resolved "https://registry.yarnpkg.com/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz#2238098fc221de0bcfa5d9eac4c45d638aa1c534" + integrity sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ= + dependencies: + is-primitive "^2.0.0" + +is-extendable@^0.1.0, is-extendable@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" + integrity sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik= + +is-extendable@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-1.0.1.tgz#a7470f9e426733d81bd81e1155264e3a3507cab4" + integrity sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA== + dependencies: + is-plain-object "^2.0.4" + +is-extglob@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-1.0.0.tgz#ac468177c4943405a092fc8f29760c6ffc6206c0" + integrity sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA= + +is-extglob@^2.1.0, is-extglob@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" + integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= + +is-finite@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-finite/-/is-finite-1.0.2.tgz#cc6677695602be550ef11e8b4aa6305342b6d0aa" + integrity sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko= + dependencies: + number-is-nan "^1.0.0" + +is-fn@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-fn/-/is-fn-1.0.0.tgz#9543d5de7bcf5b08a22ec8a20bae6e286d510d8c" + integrity sha1-lUPV3nvPWwiiLsiiC65uKG1RDYw= + +is-fullwidth-code-point@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb" + integrity sha1-754xOG8DGn8NZDr4L95QxFfvAMs= + dependencies: + number-is-nan "^1.0.0" + +is-fullwidth-code-point@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" + integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8= + +is-function@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-function/-/is-function-1.0.1.tgz#12cfb98b65b57dd3d193a3121f5f6e2f437602b5" + integrity sha1-Es+5i2W1fdPRk6MSH19uL0N2ArU= + +is-generator-fn@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-generator-fn/-/is-generator-fn-1.0.0.tgz#969d49e1bb3329f6bb7f09089be26578b2ddd46a" + integrity sha1-lp1J4bszKfa7fwkIm+JleLLd1Go= + +is-glob@^2.0.0, is-glob@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-2.0.1.tgz#d096f926a3ded5600f3fdfd91198cb0888c2d863" + integrity sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM= + dependencies: + is-extglob "^1.0.0" + +is-glob@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a" + integrity sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo= + dependencies: + is-extglob "^2.1.0" + +is-glob@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.0.tgz#9521c76845cc2610a85203ddf080a958c2ffabc0" + integrity sha1-lSHHaEXMJhCoUgPd8ICpWML/q8A= + dependencies: + is-extglob "^2.1.1" + +is-hex-prefixed@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-hex-prefixed/-/is-hex-prefixed-1.0.0.tgz#7d8d37e6ad77e5d127148913c573e082d777f554" + integrity sha1-fY035q135dEnFIkTxXPggtd39VQ= + +is-in-browser@^1.0.2, is-in-browser@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/is-in-browser/-/is-in-browser-1.1.3.tgz#56ff4db683a078c6082eb95dad7dc62e1d04f835" + integrity sha1-Vv9NtoOgeMYILrldrX3GLh0E+DU= + +is-natural-number@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/is-natural-number/-/is-natural-number-4.0.1.tgz#ab9d76e1db4ced51e35de0c72ebecf09f734cde8" + integrity sha1-q5124dtM7VHjXeDHLr7PCfc0zeg= + +is-number@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-2.1.0.tgz#01fcbbb393463a548f2f466cce16dece49db908f" + integrity sha1-Afy7s5NGOlSPL0ZszhbezknbkI8= + dependencies: + kind-of "^3.0.2" + +is-number@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195" + integrity sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU= + dependencies: + kind-of "^3.0.2" + +is-number@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-4.0.0.tgz#0026e37f5454d73e356dfe6564699867c6a7f0ff" + integrity sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ== + +is-obj@^1.0.0, is-obj@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f" + integrity sha1-PkcprB9f3gJc19g6iW2rn09n2w8= + +is-object@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-object/-/is-object-1.0.1.tgz#8952688c5ec2ffd6b03ecc85e769e02903083470" + integrity sha1-iVJojF7C/9awPsyF52ngKQMINHA= + +is-path-cwd@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-1.0.0.tgz#d225ec23132e89edd38fda767472e62e65f1106d" + integrity sha1-0iXsIxMuie3Tj9p2dHLmLmXxEG0= + +is-path-in-cwd@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-path-in-cwd/-/is-path-in-cwd-1.0.1.tgz#5ac48b345ef675339bd6c7a48a912110b241cf52" + integrity sha512-FjV1RTW48E7CWM7eE/J2NJvAEEVektecDBVBE5Hh3nM1Jd0kvhHtX68Pr3xsDf857xt3Y4AkwVULK1Vku62aaQ== + dependencies: + is-path-inside "^1.0.0" + +is-path-inside@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-1.0.1.tgz#8ef5b7de50437a3fdca6b4e865ef7aa55cb48036" + integrity sha1-jvW33lBDej/cprToZe96pVy0gDY= + dependencies: + path-is-inside "^1.0.1" + +is-plain-obj@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e" + integrity sha1-caUMhCnfync8kqOQpKA7OfzVHT4= + +is-plain-object@^2.0.1, is-plain-object@^2.0.3, is-plain-object@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" + integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og== + dependencies: + isobject "^3.0.1" + +is-posix-bracket@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz#3334dc79774368e92f016e6fbc0a88f5cd6e6bc4" + integrity sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q= + +is-primitive@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-primitive/-/is-primitive-2.0.0.tgz#207bab91638499c07b2adf240a41a87210034575" + integrity sha1-IHurkWOEmcB7Kt8kCkGochADRXU= + +is-promise@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.1.0.tgz#79a2a9ece7f096e80f36d2b2f3bc16c1ff4bf3fa" + integrity sha1-eaKp7OfwlugPNtKy87wWwf9L8/o= + +is-regex@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.0.4.tgz#5517489b547091b0930e095654ced25ee97e9491" + integrity sha1-VRdIm1RwkbCTDglWVM7SXul+lJE= + dependencies: + has "^1.0.1" + +is-regexp@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-regexp/-/is-regexp-1.0.0.tgz#fd2d883545c46bac5a633e7b9a09e87fa2cb5069" + integrity sha1-/S2INUXEa6xaYz57mgnof6LLUGk= + +is-resolvable@^1.0.0, is-resolvable@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-resolvable/-/is-resolvable-1.1.0.tgz#fb18f87ce1feb925169c9a407c19318a3206ed88" + integrity sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg== + +is-retry-allowed@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-retry-allowed/-/is-retry-allowed-1.1.0.tgz#11a060568b67339444033d0125a61a20d564fb34" + integrity sha1-EaBgVotnM5REAz0BJaYaINVk+zQ= + +is-root@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-root/-/is-root-2.0.0.tgz#838d1e82318144e5a6f77819d90207645acc7019" + integrity sha512-F/pJIk8QD6OX5DNhRB7hWamLsUilmkDGho48KbgZ6xg/lmAZXHxzXQ91jzB3yRSw5kdQGGGc4yz8HYhTYIMWPg== + +is-stream@^1.0.0, is-stream@^1.0.1, is-stream@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" + integrity sha1-EtSj3U5o4Lec6428hBc66A2RykQ= + +is-svg@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-svg/-/is-svg-3.0.0.tgz#9321dbd29c212e5ca99c4fa9794c714bcafa2f75" + integrity sha512-gi4iHK53LR2ujhLVVj+37Ykh9GLqYHX6JOVXbLAucaG/Cqw9xwdFOjDM2qeifLs1sF1npXXFvDu0r5HNgCMrzQ== + dependencies: + html-comment-regex "^1.1.0" + +is-symbol@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.2.tgz#a055f6ae57192caee329e7a860118b497a950f38" + integrity sha512-HS8bZ9ox60yCJLH9snBpIwv9pYUAkcuLhSA1oero1UB5y9aiQpRA8y2ex945AOtCZL1lJDeIk3G5LthswI46Lw== + dependencies: + has-symbols "^1.0.0" + +is-typedarray@^1.0.0, is-typedarray@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" + integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo= + +is-utf8@^0.2.0: + version "0.2.1" + resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72" + integrity sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI= + +is-windows@^1.0.1, is-windows@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" + integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA== + +is-wsl@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-1.1.0.tgz#1f16e4aa22b04d1336b66188a66af3c600c3a66d" + integrity sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0= + +isarray@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf" + integrity sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8= + +isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" + integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= + +isemail@3.x.x: + version "3.2.0" + resolved "https://registry.yarnpkg.com/isemail/-/isemail-3.2.0.tgz#59310a021931a9fb06bbb51e155ce0b3f236832c" + integrity sha512-zKqkK+O+dGqevc93KNsbZ/TqTUFd46MwWjYOoMrjIMZ51eU7DtQG3Wmd9SQQT7i7RVnuTPEiYEWHU3MSbxC1Tg== + dependencies: + punycode "2.x.x" + +isexe@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" + integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= + +isobject@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89" + integrity sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk= + dependencies: + isarray "1.0.0" + +isobject@^3.0.0, isobject@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" + integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8= + +isomorphic-fetch@^2.1.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/isomorphic-fetch/-/isomorphic-fetch-2.2.1.tgz#611ae1acf14f5e81f729507472819fe9733558a9" + integrity sha1-YRrhrPFPXoH3KVB0coGf6XM1WKk= + dependencies: + node-fetch "^1.0.1" + whatwg-fetch ">=0.10.0" + +isstream@~0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" + integrity sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo= + +istanbul-api@^1.3.1: + version "1.3.7" + resolved "https://registry.yarnpkg.com/istanbul-api/-/istanbul-api-1.3.7.tgz#a86c770d2b03e11e3f778cd7aedd82d2722092aa" + integrity sha512-4/ApBnMVeEPG3EkSzcw25wDe4N66wxwn+KKn6b47vyek8Xb3NBAcg4xfuQbS7BqcZuTX4wxfD5lVagdggR3gyA== + dependencies: + async "^2.1.4" + fileset "^2.0.2" + istanbul-lib-coverage "^1.2.1" + istanbul-lib-hook "^1.2.2" + istanbul-lib-instrument "^1.10.2" + istanbul-lib-report "^1.1.5" + istanbul-lib-source-maps "^1.2.6" + istanbul-reports "^1.5.1" + js-yaml "^3.7.0" + mkdirp "^0.5.1" + once "^1.4.0" + +istanbul-lib-coverage@^1.2.0, istanbul-lib-coverage@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-1.2.1.tgz#ccf7edcd0a0bb9b8f729feeb0930470f9af664f0" + integrity sha512-PzITeunAgyGbtY1ibVIUiV679EFChHjoMNRibEIobvmrCRaIgwLxNucOSimtNWUhEib/oO7QY2imD75JVgCJWQ== + +istanbul-lib-hook@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/istanbul-lib-hook/-/istanbul-lib-hook-1.2.2.tgz#bc6bf07f12a641fbf1c85391d0daa8f0aea6bf86" + integrity sha512-/Jmq7Y1VeHnZEQ3TL10VHyb564mn6VrQXHchON9Jf/AEcmQ3ZIiyD1BVzNOKTZf/G3gE+kiGK6SmpF9y3qGPLw== + dependencies: + append-transform "^0.4.0" + +istanbul-lib-instrument@^1.10.1, istanbul-lib-instrument@^1.10.2: + version "1.10.2" + resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-1.10.2.tgz#1f55ed10ac3c47f2bdddd5307935126754d0a9ca" + integrity sha512-aWHxfxDqvh/ZlxR8BBaEPVSWDPUkGD63VjGQn3jcw8jCp7sHEMKcrj4xfJn/ABzdMEHiQNyvDQhqm5o8+SQg7A== + dependencies: + babel-generator "^6.18.0" + babel-template "^6.16.0" + babel-traverse "^6.18.0" + babel-types "^6.18.0" + babylon "^6.18.0" + istanbul-lib-coverage "^1.2.1" + semver "^5.3.0" + +istanbul-lib-report@^1.1.5: + version "1.1.5" + resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-1.1.5.tgz#f2a657fc6282f96170aaf281eb30a458f7f4170c" + integrity sha512-UsYfRMoi6QO/doUshYNqcKJqVmFe9w51GZz8BS3WB0lYxAllQYklka2wP9+dGZeHYaWIdcXUx8JGdbqaoXRXzw== + dependencies: + istanbul-lib-coverage "^1.2.1" + mkdirp "^0.5.1" + path-parse "^1.0.5" + supports-color "^3.1.2" + +istanbul-lib-source-maps@^1.2.4, istanbul-lib-source-maps@^1.2.6: + version "1.2.6" + resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-1.2.6.tgz#37b9ff661580f8fca11232752ee42e08c6675d8f" + integrity sha512-TtbsY5GIHgbMsMiRw35YBHGpZ1DVFEO19vxxeiDMYaeOFOCzfnYVxvl6pOUIZR4dtPhAGpSMup8OyF8ubsaqEg== + dependencies: + debug "^3.1.0" + istanbul-lib-coverage "^1.2.1" + mkdirp "^0.5.1" + rimraf "^2.6.1" + source-map "^0.5.3" + +istanbul-reports@^1.5.1: + version "1.5.1" + resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-1.5.1.tgz#97e4dbf3b515e8c484caea15d6524eebd3ff4e1a" + integrity sha512-+cfoZ0UXzWjhAdzosCPP3AN8vvef8XDkWtTfgaN+7L3YTpNYITnCaEkceo5SEYy644VkHka/P1FvkWvrG/rrJw== + dependencies: + handlebars "^4.0.3" + +isurl@^1.0.0-alpha5: + version "1.0.0" + resolved "https://registry.yarnpkg.com/isurl/-/isurl-1.0.0.tgz#b27f4f49f3cdaa3ea44a0a5b7f3462e6edc39d67" + integrity sha512-1P/yWsxPlDtn7QeRD+ULKQPaIaN6yF368GZ2vDfv0AL0NwpStafjWCDDdn0k8wgFMWpVAqG7oJhxHnlud42i9w== + dependencies: + has-to-string-tag-x "^1.2.0" + is-object "^1.0.1" + +jest-changed-files@^23.4.2: + version "23.4.2" + resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-23.4.2.tgz#1eed688370cd5eebafe4ae93d34bb3b64968fe83" + integrity sha512-EyNhTAUWEfwnK0Is/09LxoqNDOn7mU7S3EHskG52djOFS/z+IT0jT3h3Ql61+dklcG7bJJitIWEMB4Sp1piHmA== + dependencies: + throat "^4.0.0" + +jest-cli@^23.6.0: + version "23.6.0" + resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-23.6.0.tgz#61ab917744338f443ef2baa282ddffdd658a5da4" + integrity sha512-hgeD1zRUp1E1zsiyOXjEn4LzRLWdJBV//ukAHGlx6s5mfCNJTbhbHjgxnDUXA8fsKWN/HqFFF6X5XcCwC/IvYQ== + dependencies: + ansi-escapes "^3.0.0" + chalk "^2.0.1" + exit "^0.1.2" + glob "^7.1.2" + graceful-fs "^4.1.11" + import-local "^1.0.0" + is-ci "^1.0.10" + istanbul-api "^1.3.1" + istanbul-lib-coverage "^1.2.0" + istanbul-lib-instrument "^1.10.1" + istanbul-lib-source-maps "^1.2.4" + jest-changed-files "^23.4.2" + jest-config "^23.6.0" + jest-environment-jsdom "^23.4.0" + jest-get-type "^22.1.0" + jest-haste-map "^23.6.0" + jest-message-util "^23.4.0" + jest-regex-util "^23.3.0" + jest-resolve-dependencies "^23.6.0" + jest-runner "^23.6.0" + jest-runtime "^23.6.0" + jest-snapshot "^23.6.0" + jest-util "^23.4.0" + jest-validate "^23.6.0" + jest-watcher "^23.4.0" + jest-worker "^23.2.0" + micromatch "^2.3.11" + node-notifier "^5.2.1" + prompts "^0.1.9" + realpath-native "^1.0.0" + rimraf "^2.5.4" + slash "^1.0.0" + string-length "^2.0.0" + strip-ansi "^4.0.0" + which "^1.2.12" + yargs "^11.0.0" + +jest-config@^23.6.0: + version "23.6.0" + resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-23.6.0.tgz#f82546a90ade2d8c7026fbf6ac5207fc22f8eb1d" + integrity sha512-i8V7z9BeDXab1+VNo78WM0AtWpBRXJLnkT+lyT+Slx/cbP5sZJ0+NDuLcmBE5hXAoK0aUp7vI+MOxR+R4d8SRQ== + dependencies: + babel-core "^6.0.0" + babel-jest "^23.6.0" + chalk "^2.0.1" + glob "^7.1.1" + jest-environment-jsdom "^23.4.0" + jest-environment-node "^23.4.0" + jest-get-type "^22.1.0" + jest-jasmine2 "^23.6.0" + jest-regex-util "^23.3.0" + jest-resolve "^23.6.0" + jest-util "^23.4.0" + jest-validate "^23.6.0" + micromatch "^2.3.11" + pretty-format "^23.6.0" + +jest-diff@^23.6.0: + version "23.6.0" + resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-23.6.0.tgz#1500f3f16e850bb3d71233408089be099f610c7d" + integrity sha512-Gz9l5Ov+X3aL5L37IT+8hoCUsof1CVYBb2QEkOupK64XyRR3h+uRpYIm97K7sY8diFxowR8pIGEdyfMKTixo3g== + dependencies: + chalk "^2.0.1" + diff "^3.2.0" + jest-get-type "^22.1.0" + pretty-format "^23.6.0" + +jest-docblock@^23.2.0: + version "23.2.0" + resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-23.2.0.tgz#f085e1f18548d99fdd69b20207e6fd55d91383a7" + integrity sha1-8IXh8YVI2Z/dabICB+b9VdkTg6c= + dependencies: + detect-newline "^2.1.0" + +jest-each@^23.6.0: + version "23.6.0" + resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-23.6.0.tgz#ba0c3a82a8054387016139c733a05242d3d71575" + integrity sha512-x7V6M/WGJo6/kLoissORuvLIeAoyo2YqLOoCDkohgJ4XOXSqOtyvr8FbInlAWS77ojBsZrafbozWoKVRdtxFCg== + dependencies: + chalk "^2.0.1" + pretty-format "^23.6.0" + +jest-environment-jsdom@^23.4.0: + version "23.4.0" + resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-23.4.0.tgz#056a7952b3fea513ac62a140a2c368c79d9e6023" + integrity sha1-BWp5UrP+pROsYqFAosNox52eYCM= + dependencies: + jest-mock "^23.2.0" + jest-util "^23.4.0" + jsdom "^11.5.1" + +jest-environment-node@^23.4.0: + version "23.4.0" + resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-23.4.0.tgz#57e80ed0841dea303167cce8cd79521debafde10" + integrity sha1-V+gO0IQd6jAxZ8zozXlSHeuv3hA= + dependencies: + jest-mock "^23.2.0" + jest-util "^23.4.0" + +jest-get-type@^22.1.0: + version "22.4.3" + resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-22.4.3.tgz#e3a8504d8479342dd4420236b322869f18900ce4" + integrity sha512-/jsz0Y+V29w1chdXVygEKSz2nBoHoYqNShPe+QgxSNjAuP1i8+k4LbQNrfoliKej0P45sivkSCh7yiD6ubHS3w== + +jest-haste-map@^23.6.0: + version "23.6.0" + resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-23.6.0.tgz#2e3eb997814ca696d62afdb3f2529f5bbc935e16" + integrity sha512-uyNhMyl6dr6HaXGHp8VF7cK6KpC6G9z9LiMNsst+rJIZ8l7wY0tk8qwjPmEghczojZ2/ZhtEdIabZ0OQRJSGGg== + dependencies: + fb-watchman "^2.0.0" + graceful-fs "^4.1.11" + invariant "^2.2.4" + jest-docblock "^23.2.0" + jest-serializer "^23.0.1" + jest-worker "^23.2.0" + micromatch "^2.3.11" + sane "^2.0.0" + +jest-jasmine2@^23.6.0: + version "23.6.0" + resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-23.6.0.tgz#840e937f848a6c8638df24360ab869cc718592e0" + integrity sha512-pe2Ytgs1nyCs8IvsEJRiRTPC0eVYd8L/dXJGU08GFuBwZ4sYH/lmFDdOL3ZmvJR8QKqV9MFuwlsAi/EWkFUbsQ== + dependencies: + babel-traverse "^6.0.0" + chalk "^2.0.1" + co "^4.6.0" + expect "^23.6.0" + is-generator-fn "^1.0.0" + jest-diff "^23.6.0" + jest-each "^23.6.0" + jest-matcher-utils "^23.6.0" + jest-message-util "^23.4.0" + jest-snapshot "^23.6.0" + jest-util "^23.4.0" + pretty-format "^23.6.0" + +jest-leak-detector@^23.6.0: + version "23.6.0" + resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-23.6.0.tgz#e4230fd42cf381a1a1971237ad56897de7e171de" + integrity sha512-f/8zA04rsl1Nzj10HIyEsXvYlMpMPcy0QkQilVZDFOaPbv2ur71X5u2+C4ZQJGyV/xvVXtCCZ3wQ99IgQxftCg== + dependencies: + pretty-format "^23.6.0" + +jest-matcher-utils@^23.6.0: + version "23.6.0" + resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-23.6.0.tgz#726bcea0c5294261a7417afb6da3186b4b8cac80" + integrity sha512-rosyCHQfBcol4NsckTn01cdelzWLU9Cq7aaigDf8VwwpIRvWE/9zLgX2bON+FkEW69/0UuYslUe22SOdEf2nog== + dependencies: + chalk "^2.0.1" + jest-get-type "^22.1.0" + pretty-format "^23.6.0" + +jest-message-util@^23.4.0: + version "23.4.0" + resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-23.4.0.tgz#17610c50942349508d01a3d1e0bda2c079086a9f" + integrity sha1-F2EMUJQjSVCNAaPR4L2iwHkIap8= + dependencies: + "@babel/code-frame" "^7.0.0-beta.35" + chalk "^2.0.1" + micromatch "^2.3.11" + slash "^1.0.0" + stack-utils "^1.0.1" + +jest-mock@^23.2.0: + version "23.2.0" + resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-23.2.0.tgz#ad1c60f29e8719d47c26e1138098b6d18b261134" + integrity sha1-rRxg8p6HGdR8JuETgJi20YsmETQ= + +jest-pnp-resolver@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/jest-pnp-resolver/-/jest-pnp-resolver-1.0.1.tgz#f397cd71dbcd4a1947b2e435f6da8e9a347308fa" + integrity sha512-kzhvJQp+9k0a/hpvIIzOJgOwfOqmnohdrAMZW2EscH3kxR2VWD7EcPa10cio8EK9V7PcD75bhG1pFnO70zGwSQ== + +jest-regex-util@^23.3.0: + version "23.3.0" + resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-23.3.0.tgz#5f86729547c2785c4002ceaa8f849fe8ca471bc5" + integrity sha1-X4ZylUfCeFxAAs6qj4Sf6MpHG8U= + +jest-resolve-dependencies@^23.6.0: + version "23.6.0" + resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-23.6.0.tgz#b4526af24c8540d9a3fab102c15081cf509b723d" + integrity sha512-EkQWkFWjGKwRtRyIwRwI6rtPAEyPWlUC2MpzHissYnzJeHcyCn1Hc8j7Nn1xUVrS5C6W5+ZL37XTem4D4pLZdA== + dependencies: + jest-regex-util "^23.3.0" + jest-snapshot "^23.6.0" + +jest-resolve@23.6.0, jest-resolve@^23.6.0: + version "23.6.0" + resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-23.6.0.tgz#cf1d1a24ce7ee7b23d661c33ba2150f3aebfa0ae" + integrity sha512-XyoRxNtO7YGpQDmtQCmZjum1MljDqUCob7XlZ6jy9gsMugHdN2hY4+Acz9Qvjz2mSsOnPSH7skBmDYCHXVZqkA== + dependencies: + browser-resolve "^1.11.3" + chalk "^2.0.1" + realpath-native "^1.0.0" + +jest-runner@^23.6.0: + version "23.6.0" + resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-23.6.0.tgz#3894bd219ffc3f3cb94dc48a4170a2e6f23a5a38" + integrity sha512-kw0+uj710dzSJKU6ygri851CObtCD9cN8aNkg8jWJf4ewFyEa6kwmiH/r/M1Ec5IL/6VFa0wnAk6w+gzUtjJzA== + dependencies: + exit "^0.1.2" + graceful-fs "^4.1.11" + jest-config "^23.6.0" + jest-docblock "^23.2.0" + jest-haste-map "^23.6.0" + jest-jasmine2 "^23.6.0" + jest-leak-detector "^23.6.0" + jest-message-util "^23.4.0" + jest-runtime "^23.6.0" + jest-util "^23.4.0" + jest-worker "^23.2.0" + source-map-support "^0.5.6" + throat "^4.0.0" + +jest-runtime@^23.6.0: + version "23.6.0" + resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-23.6.0.tgz#059e58c8ab445917cd0e0d84ac2ba68de8f23082" + integrity sha512-ycnLTNPT2Gv+TRhnAYAQ0B3SryEXhhRj1kA6hBPSeZaNQkJ7GbZsxOLUkwg6YmvWGdX3BB3PYKFLDQCAE1zNOw== + dependencies: + babel-core "^6.0.0" + babel-plugin-istanbul "^4.1.6" + chalk "^2.0.1" + convert-source-map "^1.4.0" + exit "^0.1.2" + fast-json-stable-stringify "^2.0.0" + graceful-fs "^4.1.11" + jest-config "^23.6.0" + jest-haste-map "^23.6.0" + jest-message-util "^23.4.0" + jest-regex-util "^23.3.0" + jest-resolve "^23.6.0" + jest-snapshot "^23.6.0" + jest-util "^23.4.0" + jest-validate "^23.6.0" + micromatch "^2.3.11" + realpath-native "^1.0.0" + slash "^1.0.0" + strip-bom "3.0.0" + write-file-atomic "^2.1.0" + yargs "^11.0.0" + +jest-serializer@^23.0.1: + version "23.0.1" + resolved "https://registry.yarnpkg.com/jest-serializer/-/jest-serializer-23.0.1.tgz#a3776aeb311e90fe83fab9e533e85102bd164165" + integrity sha1-o3dq6zEekP6D+rnlM+hRAr0WQWU= + +jest-snapshot@^23.6.0: + version "23.6.0" + resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-23.6.0.tgz#f9c2625d1b18acda01ec2d2b826c0ce58a5aa17a" + integrity sha512-tM7/Bprftun6Cvj2Awh/ikS7zV3pVwjRYU2qNYS51VZHgaAMBs5l4o/69AiDHhQrj5+LA2Lq4VIvK7zYk/bswg== + dependencies: + babel-types "^6.0.0" + chalk "^2.0.1" + jest-diff "^23.6.0" + jest-matcher-utils "^23.6.0" + jest-message-util "^23.4.0" + jest-resolve "^23.6.0" + mkdirp "^0.5.1" + natural-compare "^1.4.0" + pretty-format "^23.6.0" + semver "^5.5.0" + +jest-util@^23.4.0: + version "23.4.0" + resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-23.4.0.tgz#4d063cb927baf0a23831ff61bec2cbbf49793561" + integrity sha1-TQY8uSe68KI4Mf9hvsLLv0l5NWE= + dependencies: + callsites "^2.0.0" + chalk "^2.0.1" + graceful-fs "^4.1.11" + is-ci "^1.0.10" + jest-message-util "^23.4.0" + mkdirp "^0.5.1" + slash "^1.0.0" + source-map "^0.6.0" + +jest-validate@^23.6.0: + version "23.6.0" + resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-23.6.0.tgz#36761f99d1ed33fcd425b4e4c5595d62b6597474" + integrity sha512-OFKapYxe72yz7agrDAWi8v2WL8GIfVqcbKRCLbRG9PAxtzF9b1SEDdTpytNDN12z2fJynoBwpMpvj2R39plI2A== + dependencies: + chalk "^2.0.1" + jest-get-type "^22.1.0" + leven "^2.1.0" + pretty-format "^23.6.0" + +jest-watcher@^23.4.0: + version "23.4.0" + resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-23.4.0.tgz#d2e28ce74f8dad6c6afc922b92cabef6ed05c91c" + integrity sha1-0uKM50+NrWxq/JIrksq+9u0FyRw= + dependencies: + ansi-escapes "^3.0.0" + chalk "^2.0.1" + string-length "^2.0.0" + +jest-worker@^23.2.0: + version "23.2.0" + resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-23.2.0.tgz#faf706a8da36fae60eb26957257fa7b5d8ea02b9" + integrity sha1-+vcGqNo2+uYOsmlXJX+ntdjqArk= + dependencies: + merge-stream "^1.0.1" + +jest@23.6.0: + version "23.6.0" + resolved "https://registry.yarnpkg.com/jest/-/jest-23.6.0.tgz#ad5835e923ebf6e19e7a1d7529a432edfee7813d" + integrity sha512-lWzcd+HSiqeuxyhG+EnZds6iO3Y3ZEnMrfZq/OTGvF/C+Z4fPMCdhWTGSAiO2Oym9rbEXfwddHhh6jqrTF3+Lw== + dependencies: + import-local "^1.0.0" + jest-cli "^23.6.0" + +joi@^11.1.1: + version "11.4.0" + resolved "https://registry.yarnpkg.com/joi/-/joi-11.4.0.tgz#f674897537b625e9ac3d0b7e1604c828ad913ccb" + integrity sha512-O7Uw+w/zEWgbL6OcHbyACKSj0PkQeUgmehdoXVSxt92QFCq4+1390Rwh5moI2K/OgC7D8RHRZqHZxT2husMJHA== + dependencies: + hoek "4.x.x" + isemail "3.x.x" + topo "2.x.x" + +js-levenshtein@^1.1.3: + version "1.1.4" + resolved "https://registry.yarnpkg.com/js-levenshtein/-/js-levenshtein-1.1.4.tgz#3a56e3cbf589ca0081eb22cd9ba0b1290a16d26e" + integrity sha512-PxfGzSs0ztShKrUYPIn5r0MtyAhYcCwmndozzpz8YObbPnD1jFxzlBGbRnX2mIu6Z13xN6+PTu05TQFnZFlzow== + +js-sha3@0.5.7, js-sha3@^0.5.7: + version "0.5.7" + resolved "https://registry.yarnpkg.com/js-sha3/-/js-sha3-0.5.7.tgz#0d4ffd8002d5333aabaf4a23eed2f6374c9f28e7" + integrity sha1-DU/9gALVMzqrr0oj7tL2N0yfKOc= + +js-sha3@^0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/js-sha3/-/js-sha3-0.6.1.tgz#5b89f77a7477679877f58c4a075240934b1f95c0" + integrity sha1-W4n3enR3Z5h39YxKB1JAk0sflcA= + +"js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" + integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== + +js-tokens@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b" + integrity sha1-mGbfOVECEw449/mWvOtlRDIJwls= + +js-yaml@^3.12.0, js-yaml@^3.7.0, js-yaml@^3.9.0: + version "3.12.0" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.12.0.tgz#eaed656ec8344f10f527c6bfa1b6e2244de167d1" + integrity sha512-PIt2cnwmPfL4hKNwqeiuz4bKfnzHTBv6HyVgjahA6mPLwPDzjDWrplJBMjHUFxku/N3FlmrbyPclad+I+4mJ3A== + dependencies: + argparse "^1.0.7" + esprima "^4.0.0" + +jsbn@~0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" + integrity sha1-peZUwuWi3rXyAdls77yoDA7y9RM= + +jsdom@>=11.0.0: + version "13.1.0" + resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-13.1.0.tgz#fa7356f0cc8111d0f1077cb7800d06f22f1d66c7" + integrity sha512-C2Kp0qNuopw0smXFaHeayvharqF3kkcNqlcIlSX71+3XrsOFwkEPLt/9f5JksMmaul2JZYIQuY+WTpqHpQQcLg== + dependencies: + abab "^2.0.0" + acorn "^6.0.4" + acorn-globals "^4.3.0" + array-equal "^1.0.0" + cssom "^0.3.4" + cssstyle "^1.1.1" + data-urls "^1.1.0" + domexception "^1.0.1" + escodegen "^1.11.0" + html-encoding-sniffer "^1.0.2" + nwsapi "^2.0.9" + parse5 "5.1.0" + pn "^1.1.0" + request "^2.88.0" + request-promise-native "^1.0.5" + saxes "^3.1.4" + symbol-tree "^3.2.2" + tough-cookie "^2.5.0" + w3c-hr-time "^1.0.1" + w3c-xmlserializer "^1.0.1" + webidl-conversions "^4.0.2" + whatwg-encoding "^1.0.5" + whatwg-mimetype "^2.3.0" + whatwg-url "^7.0.0" + ws "^6.1.2" + xml-name-validator "^3.0.0" + +jsdom@^11.5.1: + version "11.12.0" + resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-11.12.0.tgz#1a80d40ddd378a1de59656e9e6dc5a3ba8657bc8" + integrity sha512-y8Px43oyiBM13Zc1z780FrfNLJCXTL40EWlty/LXUtcjykRBNgLlCjWXpfSPBl2iv+N7koQN+dvqszHZgT/Fjw== + dependencies: + abab "^2.0.0" + acorn "^5.5.3" + acorn-globals "^4.1.0" + array-equal "^1.0.0" + cssom ">= 0.3.2 < 0.4.0" + cssstyle "^1.0.0" + data-urls "^1.0.0" + domexception "^1.0.1" + escodegen "^1.9.1" + html-encoding-sniffer "^1.0.2" + left-pad "^1.3.0" + nwsapi "^2.0.7" + parse5 "4.0.0" + pn "^1.1.0" + request "^2.87.0" + request-promise-native "^1.0.5" + sax "^1.2.4" + symbol-tree "^3.2.2" + tough-cookie "^2.3.4" + w3c-hr-time "^1.0.1" + webidl-conversions "^4.0.2" + whatwg-encoding "^1.0.3" + whatwg-mimetype "^2.1.0" + whatwg-url "^6.4.1" + ws "^5.2.0" + xml-name-validator "^3.0.0" + +jsesc@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-1.3.0.tgz#46c3fec8c1892b12b0833db9bc7622176dbab34b" + integrity sha1-RsP+yMGJKxKwgz25vHYiF226s0s= + +jsesc@^2.5.1: + version "2.5.2" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" + integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== + +jsesc@~0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" + integrity sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0= + +json-parse-better-errors@^1.0.1, json-parse-better-errors@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" + integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw== + +json-rpc-engine@^3.6.0: + version "3.8.0" + resolved "https://registry.yarnpkg.com/json-rpc-engine/-/json-rpc-engine-3.8.0.tgz#9d4ff447241792e1d0a232f6ef927302bb0c62a9" + integrity sha512-6QNcvm2gFuuK4TKU1uwfH0Qd/cOSb9c1lls0gbnIhciktIUQJwz6NQNAW4B1KiGPenv7IKu97V222Yo1bNhGuA== + dependencies: + async "^2.0.1" + babel-preset-env "^1.7.0" + babelify "^7.3.0" + json-rpc-error "^2.0.0" + promise-to-callback "^1.0.0" + safe-event-emitter "^1.0.1" + +json-rpc-error@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/json-rpc-error/-/json-rpc-error-2.0.0.tgz#a7af9c202838b5e905c7250e547f1aff77258a02" + integrity sha1-p6+cICg4tekFxyUOVH8a/3cligI= + dependencies: + inherits "^2.0.1" + +json-rpc-random-id@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/json-rpc-random-id/-/json-rpc-random-id-1.0.1.tgz#ba49d96aded1444dbb8da3d203748acbbcdec8c8" + integrity sha1-uknZat7RRE27jaPSA3SKy7zeyMg= + +json-schema-traverse@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" + integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== + +json-schema@0.2.3: + version "0.2.3" + resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13" + integrity sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM= + +json-stable-stringify-without-jsonify@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" + integrity sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE= + +json-stable-stringify@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz#9a759d39c5f2ff503fd5300646ed445f88c4f9af" + integrity sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8= + dependencies: + jsonify "~0.0.0" + +json-stringify-safe@~5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" + integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus= + +json3@^3.3.2: + version "3.3.2" + resolved "https://registry.yarnpkg.com/json3/-/json3-3.3.2.tgz#3c0434743df93e2f5c42aee7b19bcb483575f4e1" + integrity sha1-PAQ0dD35Pi9cQq7nsZvLSDV19OE= + +json5@^0.5.0, json5@^0.5.1: + version "0.5.1" + resolved "https://registry.yarnpkg.com/json5/-/json5-0.5.1.tgz#1eade7acc012034ad84e2396767ead9fa5495821" + integrity sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE= + +json5@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.1.tgz#779fb0018604fa854eacbf6252180d83543e3dbe" + integrity sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow== + dependencies: + minimist "^1.2.0" + +json5@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/json5/-/json5-2.1.0.tgz#e7a0c62c48285c628d20a10b85c89bb807c32850" + integrity sha512-8Mh9h6xViijj36g7Dxi+Y4S6hNGV96vcJZr/SrlHh1LR/pEn/8j/+qIBbs44YKl69Lrfctp4QD+AdWLTMqEZAQ== + dependencies: + minimist "^1.2.0" + +jsonfile@^2.1.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-2.4.0.tgz#3736a2b428b87bbda0cc83b53fa3d633a35c2ae8" + integrity sha1-NzaitCi4e72gzIO1P6PWM6NcKug= + optionalDependencies: + graceful-fs "^4.1.6" + +jsonfile@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb" + integrity sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss= + optionalDependencies: + graceful-fs "^4.1.6" + +jsonify@~0.0.0: + version "0.0.0" + resolved "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.0.tgz#2c74b6ee41d93ca51b7b5aaee8f503631d252a73" + integrity sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM= + +jsprim@^1.2.2: + version "1.4.1" + resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2" + integrity sha1-MT5mvB5cwG5Di8G3SZwuXFastqI= + dependencies: + assert-plus "1.0.0" + extsprintf "1.3.0" + json-schema "0.2.3" + verror "1.10.0" + +jss-camel-case@^6.0.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/jss-camel-case/-/jss-camel-case-6.1.0.tgz#ccb1ff8d6c701c02a1fed6fb6fb6b7896e11ce44" + integrity sha512-HPF2Q7wmNW1t79mCqSeU2vdd/vFFGpkazwvfHMOhPlMgXrJDzdj9viA2SaHk9ZbD5pfL63a8ylp4++irYbbzMQ== + dependencies: + hyphenate-style-name "^1.0.2" + +jss-default-unit@^8.0.2: + version "8.0.2" + resolved "https://registry.yarnpkg.com/jss-default-unit/-/jss-default-unit-8.0.2.tgz#cc1e889bae4c0b9419327b314ab1c8e2826890e6" + integrity sha512-WxNHrF/18CdoAGw2H0FqOEvJdREXVXLazn7PQYU7V6/BWkCV0GkmWsppNiExdw8dP4TU1ma1dT9zBNJ95feLmg== + +jss-global@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/jss-global/-/jss-global-3.0.0.tgz#e19e5c91ab2b96353c227e30aa2cbd938cdaafa2" + integrity sha512-wxYn7vL+TImyQYGAfdplg7yaxnPQ9RaXY/cIA8hawaVnmmWxDHzBK32u1y+RAvWboa3lW83ya3nVZ/C+jyjZ5Q== + +jss-nested@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/jss-nested/-/jss-nested-6.0.1.tgz#ef992b79d6e8f63d939c4397b9d99b5cbbe824ca" + integrity sha512-rn964TralHOZxoyEgeq3hXY8hyuCElnvQoVrQwKHVmu55VRDd6IqExAx9be5HgK0yN/+hQdgAXQl/GUrBbbSTA== + dependencies: + warning "^3.0.0" + +jss-props-sort@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/jss-props-sort/-/jss-props-sort-6.0.0.tgz#9105101a3b5071fab61e2d85ea74cc22e9b16323" + integrity sha512-E89UDcrphmI0LzmvYk25Hp4aE5ZBsXqMWlkFXS0EtPkunJkRr+WXdCNYbXbksIPnKlBenGB9OxzQY+mVc70S+g== + +jss-vendor-prefixer@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/jss-vendor-prefixer/-/jss-vendor-prefixer-7.0.0.tgz#0166729650015ef19d9f02437c73667231605c71" + integrity sha512-Agd+FKmvsI0HLcYXkvy8GYOw3AAASBUpsmIRvVQheps+JWaN892uFOInTr0DRydwaD91vSSUCU4NssschvF7MA== + dependencies: + css-vendor "^0.3.8" + +jss@^9.8.7: + version "9.8.7" + resolved "https://registry.yarnpkg.com/jss/-/jss-9.8.7.tgz#ed9763fc0f2f0260fc8260dac657af61e622ce05" + integrity sha512-awj3XRZYxbrmmrx9LUSj5pXSUfm12m8xzi/VKeqI1ZwWBtQ0kVPTs3vYs32t4rFw83CgFDukA8wKzOE9sMQnoQ== + dependencies: + is-in-browser "^1.1.3" + symbol-observable "^1.1.0" + warning "^3.0.0" + +jsx-ast-utils@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-2.0.1.tgz#e801b1b39985e20fffc87b40e3748080e2dcac7f" + integrity sha1-6AGxs5mF4g//yHtA43SAgOLcrH8= + dependencies: + array-includes "^3.0.3" + +keccak@^1.0.2: + version "1.4.0" + resolved "https://registry.yarnpkg.com/keccak/-/keccak-1.4.0.tgz#572f8a6dbee8e7b3aa421550f9e6408ca2186f80" + integrity sha512-eZVaCpblK5formjPjeTBik7TAg+pqnDrMHIffSvi9Lh7PQgM1+hSzakUeZFCk9DVVG0dacZJuaz2ntwlzZUIBw== + dependencies: + bindings "^1.2.1" + inherits "^2.0.3" + nan "^2.2.1" + safe-buffer "^5.1.0" + +keccakjs@^0.2.1: + version "0.2.3" + resolved "https://registry.yarnpkg.com/keccakjs/-/keccakjs-0.2.3.tgz#5e4e969ce39689a3861f445d7752ee3477f9fe72" + integrity sha512-BjLkNDcfaZ6l8HBG9tH0tpmDv3sS2mA7FNQxFHpCdzP3Gb2MVruXBSuoM66SnVxKJpAr5dKGdkHD+bDokt8fTg== + dependencies: + browserify-sha3 "^0.0.4" + sha3 "^1.2.2" + +killable@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/killable/-/killable-1.0.1.tgz#4c8ce441187a061c7474fb87ca08e2a638194892" + integrity sha512-LzqtLKlUwirEUyl/nicirVmNiPvYs7l5n8wOPP7fyJVpUPkvCnW/vuiXGpylGUlnPDnB7311rARzAt3Mhswpjg== + +kind-of@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-2.0.1.tgz#018ec7a4ce7e3a86cb9141be519d24c8faa981b5" + integrity sha1-AY7HpM5+OobLkUG+UZ0kyPqpgbU= + dependencies: + is-buffer "^1.0.2" + +kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0: + version "3.2.2" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" + integrity sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ= + dependencies: + is-buffer "^1.1.5" + +kind-of@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-4.0.0.tgz#20813df3d712928b207378691a45066fae72dd57" + integrity sha1-IIE989cSkosgc3hpGkUGb65y3Vc= + dependencies: + is-buffer "^1.1.5" + +kind-of@^5.0.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-5.1.0.tgz#729c91e2d857b7a419a1f9aa65685c4c33f5845d" + integrity sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw== + +kind-of@^6.0.0, kind-of@^6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.2.tgz#01146b36a6218e64e58f3a8d66de5d7fc6f6d051" + integrity sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA== + +kleur@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/kleur/-/kleur-2.0.2.tgz#b704f4944d95e255d038f0cb05fb8a602c55a300" + integrity sha512-77XF9iTllATmG9lSlIv0qdQ2BQ/h9t0bJllHlbvsQ0zUWfU7Yi0S8L5JXzPZgkefIiajLmBJJ4BsMJmqcf7oxQ== + +last-call-webpack-plugin@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/last-call-webpack-plugin/-/last-call-webpack-plugin-3.0.0.tgz#9742df0e10e3cf46e5c0381c2de90d3a7a2d7555" + integrity sha512-7KI2l2GIZa9p2spzPIVZBYyNKkN+e/SQPpnjlTiPhdbDW3F86tdKKELxKpzJ5sgU19wQWsACULZmpTPYHeWO5w== + dependencies: + lodash "^4.17.5" + webpack-sources "^1.1.0" + +lazy-cache@^0.2.3: + version "0.2.7" + resolved "https://registry.yarnpkg.com/lazy-cache/-/lazy-cache-0.2.7.tgz#7feddf2dcb6edb77d11ef1d117ab5ffdf0ab1b65" + integrity sha1-f+3fLctu23fRHvHRF6tf/fCrG2U= + +lazy-cache@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/lazy-cache/-/lazy-cache-1.0.4.tgz#a1d78fc3a50474cb80845d3b3b6e1da49a446e8e" + integrity sha1-odePw6UEdMuAhF07O24dpJpEbo4= + +lcid@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/lcid/-/lcid-1.0.0.tgz#308accafa0bc483a3867b4b6f2b9506251d1b835" + integrity sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU= + dependencies: + invert-kv "^1.0.0" + +lcid@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/lcid/-/lcid-2.0.0.tgz#6ef5d2df60e52f82eb228a4c373e8d1f397253cf" + integrity sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA== + dependencies: + invert-kv "^2.0.0" + +left-pad@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/left-pad/-/left-pad-1.3.0.tgz#5b8a3a7765dfe001261dde915589e782f8c94d1e" + integrity sha512-XI5MPzVNApjAyhQzphX8BkmKsKUxD4LdyK24iZeQGinBN9yTQT3bFlCBy/aVx2HrNcqQGsdot8ghrjyrvMCoEA== + +leven@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/leven/-/leven-2.1.0.tgz#c2e7a9f772094dee9d34202ae8acce4687875580" + integrity sha1-wuep93IJTe6dNCAq6KzORoeHVYA= + +levn@^0.3.0, levn@~0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" + integrity sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4= + dependencies: + prelude-ls "~1.1.2" + type-check "~0.3.2" + +load-json-file@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-1.1.0.tgz#956905708d58b4bab4c2261b04f59f31c99374c0" + integrity sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA= + dependencies: + graceful-fs "^4.1.2" + parse-json "^2.2.0" + pify "^2.0.0" + pinkie-promise "^2.0.0" + strip-bom "^2.0.0" + +load-json-file@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-2.0.0.tgz#7947e42149af80d696cbf797bcaabcfe1fe29ca8" + integrity sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg= + dependencies: + graceful-fs "^4.1.2" + parse-json "^2.2.0" + pify "^2.0.0" + strip-bom "^3.0.0" + +loader-fs-cache@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/loader-fs-cache/-/loader-fs-cache-1.0.1.tgz#56e0bf08bd9708b26a765b68509840c8dec9fdbc" + integrity sha1-VuC/CL2XCLJqdltoUJhAyN7J/bw= + dependencies: + find-cache-dir "^0.1.1" + mkdirp "0.5.1" + +loader-runner@^2.3.0: + version "2.3.1" + resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-2.3.1.tgz#026f12fe7c3115992896ac02ba022ba92971b979" + integrity sha512-By6ZFY7ETWOc9RFaAIb23IjJVcM4dvJC/N57nmdz9RSkMXvAXGI7SyVlAw3v8vjtDRlqThgVDVmTnr9fqMlxkw== + +loader-utils@1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.1.0.tgz#c98aef488bcceda2ffb5e2de646d6a754429f5cd" + integrity sha1-yYrvSIvM7aL/teLeZG1qdUQp9c0= + dependencies: + big.js "^3.1.3" + emojis-list "^2.0.0" + json5 "^0.5.0" + +loader-utils@^1.0.1, loader-utils@^1.0.2, loader-utils@^1.1.0: + version "1.2.3" + resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.2.3.tgz#1ff5dc6911c9f0a062531a4c04b609406108c2c7" + integrity sha512-fkpz8ejdnEMG3s37wGL07iSBDg99O9D5yflE9RGNH3hRdx9SOwYfnGYdZOUIZitN8E+E2vkq3MUMYMvPYl5ZZA== + dependencies: + big.js "^5.2.2" + emojis-list "^2.0.0" + json5 "^1.0.1" + +locate-path@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e" + integrity sha1-K1aLJl7slExtnA3pw9u7ygNUzY4= + dependencies: + p-locate "^2.0.0" + path-exists "^3.0.0" + +locate-path@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e" + integrity sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A== + dependencies: + p-locate "^3.0.0" + path-exists "^3.0.0" + +lodash._reinterpolate@~3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz#0ccf2d89166af03b3663c796538b75ac6e114d9d" + integrity sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0= + +lodash.camelcase@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz#b28aa6288a2b9fc651035c7711f65ab6190331a6" + integrity sha1-soqmKIorn8ZRA1x3EfZathkDMaY= + +lodash.debounce@^4.0.8: + version "4.0.8" + resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af" + integrity sha1-gteb/zCmfEAF/9XiUVMArZyk168= + +lodash.memoize@^4.1.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe" + integrity sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4= + +lodash.sortby@^4.7.0: + version "4.7.0" + resolved "https://registry.yarnpkg.com/lodash.sortby/-/lodash.sortby-4.7.0.tgz#edd14c824e2cc9c1e0b0a1b42bb5210516a42438" + integrity sha1-7dFMgk4sycHgsKG0K7UhBRakJDg= + +lodash.tail@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/lodash.tail/-/lodash.tail-4.1.1.tgz#d2333a36d9e7717c8ad2f7cacafec7c32b444664" + integrity sha1-0jM6NtnncXyK0vfKyv7HwytERmQ= + +lodash.template@^4.2.4, lodash.template@^4.4.0: + version "4.4.0" + resolved "https://registry.yarnpkg.com/lodash.template/-/lodash.template-4.4.0.tgz#e73a0385c8355591746e020b99679c690e68fba0" + integrity sha1-5zoDhcg1VZF0bgILmWecaQ5o+6A= + dependencies: + lodash._reinterpolate "~3.0.0" + lodash.templatesettings "^4.0.0" + +lodash.templatesettings@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/lodash.templatesettings/-/lodash.templatesettings-4.1.0.tgz#2b4d4e95ba440d915ff08bc899e4553666713316" + integrity sha1-K01OlbpEDZFf8IvImeRVNmZxMxY= + dependencies: + lodash._reinterpolate "~3.0.0" + +lodash.uniq@^4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" + integrity sha1-0CJTc662Uq3BvILklFM5qEJ1R3M= + +"lodash@>=3.5 <5", lodash@^4.13.1, lodash@^4.17.10, lodash@^4.17.11, lodash@^4.17.4, lodash@^4.17.5: + version "4.17.11" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.11.tgz#b39ea6229ef607ecd89e2c8df12536891cac9b8d" + integrity sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg== + +loglevel@^1.4.1: + version "1.6.1" + resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.6.1.tgz#e0fc95133b6ef276cdc8887cdaf24aa6f156f8fa" + integrity sha1-4PyVEztu8nbNyIh82vJKpvFW+Po= + +loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.2.0, loose-envify@^1.3.1, loose-envify@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" + integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== + dependencies: + js-tokens "^3.0.0 || ^4.0.0" + +lower-case@^1.1.1: + version "1.1.4" + resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-1.1.4.tgz#9a2cabd1b9e8e0ae993a4bf7d5875c39c42e8eac" + integrity sha1-miyr0bno4K6ZOkv31YdcOcQujqw= + +lowercase-keys@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-1.0.1.tgz#6f9e30b47084d971a7c820ff15a6c5167b74c26f" + integrity sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA== + +lru-cache@^4.0.1, lru-cache@^4.1.1: + version "4.1.5" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.5.tgz#8bbe50ea85bed59bc9e33dcab8235ee9bcf443cd" + integrity sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g== + dependencies: + pseudomap "^1.0.2" + yallist "^2.1.2" + +lru-cache@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920" + integrity sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w== + dependencies: + yallist "^3.0.2" + +make-dir@^1.0.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-1.3.0.tgz#79c1033b80515bd6d24ec9933e860ca75ee27f0c" + integrity sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ== + dependencies: + pify "^3.0.0" + +makeerror@1.0.x: + version "1.0.11" + resolved "https://registry.yarnpkg.com/makeerror/-/makeerror-1.0.11.tgz#e01a5c9109f2af79660e4e8b9587790184f5a96c" + integrity sha1-4BpckQnyr3lmDk6LlYd5AYT1qWw= + dependencies: + tmpl "1.0.x" + +mamacro@^0.0.3: + version "0.0.3" + resolved "https://registry.yarnpkg.com/mamacro/-/mamacro-0.0.3.tgz#ad2c9576197c9f1abf308d0787865bd975a3f3e4" + integrity sha512-qMEwh+UujcQ+kbz3T6V+wAmO2U8veoq2w+3wY8MquqwVA3jChfwY+Tk52GZKDfACEPjuZ7r2oJLejwpt8jtwTA== + +map-age-cleaner@^0.1.1: + version "0.1.3" + resolved "https://registry.yarnpkg.com/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz#7d583a7306434c055fe474b0f45078e6e1b4b92a" + integrity sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w== + dependencies: + p-defer "^1.0.0" + +map-cache@^0.2.2: + version "0.2.2" + resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" + integrity sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8= + +map-visit@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f" + integrity sha1-7Nyo8TFE5mDxtb1B8S80edmN+48= + dependencies: + object-visit "^1.0.0" + +math-random@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/math-random/-/math-random-1.0.1.tgz#8b3aac588b8a66e4975e3cdea67f7bb329601fac" + integrity sha1-izqsWIuKZuSXXjzepn97sylgH6w= + +md5.js@^1.3.4: + version "1.3.5" + resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.5.tgz#b5d07b8e3216e3e27cd728d72f70d1e6a342005f" + integrity sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg== + dependencies: + hash-base "^3.0.0" + inherits "^2.0.1" + safe-buffer "^5.1.2" + +mdn-data@~1.1.0: + version "1.1.4" + resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-1.1.4.tgz#50b5d4ffc4575276573c4eedb8780812a8419f01" + integrity sha512-FSYbp3lyKjyj3E7fMl6rYvUdX0FBXaluGqlFoYESWQlyUTq8R+wp0rkFxoYFqZlHCvsUXGjyJmLQSnXToYhOSA== + +media-typer@0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" + integrity sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g= + +mem@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/mem/-/mem-1.1.0.tgz#5edd52b485ca1d900fe64895505399a0dfa45f76" + integrity sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y= + dependencies: + mimic-fn "^1.0.0" + +mem@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/mem/-/mem-4.0.0.tgz#6437690d9471678f6cc83659c00cbafcd6b0cdaf" + integrity sha512-WQxG/5xYc3tMbYLXoXPm81ET2WDULiU5FxbuIoNbJqLOOI8zehXFdZuiUEgfdrU2mVB1pxBZUGlYORSrpuJreA== + dependencies: + map-age-cleaner "^0.1.1" + mimic-fn "^1.0.0" + p-is-promise "^1.1.0" + +memory-fs@^0.4.0, memory-fs@~0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.4.1.tgz#3a9a20b8462523e447cfbc7e8bb80ed667bfc552" + integrity sha1-OpoguEYlI+RHz7x+i7gO1me/xVI= + dependencies: + errno "^0.1.3" + readable-stream "^2.0.1" + +merge-deep@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/merge-deep/-/merge-deep-3.0.2.tgz#f39fa100a4f1bd34ff29f7d2bf4508fbb8d83ad2" + integrity sha512-T7qC8kg4Zoti1cFd8Cr0M+qaZfOwjlPDEdZIIPPB2JZctjaPM4fX+i7HOId69tAti2fvO6X5ldfYUONDODsrkA== + dependencies: + arr-union "^3.1.0" + clone-deep "^0.2.4" + kind-of "^3.0.2" + +merge-descriptors@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" + integrity sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E= + +merge-stream@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-1.0.1.tgz#4041202d508a342ba00174008df0c251b8c135e1" + integrity sha1-QEEgLVCKNCugAXQAjfDCUbjBNeE= + dependencies: + readable-stream "^2.0.1" + +merge2@^1.2.3: + version "1.2.3" + resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.2.3.tgz#7ee99dbd69bb6481689253f018488a1b902b0ed5" + integrity sha512-gdUU1Fwj5ep4kplwcmftruWofEFt6lfpkkr3h860CXbAB9c3hGb55EOL2ali0Td5oebvW0E1+3Sr+Ur7XfKpRA== + +merge@^1.2.0: + version "1.2.1" + resolved "https://registry.yarnpkg.com/merge/-/merge-1.2.1.tgz#38bebf80c3220a8a487b6fcfb3941bb11720c145" + integrity sha512-VjFo4P5Whtj4vsLzsYBu5ayHhoHJ0UqNm7ibvShmbmoz7tGi0vXaoJbGdB+GmDMLUdg8DpQXEIeVDAe8MaABvQ== + +methods@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" + integrity sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4= + +micromatch@^2.3.11: + version "2.3.11" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-2.3.11.tgz#86677c97d1720b363431d04d0d15293bd38c1565" + integrity sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU= + dependencies: + arr-diff "^2.0.0" + array-unique "^0.2.1" + braces "^1.8.2" + expand-brackets "^0.1.4" + extglob "^0.3.1" + filename-regex "^2.0.0" + is-extglob "^1.0.0" + is-glob "^2.0.1" + kind-of "^3.0.2" + normalize-path "^2.0.1" + object.omit "^2.0.0" + parse-glob "^3.0.4" + regex-cache "^0.4.2" + +micromatch@^3.1.10, micromatch@^3.1.4, micromatch@^3.1.8, micromatch@^3.1.9: + version "3.1.10" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23" + integrity sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg== + dependencies: + arr-diff "^4.0.0" + array-unique "^0.3.2" + braces "^2.3.1" + define-property "^2.0.2" + extend-shallow "^3.0.2" + extglob "^2.0.4" + fragment-cache "^0.2.1" + kind-of "^6.0.2" + nanomatch "^1.2.9" + object.pick "^1.3.0" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.2" + +miller-rabin@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/miller-rabin/-/miller-rabin-4.0.1.tgz#f080351c865b0dc562a8462966daa53543c78a4d" + integrity sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA== + dependencies: + bn.js "^4.0.0" + brorand "^1.0.1" + +"mime-db@>= 1.36.0 < 2", mime-db@~1.37.0: + version "1.37.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.37.0.tgz#0b6a0ce6fdbe9576e25f1f2d2fde8830dc0ad0d8" + integrity sha512-R3C4db6bgQhlIhPU48fUtdVmKnflq+hRdad7IyKhtFj06VPNVdk2RhiYL3UjQIlso8L+YxAtFkobT0VK+S/ybg== + +mime-types@^2.1.12, mime-types@^2.1.16, mime-types@~2.1.17, mime-types@~2.1.18, mime-types@~2.1.19: + version "2.1.21" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.21.tgz#28995aa1ecb770742fe6ae7e58f9181c744b3f96" + integrity sha512-3iL6DbwpyLzjR3xHSFNFeb9Nz/M8WDkX33t1GFQnFOllWk8pOrh/LSrB5OXlnlW5P9LH73X6loW/eogc+F5lJg== + dependencies: + mime-db "~1.37.0" + +mime@1.4.1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/mime/-/mime-1.4.1.tgz#121f9ebc49e3766f311a76e1fa1c8003c4b03aa6" + integrity sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ== + +mime@^2.0.3, mime@^2.3.1: + version "2.4.0" + resolved "https://registry.yarnpkg.com/mime/-/mime-2.4.0.tgz#e051fd881358585f3279df333fe694da0bcffdd6" + integrity sha512-ikBcWwyqXQSHKtciCcctu9YfPbFYZ4+gbHEmE0Q8jzcTYQg5dHCr3g2wwAZjPoJfQVXZq6KXAjpXOTf5/cjT7w== + +mimic-fn@^1.0.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.2.0.tgz#820c86a39334640e99516928bd03fca88057d022" + integrity sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ== + +mimic-response@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-1.0.1.tgz#4923538878eef42063cb8a3e3b0798781487ab1b" + integrity sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ== + +min-document@^2.19.0: + version "2.19.0" + resolved "https://registry.yarnpkg.com/min-document/-/min-document-2.19.0.tgz#7bd282e3f5842ed295bb748cdd9f1ffa2c824685" + integrity sha1-e9KC4/WELtKVu3SM3Z8f+iyCRoU= + dependencies: + dom-walk "^0.1.0" + +mini-css-extract-plugin@0.4.3: + version "0.4.3" + resolved "https://registry.yarnpkg.com/mini-css-extract-plugin/-/mini-css-extract-plugin-0.4.3.tgz#98d60fcc5d228c3e36a9bd15a1d6816d6580beb8" + integrity sha512-Mxs0nxzF1kxPv4TRi2NimewgXlJqh0rGE30vviCU2WHrpbta6wklnUV9dr9FUtoAHmB3p3LeXEC+ZjgHvB0Dzg== + dependencies: + loader-utils "^1.1.0" + schema-utils "^1.0.0" + webpack-sources "^1.1.0" + +minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" + integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A== + +minimalistic-crypto-utils@^1.0.0, minimalistic-crypto-utils@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" + integrity sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo= + +minimatch@3.0.4, minimatch@^3.0.3, minimatch@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" + integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== + dependencies: + brace-expansion "^1.1.7" + +minimist@0.0.8: + version "0.0.8" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" + integrity sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0= + +minimist@^1.1.1, minimist@^1.2.0, minimist@~1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" + integrity sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ= + +minimist@~0.0.1: + version "0.0.10" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.10.tgz#de3f98543dbf96082be48ad1a0c7cda836301dcf" + integrity sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8= + +minipass@^2.2.1, minipass@^2.3.4: + version "2.3.5" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-2.3.5.tgz#cacebe492022497f656b0f0f51e2682a9ed2d848" + integrity sha512-Gi1W4k059gyRbyVUZQ4mEqLm0YIUiGYfvxhF6SIlk3ui1WVxMTGfGdQ2SInh3PDrRTVvPKgULkpJtT4RH10+VA== + dependencies: + safe-buffer "^5.1.2" + yallist "^3.0.0" + +minizlib@^1.1.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-1.2.1.tgz#dd27ea6136243c7c880684e8672bb3a45fd9b614" + integrity sha512-7+4oTUOWKg7AuL3vloEWekXY2/D20cevzsrNT2kGWm+39J9hGTCBv8VI5Pm5lXZ/o3/mdR4f8rflAPhnQb8mPA== + dependencies: + minipass "^2.2.1" + +mississippi@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/mississippi/-/mississippi-2.0.0.tgz#3442a508fafc28500486feea99409676e4ee5a6f" + integrity sha512-zHo8v+otD1J10j/tC+VNoGK9keCuByhKovAvdn74dmxJl9+mWHnx6EMsDN4lgRoMI/eYo2nchAxniIbUPb5onw== + dependencies: + concat-stream "^1.5.0" + duplexify "^3.4.2" + end-of-stream "^1.1.0" + flush-write-stream "^1.0.0" + from2 "^2.1.0" + parallel-transform "^1.1.0" + pump "^2.0.1" + pumpify "^1.3.3" + stream-each "^1.1.0" + through2 "^2.0.0" + +mississippi@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/mississippi/-/mississippi-3.0.0.tgz#ea0a3291f97e0b5e8776b363d5f0a12d94c67022" + integrity sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA== + dependencies: + concat-stream "^1.5.0" + duplexify "^3.4.2" + end-of-stream "^1.1.0" + flush-write-stream "^1.0.0" + from2 "^2.1.0" + parallel-transform "^1.1.0" + pump "^3.0.0" + pumpify "^1.3.3" + stream-each "^1.1.0" + through2 "^2.0.0" + +mixin-deep@^1.2.0: + version "1.3.1" + resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.1.tgz#a49e7268dce1a0d9698e45326c5626df3543d0fe" + integrity sha512-8ZItLHeEgaqEvd5lYBXfm4EZSFCX29Jb9K+lAHhDKzReKBQKj3R+7NOF6tjqYi9t4oI8VUfaWITJQm86wnXGNQ== + dependencies: + for-in "^1.0.2" + is-extendable "^1.0.1" + +mixin-object@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/mixin-object/-/mixin-object-2.0.1.tgz#4fb949441dab182540f1fe035ba60e1947a5e57e" + integrity sha1-T7lJRB2rGCVA8f4DW6YOGUel5X4= + dependencies: + for-in "^0.1.3" + is-extendable "^0.1.1" + +mkdirp-promise@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/mkdirp-promise/-/mkdirp-promise-5.0.1.tgz#e9b8f68e552c68a9c1713b84883f7a1dd039b8a1" + integrity sha1-6bj2jlUsaKnBcTuEiD96HdA5uKE= + dependencies: + mkdirp "*" + +mkdirp@*, mkdirp@0.5.1, mkdirp@0.5.x, "mkdirp@>=0.5 0", mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@~0.5.0, mkdirp@~0.5.1: + version "0.5.1" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" + integrity sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM= + dependencies: + minimist "0.0.8" + +mock-fs@^4.1.0: + version "4.7.0" + resolved "https://registry.yarnpkg.com/mock-fs/-/mock-fs-4.7.0.tgz#9f17e219cacb8094f4010e0a8c38589e2b33c299" + integrity sha512-WlQNtUlzMRpvLHf8dqeUmNqfdPjGY29KrJF50Ldb4AcL+vQeR8QH3wQcFMgrhTwb1gHjZn9xggho+84tBskLgA== + +mout@^0.11.0: + version "0.11.1" + resolved "https://registry.yarnpkg.com/mout/-/mout-0.11.1.tgz#ba3611df5f0e5b1ffbfd01166b8f02d1f5fa2b99" + integrity sha1-ujYR318OWx/7/QEWa48C0fX6K5k= + +move-concurrently@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/move-concurrently/-/move-concurrently-1.0.1.tgz#be2c005fda32e0b29af1f05d7c4b33214c701f92" + integrity sha1-viwAX9oy4LKa8fBdfEszIUxwH5I= + dependencies: + aproba "^1.1.1" + copy-concurrently "^1.0.0" + fs-write-stream-atomic "^1.0.8" + mkdirp "^0.5.1" + rimraf "^2.5.4" + run-queue "^1.0.3" + +ms@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" + integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= + +ms@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a" + integrity sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg== + +multicast-dns-service-types@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz#899f11d9686e5e05cb91b35d5f0e63b773cfc901" + integrity sha1-iZ8R2WhuXgXLkbNdXw5jt3PPyQE= + +multicast-dns@^6.0.1: + version "6.2.3" + resolved "https://registry.yarnpkg.com/multicast-dns/-/multicast-dns-6.2.3.tgz#a0ec7bd9055c4282f790c3c82f4e28db3b31b229" + integrity sha512-ji6J5enbMyGRHIAkAOu3WdV8nggqviKCEKtXcOqfphZZtQrmHKycfynJ2V7eVPUA4NhJ6V7Wf4TmGbTwKE9B6g== + dependencies: + dns-packet "^1.3.1" + thunky "^1.0.2" + +mute-stream@0.0.7: + version "0.0.7" + resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab" + integrity sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s= + +mz@^2.6.0: + version "2.7.0" + resolved "https://registry.yarnpkg.com/mz/-/mz-2.7.0.tgz#95008057a56cafadc2bc63dde7f9ff6955948e32" + integrity sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q== + dependencies: + any-promise "^1.0.0" + object-assign "^4.0.1" + thenify-all "^1.0.0" + +nan@2.10.0: + version "2.10.0" + resolved "https://registry.yarnpkg.com/nan/-/nan-2.10.0.tgz#96d0cd610ebd58d4b4de9cc0c6828cda99c7548f" + integrity sha512-bAdJv7fBLhWC+/Bls0Oza+mvTaNQtP+1RyhhhvD95pgUJz6XM5IzgmxOkItJ9tkoCiplvAnXI1tNmmUD/eScyA== + +nan@^2.0.8, nan@^2.2.1, nan@^2.3.3, nan@^2.9.2: + version "2.12.1" + resolved "https://registry.yarnpkg.com/nan/-/nan-2.12.1.tgz#7b1aa193e9aa86057e3c7bbd0ac448e770925552" + integrity sha512-JY7V6lRkStKcKTvHO5NVSQRv+RV+FIL5pvDoLiAtSL9pKlC5x9PKQcZDsq7m4FO4d57mkhC6Z+QhAh3Jdk5JFw== + +nano-json-stream-parser@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/nano-json-stream-parser/-/nano-json-stream-parser-0.1.2.tgz#0cc8f6d0e2b622b479c40d499c46d64b755c6f5f" + integrity sha1-DMj20OK2IrR5xA1JnEbWS3Vcb18= + +nanomatch@^1.2.9: + version "1.2.13" + resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119" + integrity sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA== + dependencies: + arr-diff "^4.0.0" + array-unique "^0.3.2" + define-property "^2.0.2" + extend-shallow "^3.0.2" + fragment-cache "^0.2.1" + is-windows "^1.0.2" + kind-of "^6.0.2" + object.pick "^1.3.0" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.1" + +natural-compare@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" + integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc= + +needle@^2.2.1: + version "2.2.4" + resolved "https://registry.yarnpkg.com/needle/-/needle-2.2.4.tgz#51931bff82533b1928b7d1d69e01f1b00ffd2a4e" + integrity sha512-HyoqEb4wr/rsoaIDfTH2aVL9nWtQqba2/HvMv+++m8u0dz808MaagKILxtfeSN7QU7nvbQ79zk3vYOJp9zsNEA== + dependencies: + debug "^2.1.2" + iconv-lite "^0.4.4" + sax "^1.2.4" + +negotiator@0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.1.tgz#2b327184e8992101177b28563fb5e7102acd0ca9" + integrity sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk= + +neo-async@^2.5.0: + version "2.6.0" + resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.0.tgz#b9d15e4d71c6762908654b5183ed38b753340835" + integrity sha512-MFh0d/Wa7vkKO3Y3LlacqAEeHK0mckVqzDieUKTT+KGxi+zIpeVsFxymkIiRpbpDziHc290Xr9A1O4Om7otoRA== + +nice-try@^1.0.4: + version "1.0.5" + resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" + integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ== + +no-case@^2.2.0: + version "2.3.2" + resolved "https://registry.yarnpkg.com/no-case/-/no-case-2.3.2.tgz#60b813396be39b3f1288a4c1ed5d1e7d28b464ac" + integrity sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ== + dependencies: + lower-case "^1.1.1" + +node-fetch@^1.0.1: + version "1.7.3" + resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-1.7.3.tgz#980f6f72d85211a5347c6b2bc18c5b84c3eb47ef" + integrity sha512-NhZ4CsKx7cYm2vSrBAr2PvFOe6sWDf0UYLRqA6svUYg7+/TSfVAu49jYC4BvQ4Sms9SZgdqGBgroqfDhJdTyKQ== + dependencies: + encoding "^0.1.11" + is-stream "^1.0.1" + +node-forge@0.7.5: + version "0.7.5" + resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-0.7.5.tgz#6c152c345ce11c52f465c2abd957e8639cd674df" + integrity sha512-MmbQJ2MTESTjt3Gi/3yG1wGpIMhUfcIypUCGtTizFR9IiccFwxSpfp0vtIZlkFclEqERemxfnSdZEMR9VqqEFQ== + +node-int64@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b" + integrity sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs= + +node-libs-browser@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/node-libs-browser/-/node-libs-browser-2.1.0.tgz#5f94263d404f6e44767d726901fff05478d600df" + integrity sha512-5AzFzdoIMb89hBGMZglEegffzgRg+ZFoUmisQ8HI4j1KDdpx13J0taNp2y9xPbur6W61gepGDDotGBVQ7mfUCg== + dependencies: + assert "^1.1.1" + browserify-zlib "^0.2.0" + buffer "^4.3.0" + console-browserify "^1.1.0" + constants-browserify "^1.0.0" + crypto-browserify "^3.11.0" + domain-browser "^1.1.1" + events "^1.0.0" + https-browserify "^1.0.0" + os-browserify "^0.3.0" + path-browserify "0.0.0" + process "^0.11.10" + punycode "^1.2.4" + querystring-es3 "^0.2.0" + readable-stream "^2.3.3" + stream-browserify "^2.0.1" + stream-http "^2.7.2" + string_decoder "^1.0.0" + timers-browserify "^2.0.4" + tty-browserify "0.0.0" + url "^0.11.0" + util "^0.10.3" + vm-browserify "0.0.4" + +node-notifier@^5.2.1: + version "5.3.0" + resolved "https://registry.yarnpkg.com/node-notifier/-/node-notifier-5.3.0.tgz#c77a4a7b84038733d5fb351aafd8a268bfe19a01" + integrity sha512-AhENzCSGZnZJgBARsUjnQ7DnZbzyP+HxlVXuD0xqAnvL8q+OqtSX7lGg9e8nHzwXkMMXNdVeqq4E2M3EUAqX6Q== + dependencies: + growly "^1.3.0" + semver "^5.5.0" + shellwords "^0.1.1" + which "^1.3.0" + +node-pre-gyp@^0.10.0: + version "0.10.3" + resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.10.3.tgz#3070040716afdc778747b61b6887bf78880b80fc" + integrity sha512-d1xFs+C/IPS8Id0qPTZ4bUT8wWryfR/OzzAFxweG+uLN85oPzyo2Iw6bVlLQ/JOdgNonXLCoRyqDzDWq4iw72A== + dependencies: + detect-libc "^1.0.2" + mkdirp "^0.5.1" + needle "^2.2.1" + nopt "^4.0.1" + npm-packlist "^1.1.6" + npmlog "^4.0.2" + rc "^1.2.7" + rimraf "^2.6.1" + semver "^5.3.0" + tar "^4" + +node-releases@^1.0.0-alpha.11, node-releases@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.3.tgz#aad9ce0dcb98129c753f772c0aa01360fb90fbd2" + integrity sha512-6VrvH7z6jqqNFY200kdB6HdzkgM96Oaj9v3dqGfgp6mF+cHmU4wyQKZ2/WPDRVoR0Jz9KqbamaBN0ZhdUaysUQ== + dependencies: + semver "^5.3.0" + +nopt@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/nopt/-/nopt-4.0.1.tgz#d0d4685afd5415193c8c7505602d0d17cd64474d" + integrity sha1-0NRoWv1UFRk8jHUFYC0NF81kR00= + dependencies: + abbrev "1" + osenv "^0.1.4" + +normalize-package-data@^2.3.2: + version "2.4.0" + resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.4.0.tgz#12f95a307d58352075a04907b84ac8be98ac012f" + integrity sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw== + dependencies: + hosted-git-info "^2.1.4" + is-builtin-module "^1.0.0" + semver "2 || 3 || 4 || 5" + validate-npm-package-license "^3.0.1" + +normalize-path@^2.0.1, normalize-path@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" + integrity sha1-GrKLVW4Zg2Oowab35vogE3/mrtk= + dependencies: + remove-trailing-separator "^1.0.1" + +normalize-range@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/normalize-range/-/normalize-range-0.1.2.tgz#2d10c06bdfd312ea9777695a4d28439456b75942" + integrity sha1-LRDAa9/TEuqXd2laTShDlFa3WUI= + +normalize-scroll-left@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/normalize-scroll-left/-/normalize-scroll-left-0.1.2.tgz#6b79691ba79eb5fb107fa5edfbdc06b55caee2aa" + integrity sha512-F9YMRls0zCF6BFIE2YnXDRpHPpfd91nOIaNdDgrx5YMoPLo8Wqj+6jNXHQsYBavJeXP4ww8HCt0xQAKc5qk2Fg== + +normalize-url@^3.0.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-3.3.0.tgz#b2e1c4dc4f7c6d57743df733a4f5978d18650559" + integrity sha512-U+JJi7duF1o+u2pynbp2zXDW2/PADgC30f0GsHZtRh+HOcXHnw137TrNlyxxRvWW5fjKd3bcLHPxofWuCjaeZg== + +npm-bundled@^1.0.1: + version "1.0.5" + resolved "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-1.0.5.tgz#3c1732b7ba936b3a10325aef616467c0ccbcc979" + integrity sha512-m/e6jgWu8/v5niCUKQi9qQl8QdeEduFA96xHDDzFGqly0OOjI7c+60KM/2sppfnUU9JJagf+zs+yGhqSOFj71g== + +npm-packlist@^1.1.6: + version "1.1.12" + resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-1.1.12.tgz#22bde2ebc12e72ca482abd67afc51eb49377243a" + integrity sha512-WJKFOVMeAlsU/pjXuqVdzU0WfgtIBCupkEVwn+1Y0ERAbUfWw8R4GjgVbaKnUjRoD2FoQbHOCbOyT5Mbs9Lw4g== + dependencies: + ignore-walk "^3.0.1" + npm-bundled "^1.0.1" + +npm-run-path@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f" + integrity sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8= + dependencies: + path-key "^2.0.0" + +npmlog@^4.0.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b" + integrity sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg== + dependencies: + are-we-there-yet "~1.1.2" + console-control-strings "~1.1.0" + gauge "~2.7.3" + set-blocking "~2.0.0" + +nth-check@^1.0.2, nth-check@~1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-1.0.2.tgz#b2bd295c37e3dd58a3bf0700376663ba4d9cf05c" + integrity sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg== + dependencies: + boolbase "~1.0.0" + +num2fraction@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/num2fraction/-/num2fraction-1.2.2.tgz#6f682b6a027a4e9ddfa4564cd2589d1d4e669ede" + integrity sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4= + +number-is-nan@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" + integrity sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0= + +number-to-bn@1.7.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/number-to-bn/-/number-to-bn-1.7.0.tgz#bb3623592f7e5f9e0030b1977bd41a0c53fe1ea0" + integrity sha1-uzYjWS9+X54AMLGXe9QaDFP+HqA= + dependencies: + bn.js "4.11.6" + strip-hex-prefix "1.0.0" + +nwsapi@^2.0.7, nwsapi@^2.0.9: + version "2.0.9" + resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.0.9.tgz#77ac0cdfdcad52b6a1151a84e73254edc33ed016" + integrity sha512-nlWFSCTYQcHk/6A9FFnfhKc14c3aFhfdNBXgo8Qgi9QTBu/qg3Ww+Uiz9wMzXd1T8GFxPc2QIHB6Qtf2XFryFQ== + +oauth-sign@~0.9.0: + version "0.9.0" + resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455" + integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ== + +object-assign@4.1.1, object-assign@^4, object-assign@^4.0.0, object-assign@^4.0.1, object-assign@^4.1.0, object-assign@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" + integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= + +object-copy@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/object-copy/-/object-copy-0.1.0.tgz#7e7d858b781bd7c991a41ba975ed3812754e998c" + integrity sha1-fn2Fi3gb18mRpBupde04EnVOmYw= + dependencies: + copy-descriptor "^0.1.0" + define-property "^0.2.5" + kind-of "^3.0.3" + +object-hash@^1.1.4: + version "1.3.1" + resolved "https://registry.yarnpkg.com/object-hash/-/object-hash-1.3.1.tgz#fde452098a951cb145f039bb7d455449ddc126df" + integrity sha512-OSuu/pU4ENM9kmREg0BdNrUDIl1heYa4mBZacJc+vVWz4GtAwu7jO8s4AIt2aGRUTqxykpWzI3Oqnsm13tTMDA== + +object-inspect@~1.6.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.6.0.tgz#c70b6cbf72f274aab4c34c0c82f5167bf82cf15b" + integrity sha512-GJzfBZ6DgDAmnuaM3104jR4s1Myxr3Y3zfIyN4z3UdqN69oSRacNK8UhnobDdC+7J2AHCjGwxQubNJfE70SXXQ== + +object-keys@^1.0.11, object-keys@^1.0.12: + version "1.0.12" + resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.0.12.tgz#09c53855377575310cca62f55bb334abff7b3ed2" + integrity sha512-FTMyFUm2wBcGHnH2eXmz7tC6IwlqQZ6mVZ+6dm6vZ4IQIHjs6FdNsQBuKGPuUUUY6NfJw2PshC08Tn6LzLDOag== + +object-visit@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/object-visit/-/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb" + integrity sha1-95xEk68MU3e1n+OdOV5BBC3QRbs= + dependencies: + isobject "^3.0.0" + +object.assign@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.0.tgz#968bf1100d7956bb3ca086f006f846b3bc4008da" + integrity sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w== + dependencies: + define-properties "^1.1.2" + function-bind "^1.1.1" + has-symbols "^1.0.0" + object-keys "^1.0.11" + +object.getownpropertydescriptors@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.0.3.tgz#8758c846f5b407adab0f236e0986f14b051caa16" + integrity sha1-h1jIRvW0B62rDyNuCYbxSwUcqhY= + dependencies: + define-properties "^1.1.2" + es-abstract "^1.5.1" + +object.omit@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/object.omit/-/object.omit-2.0.1.tgz#1a9c744829f39dbb858c76ca3579ae2a54ebd1fa" + integrity sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo= + dependencies: + for-own "^0.1.4" + is-extendable "^0.1.1" + +object.pick@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747" + integrity sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c= + dependencies: + isobject "^3.0.1" + +object.values@^1.0.4: + version "1.1.0" + resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.0.tgz#bf6810ef5da3e5325790eaaa2be213ea84624da9" + integrity sha512-8mf0nKLAoFX6VlNVdhGj31SVYpaNFtUnuoOXWyFEstsWRgU837AK+JYM0iAxwkSzGRbwn8cbFmgbyxj1j4VbXg== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.12.0" + function-bind "^1.1.1" + has "^1.0.3" + +oboe@2.1.3: + version "2.1.3" + resolved "https://registry.yarnpkg.com/oboe/-/oboe-2.1.3.tgz#2b4865dbd46be81225713f4e9bfe4bcf4f680a4f" + integrity sha1-K0hl29Rr6BIlcT9Om/5Lz09oCk8= + dependencies: + http-https "^1.0.0" + +obuf@^1.0.0, obuf@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/obuf/-/obuf-1.1.2.tgz#09bea3343d41859ebd446292d11c9d4db619084e" + integrity sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg== + +on-finished@~2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947" + integrity sha1-IPEzZIGwg811M3mSoWlxqi2QaUc= + dependencies: + ee-first "1.1.1" + +on-headers@~1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/on-headers/-/on-headers-1.0.1.tgz#928f5d0f470d49342651ea6794b0857c100693f7" + integrity sha1-ko9dD0cNSTQmUepnlLCFfBAGk/c= + +once@^1.3.0, once@^1.3.1, once@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" + integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= + dependencies: + wrappy "1" + +onetime@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/onetime/-/onetime-2.0.1.tgz#067428230fd67443b2794b22bba528b6867962d4" + integrity sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ= + dependencies: + mimic-fn "^1.0.0" + +opn@5.4.0, opn@^5.1.0: + version "5.4.0" + resolved "https://registry.yarnpkg.com/opn/-/opn-5.4.0.tgz#cb545e7aab78562beb11aa3bfabc7042e1761035" + integrity sha512-YF9MNdVy/0qvJvDtunAOzFw9iasOQHpVthTCvGzxt61Il64AYSGdK+rYwld7NAfk9qJ7dt+hymBNSc9LNYS+Sw== + dependencies: + is-wsl "^1.1.0" + +optimist@^0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/optimist/-/optimist-0.6.1.tgz#da3ea74686fa21a19a111c326e90eb15a0196686" + integrity sha1-2j6nRob6IaGaERwybpDrFaAZZoY= + dependencies: + minimist "~0.0.1" + wordwrap "~0.0.2" + +optimize-css-assets-webpack-plugin@5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/optimize-css-assets-webpack-plugin/-/optimize-css-assets-webpack-plugin-5.0.1.tgz#9eb500711d35165b45e7fd60ba2df40cb3eb9159" + integrity sha512-Rqm6sSjWtx9FchdP0uzTQDc7GXDKnwVEGoSxjezPkzMewx7gEWE9IMUYKmigTRC4U3RaNSwYVnUDLuIdtTpm0A== + dependencies: + cssnano "^4.1.0" + last-call-webpack-plugin "^3.0.0" + +optionator@^0.8.1, optionator@^0.8.2: + version "0.8.2" + resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.2.tgz#364c5e409d3f4d6301d6c0b4c05bba50180aeb64" + integrity sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q= + dependencies: + deep-is "~0.1.3" + fast-levenshtein "~2.0.4" + levn "~0.3.0" + prelude-ls "~1.1.2" + type-check "~0.3.2" + wordwrap "~1.0.0" + +original@>=0.0.5, original@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/original/-/original-1.0.2.tgz#e442a61cffe1c5fd20a65f3261c26663b303f25f" + integrity sha512-hyBVl6iqqUOJ8FqRe+l/gS8H+kKYjrEndd5Pm1MfBtsEKA038HkkdbAl/72EAXGyonD/PFsvmVG+EvcIpliMBg== + dependencies: + url-parse "^1.4.3" + +os-browserify@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.3.0.tgz#854373c7f5c2315914fc9bfc6bd8238fdda1ec27" + integrity sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc= + +os-homedir@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" + integrity sha1-/7xJiDNuDoM94MFox+8VISGqf7M= + +os-locale@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-2.1.0.tgz#42bc2900a6b5b8bd17376c8e882b65afccf24bf2" + integrity sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA== + dependencies: + execa "^0.7.0" + lcid "^1.0.0" + mem "^1.1.0" + +os-locale@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-3.1.0.tgz#a802a6ee17f24c10483ab9935719cef4ed16bf1a" + integrity sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q== + dependencies: + execa "^1.0.0" + lcid "^2.0.0" + mem "^4.0.0" + +os-tmpdir@^1.0.0, os-tmpdir@^1.0.1, os-tmpdir@~1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" + integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ= + +osenv@^0.1.4: + version "0.1.5" + resolved "https://registry.yarnpkg.com/osenv/-/osenv-0.1.5.tgz#85cdfafaeb28e8677f416e287592b5f3f49ea410" + integrity sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g== + dependencies: + os-homedir "^1.0.0" + os-tmpdir "^1.0.0" + +p-cancelable@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-0.3.0.tgz#b9e123800bcebb7ac13a479be195b507b98d30fa" + integrity sha512-RVbZPLso8+jFeq1MfNvgXtCRED2raz/dKpacfTNxsx6pLEpEomM7gah6VeHSYV3+vo0OAi4MkArtQcWWXuQoyw== + +p-defer@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-defer/-/p-defer-1.0.0.tgz#9f6eb182f6c9aa8cd743004a7d4f96b196b0fb0c" + integrity sha1-n26xgvbJqozXQwBKfU+WsZaw+ww= + +p-finally@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" + integrity sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4= + +p-is-promise@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/p-is-promise/-/p-is-promise-1.1.0.tgz#9c9456989e9f6588017b0434d56097675c3da05e" + integrity sha1-nJRWmJ6fZYgBewQ01WCXZ1w9oF4= + +p-limit@^1.1.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.3.0.tgz#b86bd5f0c25690911c7590fcbfc2010d54b3ccb8" + integrity sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q== + dependencies: + p-try "^1.0.0" + +p-limit@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.1.0.tgz#1d5a0d20fb12707c758a655f6bbc4386b5930d68" + integrity sha512-NhURkNcrVB+8hNfLuysU8enY5xn2KXphsHBaC2YmRNTZRc7RWusw6apSpdEj3jo4CMb6W9nrF6tTnsJsJeyu6g== + dependencies: + p-try "^2.0.0" + +p-locate@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43" + integrity sha1-IKAQOyIqcMj9OcwuWAaA893l7EM= + dependencies: + p-limit "^1.1.0" + +p-locate@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-3.0.0.tgz#322d69a05c0264b25997d9f40cd8a891ab0064a4" + integrity sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ== + dependencies: + p-limit "^2.0.0" + +p-map@^1.1.1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/p-map/-/p-map-1.2.0.tgz#e4e94f311eabbc8633a1e79908165fca26241b6b" + integrity sha512-r6zKACMNhjPJMTl8KcFH4li//gkrXWfbD6feV8l6doRHlzljFWGJ2AP6iKaCJXyZmAUMOPtvbW7EXkbWO/pLEA== + +p-timeout@^1.1.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/p-timeout/-/p-timeout-1.2.1.tgz#5eb3b353b7fce99f101a1038880bb054ebbea386" + integrity sha1-XrOzU7f86Z8QGhA4iAuwVOu+o4Y= + dependencies: + p-finally "^1.0.0" + +p-try@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3" + integrity sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M= + +p-try@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.0.0.tgz#85080bb87c64688fa47996fe8f7dfbe8211760b1" + integrity sha512-hMp0onDKIajHfIkdRk3P4CdCmErkYAxxDtP3Wx/4nZ3aGlau2VKh3mZpcuFkH27WQkL/3WBCPOktzA9ZOAnMQQ== + +pako@~1.0.5: + version "1.0.7" + resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.7.tgz#2473439021b57f1516c82f58be7275ad8ef1bb27" + integrity sha512-3HNK5tW4x8o5mO8RuHZp3Ydw9icZXx0RANAOMzlMzx7LVXhMJ4mo3MOBpzyd7r/+RUu8BmndP47LXT+vzjtWcQ== + +parallel-transform@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/parallel-transform/-/parallel-transform-1.1.0.tgz#d410f065b05da23081fcd10f28854c29bda33b06" + integrity sha1-1BDwZbBdojCB/NEPKIVMKb2jOwY= + dependencies: + cyclist "~0.2.2" + inherits "^2.0.3" + readable-stream "^2.1.5" + +param-case@2.1.x: + version "2.1.1" + resolved "https://registry.yarnpkg.com/param-case/-/param-case-2.1.1.tgz#df94fd8cf6531ecf75e6bef9a0858fbc72be2247" + integrity sha1-35T9jPZTHs915r75oIWPvHK+Ikc= + dependencies: + no-case "^2.2.0" + +parse-asn1@^5.0.0: + version "5.1.1" + resolved "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.1.1.tgz#f6bf293818332bd0dab54efb16087724745e6ca8" + integrity sha512-KPx7flKXg775zZpnp9SxJlz00gTd4BmJ2yJufSc44gMCRrRQ7NSzAcSJQfifuOLgW6bEi+ftrALtsgALeB2Adw== + dependencies: + asn1.js "^4.0.0" + browserify-aes "^1.0.0" + create-hash "^1.1.0" + evp_bytestokey "^1.0.0" + pbkdf2 "^3.0.3" + +parse-glob@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/parse-glob/-/parse-glob-3.0.4.tgz#b2c376cfb11f35513badd173ef0bb6e3a388391c" + integrity sha1-ssN2z7EfNVE7rdFz7wu246OIORw= + dependencies: + glob-base "^0.3.0" + is-dotfile "^1.0.0" + is-extglob "^1.0.0" + is-glob "^2.0.0" + +parse-headers@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/parse-headers/-/parse-headers-2.0.1.tgz#6ae83a7aa25a9d9b700acc28698cd1f1ed7e9536" + integrity sha1-aug6eqJanZtwCswoaYzR8e1+lTY= + dependencies: + for-each "^0.3.2" + trim "0.0.1" + +parse-json@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9" + integrity sha1-9ID0BDTvgHQfhGkJn43qGPVaTck= + dependencies: + error-ex "^1.2.0" + +parse-json@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-4.0.0.tgz#be35f5425be1f7f6c747184f98a788cb99477ee0" + integrity sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA= + dependencies: + error-ex "^1.3.1" + json-parse-better-errors "^1.0.1" + +parse-passwd@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/parse-passwd/-/parse-passwd-1.0.0.tgz#6d5b934a456993b23d37f40a382d6f1666a8e5c6" + integrity sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY= + +parse5@4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/parse5/-/parse5-4.0.0.tgz#6d78656e3da8d78b4ec0b906f7c08ef1dfe3f608" + integrity sha512-VrZ7eOd3T1Fk4XWNXMgiGBK/z0MG48BWG2uQNU4I72fkQuKUTZpl+u9k+CxEG0twMVzSmXEEz12z5Fnw1jIQFA== + +parse5@5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/parse5/-/parse5-5.1.0.tgz#c59341c9723f414c452975564c7c00a68d58acd2" + integrity sha512-fxNG2sQjHvlVAYmzBZS9YlDp6PTSSDwa98vkD4QgVDDCAo84z5X1t5XyJQ62ImdLXx5NdIIfihey6xpum9/gRQ== + +parseurl@~1.3.2: + version "1.3.2" + resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.2.tgz#fc289d4ed8993119460c156253262cdc8de65bf3" + integrity sha1-/CidTtiZMRlGDBViUyYs3I3mW/M= + +pascalcase@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14" + integrity sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ= + +path-browserify@0.0.0: + version "0.0.0" + resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-0.0.0.tgz#a0b870729aae214005b7d5032ec2cbbb0fb4451a" + integrity sha1-oLhwcpquIUAFt9UDLsLLuw+0RRo= + +path-dirname@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/path-dirname/-/path-dirname-1.0.2.tgz#cc33d24d525e099a5388c0336c6e32b9160609e0" + integrity sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA= + +path-exists@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-2.1.0.tgz#0feb6c64f0fc518d9a754dd5efb62c7022761f4b" + integrity sha1-D+tsZPD8UY2adU3V77YscCJ2H0s= + dependencies: + pinkie-promise "^2.0.0" + +path-exists@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" + integrity sha1-zg6+ql94yxiSXqfYENe1mwEP1RU= + +path-is-absolute@^1.0.0, path-is-absolute@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" + integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= + +path-is-inside@^1.0.1, path-is-inside@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53" + integrity sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM= + +path-key@^2.0.0, path-key@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" + integrity sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A= + +path-parse@^1.0.5, path-parse@^1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c" + integrity sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw== + +path-to-regexp@0.1.7: + version "0.1.7" + resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" + integrity sha1-32BBeABfUi8V60SQ5yR6G/qmf4w= + +path-to-regexp@^1.7.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-1.7.0.tgz#59fde0f435badacba103a84e9d3bc64e96b9937d" + integrity sha1-Wf3g9DW62suhA6hOnTvGTpa5k30= + dependencies: + isarray "0.0.1" + +path-type@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-1.1.0.tgz#59c44f7ee491da704da415da5a4070ba4f8fe441" + integrity sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE= + dependencies: + graceful-fs "^4.1.2" + pify "^2.0.0" + pinkie-promise "^2.0.0" + +path-type@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-2.0.0.tgz#f012ccb8415b7096fc2daa1054c3d72389594c73" + integrity sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM= + dependencies: + pify "^2.0.0" + +path-type@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-3.0.0.tgz#cef31dc8e0a1a3bb0d105c0cd97cf3bf47f4e36f" + integrity sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg== + dependencies: + pify "^3.0.0" + +pbkdf2@^3.0.3: + version "3.0.17" + resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.0.17.tgz#976c206530617b14ebb32114239f7b09336e93a6" + integrity sha512-U/il5MsrZp7mGg3mSQfn742na2T+1/vHDCG5/iTI3X9MKUuYUZVLQhyRsg06mCgDBTd57TxzgZt7P+fYfjRLtA== + dependencies: + create-hash "^1.1.2" + create-hmac "^1.1.4" + ripemd160 "^2.0.1" + safe-buffer "^5.0.1" + sha.js "^2.4.8" + +pend@~1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/pend/-/pend-1.2.0.tgz#7a57eb550a6783f9115331fcf4663d5c8e007a50" + integrity sha1-elfrVQpng/kRUzH89GY9XI4AelA= + +performance-now@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" + integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns= + +pify@^2.0.0, pify@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" + integrity sha1-7RQaasBDqEnqWISY59yosVMw6Qw= + +pify@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176" + integrity sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY= + +pinkie-promise@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa" + integrity sha1-ITXW36ejWMBprJsXh3YogihFD/o= + dependencies: + pinkie "^2.0.0" + +pinkie@^2.0.0: + version "2.0.4" + resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870" + integrity sha1-clVrgM+g1IqXToDnckjoDtT3+HA= + +pkg-dir@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-1.0.0.tgz#7a4b508a8d5bb2d629d447056ff4e9c9314cf3d4" + integrity sha1-ektQio1bstYp1EcFb/TpyTFM89Q= + dependencies: + find-up "^1.0.0" + +pkg-dir@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-2.0.0.tgz#f6d5d1109e19d63edf428e0bd57e12777615334b" + integrity sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s= + dependencies: + find-up "^2.1.0" + +pkg-dir@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-3.0.0.tgz#2749020f239ed990881b1f71210d51eb6523bea3" + integrity sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw== + dependencies: + find-up "^3.0.0" + +pkg-up@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/pkg-up/-/pkg-up-2.0.0.tgz#c819ac728059a461cab1c3889a2be3c49a004d7f" + integrity sha1-yBmscoBZpGHKscOImivjxJoATX8= + dependencies: + find-up "^2.1.0" + +pluralize@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/pluralize/-/pluralize-7.0.0.tgz#298b89df8b93b0221dbf421ad2b1b1ea23fc6777" + integrity sha512-ARhBOdzS3e41FbkW/XWrTEtukqqLoK5+Z/4UeDaLuSW+39JPeFgs4gCGqsrJHVZX0fUrx//4OF0K1CUGwlIFow== + +pn@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/pn/-/pn-1.1.0.tgz#e2f4cef0e219f463c179ab37463e4e1ecdccbafb" + integrity sha512-2qHaIQr2VLRFoxe2nASzsV6ef4yOOH+Fi9FBOVH6cqeSgUnoyySPZkxzLuzd+RYOQTRpROA0ztTMqxROKSb/nA== + +pnp-webpack-plugin@1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/pnp-webpack-plugin/-/pnp-webpack-plugin-1.1.0.tgz#947a96d1db94bb5a1fc014d83b581e428699ac8c" + integrity sha512-CPCdcFxx7fEcDMWTDjXe2Wypt4JuMt4q5Q2UrpTcyBBkLiCIyPEh/mCGmUWIcNkKGyXwQ9Y2wVhlKm6ketiBNQ== + +popper.js@^1.14.1: + version "1.15.0" + resolved "https://registry.yarnpkg.com/popper.js/-/popper.js-1.15.0.tgz#5560b99bbad7647e9faa475c6b8056621f5a4ff2" + integrity sha512-w010cY1oCUmI+9KwwlWki+r5jxKfTFDVoadl7MSrIujHU5MJ5OR6HTDj6Xo8aoR/QsA56x8jKjA59qGH4ELtrA== + +portfinder@^1.0.9: + version "1.0.20" + resolved "https://registry.yarnpkg.com/portfinder/-/portfinder-1.0.20.tgz#bea68632e54b2e13ab7b0c4775e9b41bf270e44a" + integrity sha512-Yxe4mTyDzTd59PZJY4ojZR8F+E5e97iq2ZOHPz3HDgSvYC5siNad2tLooQ5y5QHyQhc3xVqvyk/eNA3wuoa7Sw== + dependencies: + async "^1.5.2" + debug "^2.2.0" + mkdirp "0.5.x" + +posix-character-classes@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" + integrity sha1-AerA/jta9xoqbAL+q7jB/vfgDqs= + +postcss-attribute-case-insensitive@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/postcss-attribute-case-insensitive/-/postcss-attribute-case-insensitive-4.0.0.tgz#807b6a797ad8bf1c821b2d51cf641e9dd3837624" + integrity sha512-K/zqdg0/UgUgC8qR0lDuxYzmowPpnvrrNC5YuoqzhHMubR9AuhsPlpVu3jjkLHgDAzR+ohD/m7//iGnN9WxbzQ== + dependencies: + postcss "^7.0.2" + postcss-selector-parser "^5.0.0-rc.3" + +postcss-calc@^7.0.0: + version "7.0.1" + resolved "https://registry.yarnpkg.com/postcss-calc/-/postcss-calc-7.0.1.tgz#36d77bab023b0ecbb9789d84dcb23c4941145436" + integrity sha512-oXqx0m6tb4N3JGdmeMSc/i91KppbYsFZKdH0xMOqK8V1rJlzrKlTdokz8ozUXLVejydRN6u2IddxpcijRj2FqQ== + dependencies: + css-unit-converter "^1.1.1" + postcss "^7.0.5" + postcss-selector-parser "^5.0.0-rc.4" + postcss-value-parser "^3.3.1" + +postcss-color-functional-notation@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/postcss-color-functional-notation/-/postcss-color-functional-notation-2.0.1.tgz#5efd37a88fbabeb00a2966d1e53d98ced93f74e0" + integrity sha512-ZBARCypjEDofW4P6IdPVTLhDNXPRn8T2s1zHbZidW6rPaaZvcnCS2soYFIQJrMZSxiePJ2XIYTlcb2ztr/eT2g== + dependencies: + postcss "^7.0.2" + postcss-values-parser "^2.0.0" + +postcss-color-gray@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/postcss-color-gray/-/postcss-color-gray-5.0.0.tgz#532a31eb909f8da898ceffe296fdc1f864be8547" + integrity sha512-q6BuRnAGKM/ZRpfDascZlIZPjvwsRye7UDNalqVz3s7GDxMtqPY6+Q871liNxsonUw8oC61OG+PSaysYpl1bnw== + dependencies: + "@csstools/convert-colors" "^1.4.0" + postcss "^7.0.5" + postcss-values-parser "^2.0.0" + +postcss-color-hex-alpha@^5.0.2: + version "5.0.2" + resolved "https://registry.yarnpkg.com/postcss-color-hex-alpha/-/postcss-color-hex-alpha-5.0.2.tgz#e9b1886bb038daed33f6394168c210b40bb4fdb6" + integrity sha512-8bIOzQMGdZVifoBQUJdw+yIY00omBd2EwkJXepQo9cjp1UOHHHoeRDeSzTP6vakEpaRc6GAIOfvcQR7jBYaG5Q== + dependencies: + postcss "^7.0.2" + postcss-values-parser "^2.0.0" + +postcss-color-mod-function@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/postcss-color-mod-function/-/postcss-color-mod-function-3.0.3.tgz#816ba145ac11cc3cb6baa905a75a49f903e4d31d" + integrity sha512-YP4VG+xufxaVtzV6ZmhEtc+/aTXH3d0JLpnYfxqTvwZPbJhWqp8bSY3nfNzNRFLgB4XSaBA82OE4VjOOKpCdVQ== + dependencies: + "@csstools/convert-colors" "^1.4.0" + postcss "^7.0.2" + postcss-values-parser "^2.0.0" + +postcss-color-rebeccapurple@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-color-rebeccapurple/-/postcss-color-rebeccapurple-4.0.1.tgz#c7a89be872bb74e45b1e3022bfe5748823e6de77" + integrity sha512-aAe3OhkS6qJXBbqzvZth2Au4V3KieR5sRQ4ptb2b2O8wgvB3SJBsdG+jsn2BZbbwekDG8nTfcCNKcSfe/lEy8g== + dependencies: + postcss "^7.0.2" + postcss-values-parser "^2.0.0" + +postcss-colormin@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-colormin/-/postcss-colormin-4.0.2.tgz#93cd1fa11280008696887db1a528048b18e7ed99" + integrity sha512-1QJc2coIehnVFsz0otges8kQLsryi4lo19WD+U5xCWvXd0uw/Z+KKYnbiNDCnO9GP+PvErPHCG0jNvWTngk9Rw== + dependencies: + browserslist "^4.0.0" + color "^3.0.0" + has "^1.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-convert-values@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-convert-values/-/postcss-convert-values-4.0.1.tgz#ca3813ed4da0f812f9d43703584e449ebe189a7f" + integrity sha512-Kisdo1y77KUC0Jmn0OXU/COOJbzM8cImvw1ZFsBgBgMgb1iL23Zs/LXRe3r+EZqM3vGYKdQ2YJVQ5VkJI+zEJQ== + dependencies: + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-custom-media@^7.0.7: + version "7.0.7" + resolved "https://registry.yarnpkg.com/postcss-custom-media/-/postcss-custom-media-7.0.7.tgz#bbc698ed3089ded61aad0f5bfb1fb48bf6969e73" + integrity sha512-bWPCdZKdH60wKOTG4HKEgxWnZVjAIVNOJDvi3lkuTa90xo/K0YHa2ZnlKLC5e2qF8qCcMQXt0yzQITBp8d0OFA== + dependencies: + postcss "^7.0.5" + +postcss-custom-properties@^8.0.9: + version "8.0.9" + resolved "https://registry.yarnpkg.com/postcss-custom-properties/-/postcss-custom-properties-8.0.9.tgz#8943870528a6eae4c8e8d285b6ccc9fd1f97e69c" + integrity sha512-/Lbn5GP2JkKhgUO2elMs4NnbUJcvHX4AaF5nuJDaNkd2chYW1KA5qtOGGgdkBEWcXtKSQfHXzT7C6grEVyb13w== + dependencies: + postcss "^7.0.5" + postcss-values-parser "^2.0.0" + +postcss-custom-selectors@^5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/postcss-custom-selectors/-/postcss-custom-selectors-5.1.2.tgz#64858c6eb2ecff2fb41d0b28c9dd7b3db4de7fba" + integrity sha512-DSGDhqinCqXqlS4R7KGxL1OSycd1lydugJ1ky4iRXPHdBRiozyMHrdu0H3o7qNOCiZwySZTUI5MV0T8QhCLu+w== + dependencies: + postcss "^7.0.2" + postcss-selector-parser "^5.0.0-rc.3" + +postcss-dir-pseudo-class@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/postcss-dir-pseudo-class/-/postcss-dir-pseudo-class-5.0.0.tgz#6e3a4177d0edb3abcc85fdb6fbb1c26dabaeaba2" + integrity sha512-3pm4oq8HYWMZePJY+5ANriPs3P07q+LW6FAdTlkFH2XqDdP4HeeJYMOzn0HYLhRSjBO3fhiqSwwU9xEULSrPgw== + dependencies: + postcss "^7.0.2" + postcss-selector-parser "^5.0.0-rc.3" + +postcss-discard-comments@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-discard-comments/-/postcss-discard-comments-4.0.1.tgz#30697735b0c476852a7a11050eb84387a67ef55d" + integrity sha512-Ay+rZu1Sz6g8IdzRjUgG2NafSNpp2MSMOQUb+9kkzzzP+kh07fP0yNbhtFejURnyVXSX3FYy2nVNW1QTnNjgBQ== + dependencies: + postcss "^7.0.0" + +postcss-discard-duplicates@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-discard-duplicates/-/postcss-discard-duplicates-4.0.2.tgz#3fe133cd3c82282e550fc9b239176a9207b784eb" + integrity sha512-ZNQfR1gPNAiXZhgENFfEglF93pciw0WxMkJeVmw8eF+JZBbMD7jp6C67GqJAXVZP2BWbOztKfbsdmMp/k8c6oQ== + dependencies: + postcss "^7.0.0" + +postcss-discard-empty@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-discard-empty/-/postcss-discard-empty-4.0.1.tgz#c8c951e9f73ed9428019458444a02ad90bb9f765" + integrity sha512-B9miTzbznhDjTfjvipfHoqbWKwd0Mj+/fL5s1QOz06wufguil+Xheo4XpOnc4NqKYBCNqqEzgPv2aPBIJLox0w== + dependencies: + postcss "^7.0.0" + +postcss-discard-overridden@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-discard-overridden/-/postcss-discard-overridden-4.0.1.tgz#652aef8a96726f029f5e3e00146ee7a4e755ff57" + integrity sha512-IYY2bEDD7g1XM1IDEsUT4//iEYCxAmP5oDSFMVU/JVvT7gh+l4fmjciLqGgwjdWpQIdb0Che2VX00QObS5+cTg== + dependencies: + postcss "^7.0.0" + +postcss-double-position-gradients@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/postcss-double-position-gradients/-/postcss-double-position-gradients-1.0.0.tgz#fc927d52fddc896cb3a2812ebc5df147e110522e" + integrity sha512-G+nV8EnQq25fOI8CH/B6krEohGWnF5+3A6H/+JEpOncu5dCnkS1QQ6+ct3Jkaepw1NGVqqOZH6lqrm244mCftA== + dependencies: + postcss "^7.0.5" + postcss-values-parser "^2.0.0" + +postcss-env-function@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/postcss-env-function/-/postcss-env-function-2.0.2.tgz#0f3e3d3c57f094a92c2baf4b6241f0b0da5365d7" + integrity sha512-rwac4BuZlITeUbiBq60h/xbLzXY43qOsIErngWa4l7Mt+RaSkT7QBjXVGTcBHupykkblHMDrBFh30zchYPaOUw== + dependencies: + postcss "^7.0.2" + postcss-values-parser "^2.0.0" + +postcss-flexbugs-fixes@4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/postcss-flexbugs-fixes/-/postcss-flexbugs-fixes-4.1.0.tgz#e094a9df1783e2200b7b19f875dcad3b3aff8b20" + integrity sha512-jr1LHxQvStNNAHlgco6PzY308zvLklh7SJVYuWUwyUQncofaAlD2l+P/gxKHOdqWKe7xJSkVLFF/2Tp+JqMSZA== + dependencies: + postcss "^7.0.0" + +postcss-focus-visible@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/postcss-focus-visible/-/postcss-focus-visible-4.0.0.tgz#477d107113ade6024b14128317ade2bd1e17046e" + integrity sha512-Z5CkWBw0+idJHSV6+Bgf2peDOFf/x4o+vX/pwcNYrWpXFrSfTkQ3JQ1ojrq9yS+upnAlNRHeg8uEwFTgorjI8g== + dependencies: + postcss "^7.0.2" + +postcss-focus-within@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/postcss-focus-within/-/postcss-focus-within-3.0.0.tgz#763b8788596cee9b874c999201cdde80659ef680" + integrity sha512-W0APui8jQeBKbCGZudW37EeMCjDeVxKgiYfIIEo8Bdh5SpB9sxds/Iq8SEuzS0Q4YFOlG7EPFulbbxujpkrV2w== + dependencies: + postcss "^7.0.2" + +postcss-font-variant@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/postcss-font-variant/-/postcss-font-variant-4.0.0.tgz#71dd3c6c10a0d846c5eda07803439617bbbabacc" + integrity sha512-M8BFYKOvCrI2aITzDad7kWuXXTm0YhGdP9Q8HanmN4EF1Hmcgs1KK5rSHylt/lUJe8yLxiSwWAHdScoEiIxztg== + dependencies: + postcss "^7.0.2" + +postcss-gap-properties@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/postcss-gap-properties/-/postcss-gap-properties-2.0.0.tgz#431c192ab3ed96a3c3d09f2ff615960f902c1715" + integrity sha512-QZSqDaMgXCHuHTEzMsS2KfVDOq7ZFiknSpkrPJY6jmxbugUPTuSzs/vuE5I3zv0WAS+3vhrlqhijiprnuQfzmg== + dependencies: + postcss "^7.0.2" + +postcss-image-set-function@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/postcss-image-set-function/-/postcss-image-set-function-3.0.1.tgz#28920a2f29945bed4c3198d7df6496d410d3f288" + integrity sha512-oPTcFFip5LZy8Y/whto91L9xdRHCWEMs3e1MdJxhgt4jy2WYXfhkng59fH5qLXSCPN8k4n94p1Czrfe5IOkKUw== + dependencies: + postcss "^7.0.2" + postcss-values-parser "^2.0.0" + +postcss-initial@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/postcss-initial/-/postcss-initial-3.0.0.tgz#1772512faf11421b791fb2ca6879df5f68aa0517" + integrity sha512-WzrqZ5nG9R9fUtrA+we92R4jhVvEB32IIRTzfIG/PLL8UV4CvbF1ugTEHEFX6vWxl41Xt5RTCJPEZkuWzrOM+Q== + dependencies: + lodash.template "^4.2.4" + postcss "^7.0.2" + +postcss-lab-function@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/postcss-lab-function/-/postcss-lab-function-2.0.1.tgz#bb51a6856cd12289ab4ae20db1e3821ef13d7d2e" + integrity sha512-whLy1IeZKY+3fYdqQFuDBf8Auw+qFuVnChWjmxm/UhHWqNHZx+B99EwxTvGYmUBqe3Fjxs4L1BoZTJmPu6usVg== + dependencies: + "@csstools/convert-colors" "^1.4.0" + postcss "^7.0.2" + postcss-values-parser "^2.0.0" + +postcss-load-config@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/postcss-load-config/-/postcss-load-config-2.0.0.tgz#f1312ddbf5912cd747177083c5ef7a19d62ee484" + integrity sha512-V5JBLzw406BB8UIfsAWSK2KSwIJ5yoEIVFb4gVkXci0QdKgA24jLmHZ/ghe/GgX0lJ0/D1uUK1ejhzEY94MChQ== + dependencies: + cosmiconfig "^4.0.0" + import-cwd "^2.0.0" + +postcss-loader@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/postcss-loader/-/postcss-loader-3.0.0.tgz#6b97943e47c72d845fa9e03f273773d4e8dd6c2d" + integrity sha512-cLWoDEY5OwHcAjDnkyRQzAXfs2jrKjXpO/HQFcc5b5u/r7aa471wdmChmwfnv7x2u840iat/wi0lQ5nbRgSkUA== + dependencies: + loader-utils "^1.1.0" + postcss "^7.0.0" + postcss-load-config "^2.0.0" + schema-utils "^1.0.0" + +postcss-logical@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/postcss-logical/-/postcss-logical-3.0.0.tgz#2495d0f8b82e9f262725f75f9401b34e7b45d5b5" + integrity sha512-1SUKdJc2vuMOmeItqGuNaC+N8MzBWFWEkAnRnLpFYj1tGGa7NqyVBujfRtgNa2gXR+6RkGUiB2O5Vmh7E2RmiA== + dependencies: + postcss "^7.0.2" + +postcss-media-minmax@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/postcss-media-minmax/-/postcss-media-minmax-4.0.0.tgz#b75bb6cbc217c8ac49433e12f22048814a4f5ed5" + integrity sha512-fo9moya6qyxsjbFAYl97qKO9gyre3qvbMnkOZeZwlsW6XYFsvs2DMGDlchVLfAd8LHPZDxivu/+qW2SMQeTHBw== + dependencies: + postcss "^7.0.2" + +postcss-merge-longhand@^4.0.10: + version "4.0.10" + resolved "https://registry.yarnpkg.com/postcss-merge-longhand/-/postcss-merge-longhand-4.0.10.tgz#c4d63ab57bdc054ab4067ab075d488c8c2978380" + integrity sha512-hME10s6CSjm9nlVIcO1ukR7Jr5RisTaaC1y83jWCivpuBtPohA3pZE7cGTIVSYjXvLnXozHTiVOkG4dnnl756g== + dependencies: + css-color-names "0.0.4" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + stylehacks "^4.0.0" + +postcss-merge-rules@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-merge-rules/-/postcss-merge-rules-4.0.2.tgz#2be44401bf19856f27f32b8b12c0df5af1b88e74" + integrity sha512-UiuXwCCJtQy9tAIxsnurfF0mrNHKc4NnNx6NxqmzNNjXpQwLSukUxELHTRF0Rg1pAmcoKLih8PwvZbiordchag== + dependencies: + browserslist "^4.0.0" + caniuse-api "^3.0.0" + cssnano-util-same-parent "^4.0.0" + postcss "^7.0.0" + postcss-selector-parser "^3.0.0" + vendors "^1.0.0" + +postcss-minify-font-values@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-minify-font-values/-/postcss-minify-font-values-4.0.2.tgz#cd4c344cce474343fac5d82206ab2cbcb8afd5a6" + integrity sha512-j85oO6OnRU9zPf04+PZv1LYIYOprWm6IA6zkXkrJXyRveDEuQggG6tvoy8ir8ZwjLxLuGfNkCZEQG7zan+Hbtg== + dependencies: + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-minify-gradients@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-minify-gradients/-/postcss-minify-gradients-4.0.1.tgz#6da95c6e92a809f956bb76bf0c04494953e1a7dd" + integrity sha512-pySEW3E6Ly5mHm18rekbWiAjVi/Wj8KKt2vwSfVFAWdW6wOIekgqxKxLU7vJfb107o3FDNPkaYFCxGAJBFyogA== + dependencies: + cssnano-util-get-arguments "^4.0.0" + is-color-stop "^1.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-minify-params@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-minify-params/-/postcss-minify-params-4.0.1.tgz#5b2e2d0264dd645ef5d68f8fec0d4c38c1cf93d2" + integrity sha512-h4W0FEMEzBLxpxIVelRtMheskOKKp52ND6rJv+nBS33G1twu2tCyurYj/YtgU76+UDCvWeNs0hs8HFAWE2OUFg== + dependencies: + alphanum-sort "^1.0.0" + browserslist "^4.0.0" + cssnano-util-get-arguments "^4.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + uniqs "^2.0.0" + +postcss-minify-selectors@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-minify-selectors/-/postcss-minify-selectors-4.0.1.tgz#a891c197977cc37abf60b3ea06b84248b1c1e9cd" + integrity sha512-8+plQkomve3G+CodLCgbhAKrb5lekAnLYuL1d7Nz+/7RANpBEVdgBkPNwljfSKvZ9xkkZTZITd04KP+zeJTJqg== + dependencies: + alphanum-sort "^1.0.0" + has "^1.0.0" + postcss "^7.0.0" + postcss-selector-parser "^3.0.0" + +postcss-modules-extract-imports@^1.2.0: + version "1.2.1" + resolved "https://registry.yarnpkg.com/postcss-modules-extract-imports/-/postcss-modules-extract-imports-1.2.1.tgz#dc87e34148ec7eab5f791f7cd5849833375b741a" + integrity sha512-6jt9XZwUhwmRUhb/CkyJY020PYaPJsCyt3UjbaWo6XEbH/94Hmv6MP7fG2C5NDU/BcHzyGYxNtHvM+LTf9HrYw== + dependencies: + postcss "^6.0.1" + +postcss-modules-local-by-default@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/postcss-modules-local-by-default/-/postcss-modules-local-by-default-1.2.0.tgz#f7d80c398c5a393fa7964466bd19500a7d61c069" + integrity sha1-99gMOYxaOT+nlkRmvRlQCn1hwGk= + dependencies: + css-selector-tokenizer "^0.7.0" + postcss "^6.0.1" + +postcss-modules-scope@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/postcss-modules-scope/-/postcss-modules-scope-1.1.0.tgz#d6ea64994c79f97b62a72b426fbe6056a194bb90" + integrity sha1-1upkmUx5+XtipytCb75gVqGUu5A= + dependencies: + css-selector-tokenizer "^0.7.0" + postcss "^6.0.1" + +postcss-modules-values@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/postcss-modules-values/-/postcss-modules-values-1.3.0.tgz#ecffa9d7e192518389f42ad0e83f72aec456ea20" + integrity sha1-7P+p1+GSUYOJ9CrQ6D9yrsRW6iA= + dependencies: + icss-replace-symbols "^1.1.0" + postcss "^6.0.1" + +postcss-nesting@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/postcss-nesting/-/postcss-nesting-7.0.0.tgz#6e26a770a0c8fcba33782a6b6f350845e1a448f6" + integrity sha512-WSsbVd5Ampi3Y0nk/SKr5+K34n52PqMqEfswu6RtU4r7wA8vSD+gM8/D9qq4aJkHImwn1+9iEFTbjoWsQeqtaQ== + dependencies: + postcss "^7.0.2" + +postcss-normalize-charset@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-normalize-charset/-/postcss-normalize-charset-4.0.1.tgz#8b35add3aee83a136b0471e0d59be58a50285dd4" + integrity sha512-gMXCrrlWh6G27U0hF3vNvR3w8I1s2wOBILvA87iNXaPvSNo5uZAMYsZG7XjCUf1eVxuPfyL4TJ7++SGZLc9A3g== + dependencies: + postcss "^7.0.0" + +postcss-normalize-display-values@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-normalize-display-values/-/postcss-normalize-display-values-4.0.1.tgz#d9a83d47c716e8a980f22f632c8b0458cfb48a4c" + integrity sha512-R5mC4vaDdvsrku96yXP7zak+O3Mm9Y8IslUobk7IMP+u/g+lXvcN4jngmHY5zeJnrQvE13dfAg5ViU05ZFDwdg== + dependencies: + cssnano-util-get-match "^4.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-normalize-positions@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-normalize-positions/-/postcss-normalize-positions-4.0.1.tgz#ee2d4b67818c961964c6be09d179894b94fd6ba1" + integrity sha512-GNoOaLRBM0gvH+ZRb2vKCIujzz4aclli64MBwDuYGU2EY53LwiP7MxOZGE46UGtotrSnmarPPZ69l2S/uxdaWA== + dependencies: + cssnano-util-get-arguments "^4.0.0" + has "^1.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-normalize-repeat-style@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-4.0.1.tgz#5293f234b94d7669a9f805495d35b82a581c50e5" + integrity sha512-fFHPGIjBUyUiswY2rd9rsFcC0t3oRta4wxE1h3lpwfQZwFeFjXFSiDtdJ7APCmHQOnUZnqYBADNRPKPwFAONgA== + dependencies: + cssnano-util-get-arguments "^4.0.0" + cssnano-util-get-match "^4.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-normalize-string@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-normalize-string/-/postcss-normalize-string-4.0.1.tgz#23c5030c2cc24175f66c914fa5199e2e3c10fef3" + integrity sha512-IJoexFTkAvAq5UZVxWXAGE0yLoNN/012v7TQh5nDo6imZJl2Fwgbhy3J2qnIoaDBrtUP0H7JrXlX1jjn2YcvCQ== + dependencies: + has "^1.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-normalize-timing-functions@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-4.0.1.tgz#8be83e0b9cb3ff2d1abddee032a49108f05f95d7" + integrity sha512-1nOtk7ze36+63ONWD8RCaRDYsnzorrj+Q6fxkQV+mlY5+471Qx9kspqv0O/qQNMeApg8KNrRf496zHwJ3tBZ7w== + dependencies: + cssnano-util-get-match "^4.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-normalize-unicode@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-normalize-unicode/-/postcss-normalize-unicode-4.0.1.tgz#841bd48fdcf3019ad4baa7493a3d363b52ae1cfb" + integrity sha512-od18Uq2wCYn+vZ/qCOeutvHjB5jm57ToxRaMeNuf0nWVHaP9Hua56QyMF6fs/4FSUnVIw0CBPsU0K4LnBPwYwg== + dependencies: + browserslist "^4.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-normalize-url@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-normalize-url/-/postcss-normalize-url-4.0.1.tgz#10e437f86bc7c7e58f7b9652ed878daaa95faae1" + integrity sha512-p5oVaF4+IHwu7VpMan/SSpmpYxcJMtkGppYf0VbdH5B6hN8YNmVyJLuY9FmLQTzY3fag5ESUUHDqM+heid0UVA== + dependencies: + is-absolute-url "^2.0.0" + normalize-url "^3.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-normalize-whitespace@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-normalize-whitespace/-/postcss-normalize-whitespace-4.0.1.tgz#d14cb639b61238418ac8bc8d3b7bdd65fc86575e" + integrity sha512-U8MBODMB2L+nStzOk6VvWWjZgi5kQNShCyjRhMT3s+W9Jw93yIjOnrEkKYD3Ul7ChWbEcjDWmXq0qOL9MIAnAw== + dependencies: + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-ordered-values@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/postcss-ordered-values/-/postcss-ordered-values-4.1.1.tgz#2e3b432ef3e489b18333aeca1f1295eb89be9fc2" + integrity sha512-PeJiLgJWPzkVF8JuKSBcylaU+hDJ/TX3zqAMIjlghgn1JBi6QwQaDZoDIlqWRcCAI8SxKrt3FCPSRmOgKRB97Q== + dependencies: + cssnano-util-get-arguments "^4.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-overflow-shorthand@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/postcss-overflow-shorthand/-/postcss-overflow-shorthand-2.0.0.tgz#31ecf350e9c6f6ddc250a78f0c3e111f32dd4c30" + integrity sha512-aK0fHc9CBNx8jbzMYhshZcEv8LtYnBIRYQD5i7w/K/wS9c2+0NSR6B3OVMu5y0hBHYLcMGjfU+dmWYNKH0I85g== + dependencies: + postcss "^7.0.2" + +postcss-page-break@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/postcss-page-break/-/postcss-page-break-2.0.0.tgz#add52d0e0a528cabe6afee8b46e2abb277df46bf" + integrity sha512-tkpTSrLpfLfD9HvgOlJuigLuk39wVTbbd8RKcy8/ugV2bNBUW3xU+AIqyxhDrQr1VUj1RmyJrBn1YWrqUm9zAQ== + dependencies: + postcss "^7.0.2" + +postcss-place@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-place/-/postcss-place-4.0.1.tgz#e9f39d33d2dc584e46ee1db45adb77ca9d1dcc62" + integrity sha512-Zb6byCSLkgRKLODj/5mQugyuj9bvAAw9LqJJjgwz5cYryGeXfFZfSXoP1UfveccFmeq0b/2xxwcTEVScnqGxBg== + dependencies: + postcss "^7.0.2" + postcss-values-parser "^2.0.0" + +postcss-preset-env@6.3.1: + version "6.3.1" + resolved "https://registry.yarnpkg.com/postcss-preset-env/-/postcss-preset-env-6.3.1.tgz#bd0f6353c44f41d0be61da278af33a6559e0aa6a" + integrity sha512-erl+OcCTr1+jsfJNQjBweyb8Y1s6KngUBwoqJnRXO197PmEE6u9HxZfnpKkTQqasxZljxNHzXR5hMb7MdD0Zdw== + dependencies: + autoprefixer "^9.3.1" + browserslist "^4.3.4" + caniuse-lite "^1.0.30000905" + cssdb "^4.1.0" + postcss "^7.0.5" + postcss-attribute-case-insensitive "^4.0.0" + postcss-color-functional-notation "^2.0.1" + postcss-color-gray "^5.0.0" + postcss-color-hex-alpha "^5.0.2" + postcss-color-mod-function "^3.0.3" + postcss-color-rebeccapurple "^4.0.1" + postcss-custom-media "^7.0.7" + postcss-custom-properties "^8.0.9" + postcss-custom-selectors "^5.1.2" + postcss-dir-pseudo-class "^5.0.0" + postcss-double-position-gradients "^1.0.0" + postcss-env-function "^2.0.2" + postcss-focus-visible "^4.0.0" + postcss-focus-within "^3.0.0" + postcss-font-variant "^4.0.0" + postcss-gap-properties "^2.0.0" + postcss-image-set-function "^3.0.1" + postcss-initial "^3.0.0" + postcss-lab-function "^2.0.1" + postcss-logical "^3.0.0" + postcss-media-minmax "^4.0.0" + postcss-nesting "^7.0.0" + postcss-overflow-shorthand "^2.0.0" + postcss-page-break "^2.0.0" + postcss-place "^4.0.1" + postcss-pseudo-class-any-link "^6.0.0" + postcss-replace-overflow-wrap "^3.0.0" + postcss-selector-matches "^4.0.0" + postcss-selector-not "^4.0.0" + +postcss-pseudo-class-any-link@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/postcss-pseudo-class-any-link/-/postcss-pseudo-class-any-link-6.0.0.tgz#2ed3eed393b3702879dec4a87032b210daeb04d1" + integrity sha512-lgXW9sYJdLqtmw23otOzrtbDXofUdfYzNm4PIpNE322/swES3VU9XlXHeJS46zT2onFO7V1QFdD4Q9LiZj8mew== + dependencies: + postcss "^7.0.2" + postcss-selector-parser "^5.0.0-rc.3" + +postcss-reduce-initial@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-reduce-initial/-/postcss-reduce-initial-4.0.2.tgz#bac8e325d67510ee01fa460676dc8ea9e3b40f15" + integrity sha512-epUiC39NonKUKG+P3eAOKKZtm5OtAtQJL7Ye0CBN1f+UQTHzqotudp+hki7zxXm7tT0ZAKDMBj1uihpPjP25ug== + dependencies: + browserslist "^4.0.0" + caniuse-api "^3.0.0" + has "^1.0.0" + postcss "^7.0.0" + +postcss-reduce-transforms@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-reduce-transforms/-/postcss-reduce-transforms-4.0.1.tgz#8600d5553bdd3ad640f43bff81eb52f8760d4561" + integrity sha512-sZVr3QlGs0pjh6JAIe6DzWvBaqYw05V1t3d9Tp+VnFRT5j+rsqoWsysh/iSD7YNsULjq9IAylCznIwVd5oU/zA== + dependencies: + cssnano-util-get-match "^4.0.0" + has "^1.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-replace-overflow-wrap@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/postcss-replace-overflow-wrap/-/postcss-replace-overflow-wrap-3.0.0.tgz#61b360ffdaedca84c7c918d2b0f0d0ea559ab01c" + integrity sha512-2T5hcEHArDT6X9+9dVSPQdo7QHzG4XKclFT8rU5TzJPDN7RIRTbO9c4drUISOVemLj03aezStHCR2AIcr8XLpw== + dependencies: + postcss "^7.0.2" + +postcss-safe-parser@4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-safe-parser/-/postcss-safe-parser-4.0.1.tgz#8756d9e4c36fdce2c72b091bbc8ca176ab1fcdea" + integrity sha512-xZsFA3uX8MO3yAda03QrG3/Eg1LN3EPfjjf07vke/46HERLZyHrTsQ9E1r1w1W//fWEhtYNndo2hQplN2cVpCQ== + dependencies: + postcss "^7.0.0" + +postcss-selector-matches@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/postcss-selector-matches/-/postcss-selector-matches-4.0.0.tgz#71c8248f917ba2cc93037c9637ee09c64436fcff" + integrity sha512-LgsHwQR/EsRYSqlwdGzeaPKVT0Ml7LAT6E75T8W8xLJY62CE4S/l03BWIt3jT8Taq22kXP08s2SfTSzaraoPww== + dependencies: + balanced-match "^1.0.0" + postcss "^7.0.2" + +postcss-selector-not@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/postcss-selector-not/-/postcss-selector-not-4.0.0.tgz#c68ff7ba96527499e832724a2674d65603b645c0" + integrity sha512-W+bkBZRhqJaYN8XAnbbZPLWMvZD1wKTu0UxtFKdhtGjWYmxhkUneoeOhRJKdAE5V7ZTlnbHfCR+6bNwK9e1dTQ== + dependencies: + balanced-match "^1.0.0" + postcss "^7.0.2" + +postcss-selector-parser@^3.0.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-3.1.1.tgz#4f875f4afb0c96573d5cf4d74011aee250a7e865" + integrity sha1-T4dfSvsMllc9XPTXQBGu4lCn6GU= + dependencies: + dot-prop "^4.1.1" + indexes-of "^1.0.1" + uniq "^1.0.1" + +postcss-selector-parser@^5.0.0-rc.3, postcss-selector-parser@^5.0.0-rc.4: + version "5.0.0" + resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-5.0.0.tgz#249044356697b33b64f1a8f7c80922dddee7195c" + integrity sha512-w+zLE5Jhg6Liz8+rQOWEAwtwkyqpfnmsinXjXg6cY7YIONZZtgvE0v2O0uhQBs0peNomOJwWRKt6JBfTdTd3OQ== + dependencies: + cssesc "^2.0.0" + indexes-of "^1.0.1" + uniq "^1.0.1" + +postcss-svgo@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-svgo/-/postcss-svgo-4.0.1.tgz#5628cdb38f015de6b588ce6d0bf0724b492b581d" + integrity sha512-YD5uIk5NDRySy0hcI+ZJHwqemv2WiqqzDgtvgMzO8EGSkK5aONyX8HMVFRFJSdO8wUWTuisUFn/d7yRRbBr5Qw== + dependencies: + is-svg "^3.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + svgo "^1.0.0" + +postcss-unique-selectors@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-unique-selectors/-/postcss-unique-selectors-4.0.1.tgz#9446911f3289bfd64c6d680f073c03b1f9ee4bac" + integrity sha512-+JanVaryLo9QwZjKrmJgkI4Fn8SBgRO6WXQBJi7KiAVPlmxikB5Jzc4EvXMT2H0/m0RjrVVm9rGNhZddm/8Spg== + dependencies: + alphanum-sort "^1.0.0" + postcss "^7.0.0" + uniqs "^2.0.0" + +postcss-value-parser@^3.0.0, postcss-value-parser@^3.3.0, postcss-value-parser@^3.3.1: + version "3.3.1" + resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz#9ff822547e2893213cf1c30efa51ac5fd1ba8281" + integrity sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ== + +postcss-values-parser@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/postcss-values-parser/-/postcss-values-parser-2.0.0.tgz#1ba42cae31367c44f96721cb5eb99462bfb39705" + integrity sha512-cyRdkgbRRefu91ByAlJow4y9w/hnBmmWgLpWmlFQ2bpIy2eKrqowt3VeYcaHQ08otVXmC9V2JtYW1Z/RpvYR8A== + dependencies: + flatten "^1.0.2" + indexes-of "^1.0.1" + uniq "^1.0.1" + +postcss@^6.0.1, postcss@^6.0.23: + version "6.0.23" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-6.0.23.tgz#61c82cc328ac60e677645f979054eb98bc0e3324" + integrity sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag== + dependencies: + chalk "^2.4.1" + source-map "^0.6.1" + supports-color "^5.4.0" + +postcss@^7.0.0, postcss@^7.0.1, postcss@^7.0.2, postcss@^7.0.5, postcss@^7.0.7: + version "7.0.7" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.7.tgz#2754d073f77acb4ef08f1235c36c5721a7201614" + integrity sha512-HThWSJEPkupqew2fnuQMEI2YcTj/8gMV3n80cMdJsKxfIh5tHf7nM5JigNX6LxVMqo6zkgQNAI88hyFvBk41Pg== + dependencies: + chalk "^2.4.1" + source-map "^0.6.1" + supports-color "^5.5.0" + +prelude-ls@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" + integrity sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ= + +prepend-http@^1.0.1: + version "1.0.4" + resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-1.0.4.tgz#d4f4562b0ce3696e41ac52d0e002e57a635dc6dc" + integrity sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw= + +preserve@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/preserve/-/preserve-0.2.0.tgz#815ed1f6ebc65926f865b310c0713bcb3315ce4b" + integrity sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks= + +prettier@^1.14.2: + version "1.15.3" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.15.3.tgz#1feaac5bdd181237b54dbe65d874e02a1472786a" + integrity sha512-gAU9AGAPMaKb3NNSUUuhhFAS7SCO4ALTN4nRIn6PJ075Qd28Yn2Ig2ahEJWdJwJmlEBTUfC7mMUSFy8MwsOCfg== + +pretty-bytes@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-4.0.2.tgz#b2bf82e7350d65c6c33aa95aaa5a4f6327f61cd9" + integrity sha1-sr+C5zUNZcbDOqlaqlpPYyf2HNk= + +pretty-error@^2.0.2: + version "2.1.1" + resolved "https://registry.yarnpkg.com/pretty-error/-/pretty-error-2.1.1.tgz#5f4f87c8f91e5ae3f3ba87ab4cf5e03b1a17f1a3" + integrity sha1-X0+HyPkeWuPzuoerTPXgOxoX8aM= + dependencies: + renderkid "^2.0.1" + utila "~0.4" + +pretty-format@^23.6.0: + version "23.6.0" + resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-23.6.0.tgz#5eaac8eeb6b33b987b7fe6097ea6a8a146ab5760" + integrity sha512-zf9NV1NSlDLDjycnwm6hpFATCGl/K1lt0R/GdkAK2O5LN/rwJoB+Mh93gGJjut4YbmecbfgLWVGSTCr0Ewvvbw== + dependencies: + ansi-regex "^3.0.0" + ansi-styles "^3.2.0" + +private@^0.1.6, private@^0.1.8: + version "0.1.8" + resolved "https://registry.yarnpkg.com/private/-/private-0.1.8.tgz#2381edb3689f7a53d653190060fcf822d2f368ff" + integrity sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg== + +process-nextick-args@~2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.0.tgz#a37d732f4271b4ab1ad070d35508e8290788ffaa" + integrity sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw== + +process@^0.11.10: + version "0.11.10" + resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" + integrity sha1-czIwDoQBYb2j5podHZGn1LwW8YI= + +process@~0.5.1: + version "0.5.2" + resolved "https://registry.yarnpkg.com/process/-/process-0.5.2.tgz#1638d8a8e34c2f440a91db95ab9aeb677fc185cf" + integrity sha1-FjjYqONML0QKkduVq5rrZ3/Bhc8= + +progress@^2.0.0: + version "2.0.3" + resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" + integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== + +promise-inflight@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3" + integrity sha1-mEcocL8igTL8vdhoEputEsPAKeM= + +promise-to-callback@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/promise-to-callback/-/promise-to-callback-1.0.0.tgz#5d2a749010bfb67d963598fcd3960746a68feef7" + integrity sha1-XSp0kBC/tn2WNZj805YHRqaP7vc= + dependencies: + is-fn "^1.0.0" + set-immediate-shim "^1.0.1" + +promise@8.0.2: + version "8.0.2" + resolved "https://registry.yarnpkg.com/promise/-/promise-8.0.2.tgz#9dcd0672192c589477d56891271bdc27547ae9f0" + integrity sha512-EIyzM39FpVOMbqgzEHhxdrEhtOSDOtjMZQ0M6iVfCE+kWNgCkAyOdnuCWqfmflylftfadU6FkiMgHZA2kUzwRw== + dependencies: + asap "~2.0.6" + +promise@^7.1.1: + version "7.3.1" + resolved "https://registry.yarnpkg.com/promise/-/promise-7.3.1.tgz#064b72602b18f90f29192b8b1bc418ffd1ebd3bf" + integrity sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg== + dependencies: + asap "~2.0.3" + +prompts@^0.1.9: + version "0.1.14" + resolved "https://registry.yarnpkg.com/prompts/-/prompts-0.1.14.tgz#a8e15c612c5c9ec8f8111847df3337c9cbd443b2" + integrity sha512-rxkyiE9YH6zAz/rZpywySLKkpaj0NMVyNw1qhsubdbjjSgcayjTShDreZGlFMcGSu5sab3bAKPfFk78PB90+8w== + dependencies: + kleur "^2.0.1" + sisteransi "^0.1.1" + +prop-types@^15.5.10, prop-types@^15.6.2: + version "15.6.2" + resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.6.2.tgz#05d5ca77b4453e985d60fc7ff8c859094a497102" + integrity sha512-3pboPvLiWD7dkI3qf3KbUe6hKFKa52w+AE0VCqECtf+QHAKgOL37tTaNCnuX1nAAQ4ZhyP+kYVKf8rLmJ/feDQ== + dependencies: + loose-envify "^1.3.1" + object-assign "^4.1.1" + +prop-types@^15.6.0: + version "15.7.2" + resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.7.2.tgz#52c41e75b8c87e72b9d9360e0206b99dcbffa6c5" + integrity sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ== + dependencies: + loose-envify "^1.4.0" + object-assign "^4.1.1" + react-is "^16.8.1" + +proxy-addr@~2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.4.tgz#ecfc733bf22ff8c6f407fa275327b9ab67e48b93" + integrity sha512-5erio2h9jp5CHGwcybmxmVqHmnCBZeewlfJ0pex+UW7Qny7OOZXTtH56TGNyBizkgiOwhJtMKrVzDTeKcySZwA== + dependencies: + forwarded "~0.1.2" + ipaddr.js "1.8.0" + +prr@~1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476" + integrity sha1-0/wRS6BplaRexok/SEzrHXj19HY= + +pseudomap@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" + integrity sha1-8FKijacOYYkX7wqKw0wa5aaChrM= + +psl@^1.1.24, psl@^1.1.28: + version "1.1.31" + resolved "https://registry.yarnpkg.com/psl/-/psl-1.1.31.tgz#e9aa86d0101b5b105cbe93ac6b784cd547276184" + integrity sha512-/6pt4+C+T+wZUieKR620OpzN/LlnNKuWjy1iFLQ/UG35JqHlR/89MP1d96dUfkf6Dne3TuLQzOYEYshJ+Hx8mw== + +public-encrypt@^4.0.0: + version "4.0.3" + resolved "https://registry.yarnpkg.com/public-encrypt/-/public-encrypt-4.0.3.tgz#4fcc9d77a07e48ba7527e7cbe0de33d0701331e0" + integrity sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q== + dependencies: + bn.js "^4.1.0" + browserify-rsa "^4.0.0" + create-hash "^1.1.0" + parse-asn1 "^5.0.0" + randombytes "^2.0.1" + safe-buffer "^5.1.2" + +pump@^2.0.0, pump@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/pump/-/pump-2.0.1.tgz#12399add6e4cf7526d973cbc8b5ce2e2908b3909" + integrity sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA== + dependencies: + end-of-stream "^1.1.0" + once "^1.3.1" + +pump@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" + integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww== + dependencies: + end-of-stream "^1.1.0" + once "^1.3.1" + +pumpify@^1.3.3: + version "1.5.1" + resolved "https://registry.yarnpkg.com/pumpify/-/pumpify-1.5.1.tgz#36513be246ab27570b1a374a5ce278bfd74370ce" + integrity sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ== + dependencies: + duplexify "^3.6.0" + inherits "^2.0.3" + pump "^2.0.0" + +punycode@1.3.2: + version "1.3.2" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d" + integrity sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0= + +punycode@2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.0.tgz#5f863edc89b96db09074bad7947bf09056ca4e7d" + integrity sha1-X4Y+3Im5bbCQdLrXlHvwkFbKTn0= + +punycode@2.x.x, punycode@^2.1.0, punycode@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" + integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== + +punycode@^1.2.4, punycode@^1.4.1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" + integrity sha1-wNWmOycYgArY4esPpSachN1BhF4= + +q@^1.1.2: + version "1.5.1" + resolved "https://registry.yarnpkg.com/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7" + integrity sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc= + +qs@6.5.2, qs@~6.5.2: + version "6.5.2" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36" + integrity sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA== + +query-string@^5.0.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/query-string/-/query-string-5.1.1.tgz#a78c012b71c17e05f2e3fa2319dd330682efb3cb" + integrity sha512-gjWOsm2SoGlgLEdAGt7a6slVOk9mGiXmPFMqrEhLQ68rhQuBnpfs3+EmlvqKyxnCo9/PPlF+9MtY02S1aFg+Jw== + dependencies: + decode-uri-component "^0.2.0" + object-assign "^4.1.0" + strict-uri-encode "^1.0.0" + +querystring-es3@^0.2.0: + version "0.2.1" + resolved "https://registry.yarnpkg.com/querystring-es3/-/querystring-es3-0.2.1.tgz#9ec61f79049875707d69414596fd907a4d711e73" + integrity sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM= + +querystring@0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620" + integrity sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA= + +querystringify@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-2.1.0.tgz#7ded8dfbf7879dcc60d0a644ac6754b283ad17ef" + integrity sha512-sluvZZ1YiTLD5jsqZcDmFyV2EwToyXZBfpoVOmktMmW+VEnhgakFHnasVph65fOjGPTWN0Nw3+XQaSeMayr0kg== + +raf@3.4.0: + version "3.4.0" + resolved "https://registry.yarnpkg.com/raf/-/raf-3.4.0.tgz#a28876881b4bc2ca9117d4138163ddb80f781575" + integrity sha512-pDP/NMRAXoTfrhCfyfSEwJAKLaxBU9eApMeBPB1TkDouZmvPerIClV8lTAd+uF8ZiTaVl69e1FCxQrAd/VTjGw== + dependencies: + performance-now "^2.1.0" + +randomatic@^3.0.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/randomatic/-/randomatic-3.1.1.tgz#b776efc59375984e36c537b2f51a1f0aff0da1ed" + integrity sha512-TuDE5KxZ0J461RVjrJZCJc+J+zCkTb1MbH9AQUq68sMhOMcy9jLcb3BrZKgp9q9Ncltdg4QVqWrH02W2EFFVYw== + dependencies: + is-number "^4.0.0" + kind-of "^6.0.0" + math-random "^1.0.1" + +randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5: + version "2.0.6" + resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.0.6.tgz#d302c522948588848a8d300c932b44c24231da80" + integrity sha512-CIQ5OFxf4Jou6uOKe9t1AOgqpeU5fd70A8NPdHSGeYXqXsPe6peOwI0cUl88RWZ6sP1vPMV3avd/R6cZ5/sP1A== + dependencies: + safe-buffer "^5.1.0" + +randomfill@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/randomfill/-/randomfill-1.0.4.tgz#c92196fc86ab42be983f1bf31778224931d61458" + integrity sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw== + dependencies: + randombytes "^2.0.5" + safe-buffer "^5.1.0" + +randomhex@0.1.5: + version "0.1.5" + resolved "https://registry.yarnpkg.com/randomhex/-/randomhex-0.1.5.tgz#baceef982329091400f2a2912c6cd02f1094f585" + integrity sha1-us7vmCMpCRQA8qKRLGzQLxCU9YU= + +range-parser@^1.0.3, range-parser@~1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.0.tgz#f49be6b487894ddc40dcc94a322f611092e00d5e" + integrity sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4= + +raw-body@2.3.3: + version "2.3.3" + resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.3.3.tgz#1b324ece6b5706e153855bc1148c65bb7f6ea0c3" + integrity sha512-9esiElv1BrZoI3rCDuOuKCBRbuApGGaDPQfjSflGxdy4oyzqghxu6klEkkVIvBje+FF0BX9coEv8KqW6X/7njw== + dependencies: + bytes "3.0.0" + http-errors "1.6.3" + iconv-lite "0.4.23" + unpipe "1.0.0" + +rc@^1.2.7: + version "1.2.8" + resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed" + integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw== + dependencies: + deep-extend "^0.6.0" + ini "~1.3.0" + minimist "^1.2.0" + strip-json-comments "~2.0.1" + +react-app-polyfill@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/react-app-polyfill/-/react-app-polyfill-0.2.0.tgz#60eaf037223b2f3a5671f45e5ac3b418f0b48ad2" + integrity sha512-uBfocjRsBNqhTaEywUZ2buzhHbor2jBbnhZY8VUZ7VZ3PXucIPZrPDAAmbclELhvl+x08PbynAGQfMYcBmqZ2w== + dependencies: + core-js "2.5.7" + object-assign "4.1.1" + promise "8.0.2" + raf "3.4.0" + whatwg-fetch "3.0.0" + +react-dev-utils@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/react-dev-utils/-/react-dev-utils-7.0.1.tgz#c53e759a22668ee2c0d146c24ce4bdec2b41e3c8" + integrity sha512-AN/RKZKHsyB2FebKSyMLOecvjuzZ54lzsLYF8wNmwwgRA3dVC4vhYsafvME7JD4q7RUB0bejqFWjOS9QtN48Zg== + dependencies: + "@babel/code-frame" "7.0.0" + address "1.0.3" + browserslist "4.1.1" + chalk "2.4.1" + cross-spawn "6.0.5" + detect-port-alt "1.1.6" + escape-string-regexp "1.0.5" + filesize "3.6.1" + find-up "3.0.0" + global-modules "1.0.0" + globby "8.0.1" + gzip-size "5.0.0" + immer "1.7.2" + inquirer "6.2.0" + is-root "2.0.0" + loader-utils "1.1.0" + opn "5.4.0" + pkg-up "2.0.0" + react-error-overlay "^5.1.2" + recursive-readdir "2.2.2" + shell-quote "1.6.1" + sockjs-client "1.1.5" + strip-ansi "4.0.0" + text-table "0.2.0" + +react-dom@^16.7.0: + version "16.7.0" + resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-16.7.0.tgz#a17b2a7ca89ee7390bc1ed5eb81783c7461748b8" + integrity sha512-D0Ufv1ExCAmF38P2Uh1lwpminZFRXEINJe53zRAbm4KPwSyd6DY/uDoS0Blj9jvPpn1+wivKpZYc8aAAN/nAkg== + dependencies: + loose-envify "^1.1.0" + object-assign "^4.1.1" + prop-types "^15.6.2" + scheduler "^0.12.0" + +react-error-overlay@^5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/react-error-overlay/-/react-error-overlay-5.1.2.tgz#888957b884d4b25b083a82ad550f7aad96585394" + integrity sha512-7kEBKwU9R8fKnZJBRa5RSIfay4KJwnYvKB6gODGicUmDSAhQJ7Tdnll5S0RLtYrzRfMVXlqYw61rzrSpP4ThLQ== + +react-event-listener@^0.6.2: + version "0.6.6" + resolved "https://registry.yarnpkg.com/react-event-listener/-/react-event-listener-0.6.6.tgz#758f7b991cad9086dd39fd29fad72127e1d8962a" + integrity sha512-+hCNqfy7o9wvO6UgjqFmBzARJS7qrNoda0VqzvOuioEpoEXKutiKuv92dSz6kP7rYLmyHPyYNLesi5t/aH1gfw== + dependencies: + "@babel/runtime" "^7.2.0" + prop-types "^15.6.0" + warning "^4.0.1" + +react-is@^16.6.0, react-is@^16.6.3, react-is@^16.7.0, react-is@^16.8.1: + version "16.8.6" + resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.8.6.tgz#5bbc1e2d29141c9fbdfed456343fe2bc430a6a16" + integrity sha512-aUk3bHfZ2bRSVFFbbeVS4i+lNPZr3/WM5jT2J5omUVV1zzcs1nAaf3l51ctA5FFvCRbhrH0bdAsRRQddFJZPtA== + +react-lifecycles-compat@^3.0.2, react-lifecycles-compat@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz#4f1a273afdfc8f3488a8c516bfda78f872352362" + integrity sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA== + +react-router-dom@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/react-router-dom/-/react-router-dom-5.0.0.tgz#542a9b86af269a37f0b87218c4c25ea8dcf0c073" + integrity sha512-wSpja5g9kh5dIteZT3tUoggjnsa+TPFHSMrpHXMpFsaHhQkm/JNVGh2jiF9Dkh4+duj4MKCkwO6H08u6inZYgQ== + dependencies: + "@babel/runtime" "^7.1.2" + history "^4.9.0" + loose-envify "^1.3.1" + prop-types "^15.6.2" + react-router "5.0.0" + tiny-invariant "^1.0.2" + tiny-warning "^1.0.0" + +react-router@5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/react-router/-/react-router-5.0.0.tgz#349863f769ffc2fa10ee7331a4296e86bc12879d" + integrity sha512-6EQDakGdLG/it2x9EaCt9ZpEEPxnd0OCLBHQ1AcITAAx7nCnyvnzf76jKWG1s2/oJ7SSviUgfWHofdYljFexsA== + dependencies: + "@babel/runtime" "^7.1.2" + create-react-context "^0.2.2" + history "^4.9.0" + hoist-non-react-statics "^3.1.0" + loose-envify "^1.3.1" + path-to-regexp "^1.7.0" + prop-types "^15.6.2" + react-is "^16.6.0" + tiny-invariant "^1.0.2" + tiny-warning "^1.0.0" + +react-scripts@2.1.3: + version "2.1.3" + resolved "https://registry.yarnpkg.com/react-scripts/-/react-scripts-2.1.3.tgz#6e49be279f4039fb9f330d2b3529b933b8e90945" + integrity sha512-JASD0QVVgSVleVhA9TeA+UBx+shq887hm/L+09qjZLrqIUvJZHZU+oOnhMFGot02Yop+LKfkvf9KSsTNlu/Rwg== + dependencies: + "@babel/core" "7.1.6" + "@svgr/webpack" "2.4.1" + babel-core "7.0.0-bridge.0" + babel-eslint "9.0.0" + babel-jest "23.6.0" + babel-loader "8.0.4" + babel-plugin-named-asset-import "^0.3.0" + babel-preset-react-app "^7.0.0" + bfj "6.1.1" + case-sensitive-paths-webpack-plugin "2.1.2" + chalk "2.4.1" + css-loader "1.0.0" + dotenv "6.0.0" + dotenv-expand "4.2.0" + eslint "5.6.0" + eslint-config-react-app "^3.0.6" + eslint-loader "2.1.1" + eslint-plugin-flowtype "2.50.1" + eslint-plugin-import "2.14.0" + eslint-plugin-jsx-a11y "6.1.2" + eslint-plugin-react "7.11.1" + file-loader "2.0.0" + fork-ts-checker-webpack-plugin-alt "0.4.14" + fs-extra "7.0.0" + html-webpack-plugin "4.0.0-alpha.2" + identity-obj-proxy "3.0.0" + jest "23.6.0" + jest-pnp-resolver "1.0.1" + jest-resolve "23.6.0" + mini-css-extract-plugin "0.4.3" + optimize-css-assets-webpack-plugin "5.0.1" + pnp-webpack-plugin "1.1.0" + postcss-flexbugs-fixes "4.1.0" + postcss-loader "3.0.0" + postcss-preset-env "6.3.1" + postcss-safe-parser "4.0.1" + react-app-polyfill "^0.2.0" + react-dev-utils "^7.0.1" + resolve "1.8.1" + sass-loader "7.1.0" + style-loader "0.23.0" + terser-webpack-plugin "1.1.0" + url-loader "1.1.1" + webpack "4.19.1" + webpack-dev-server "3.1.14" + webpack-manifest-plugin "2.0.4" + workbox-webpack-plugin "3.6.3" + optionalDependencies: + fsevents "1.2.4" + +react-transition-group@^2.2.1: + version "2.9.0" + resolved "https://registry.yarnpkg.com/react-transition-group/-/react-transition-group-2.9.0.tgz#df9cdb025796211151a436c69a8f3b97b5b07c8d" + integrity sha512-+HzNTCHpeQyl4MJ/bdE0u6XRMe9+XG/+aL4mCxVN4DnPBQ0/5bfHWPDuOZUzYdMj94daZaZdCCc1Dzt9R/xSSg== + dependencies: + dom-helpers "^3.4.0" + loose-envify "^1.4.0" + prop-types "^15.6.2" + react-lifecycles-compat "^3.0.4" + +react@^15.4.2: + version "15.6.2" + resolved "https://registry.yarnpkg.com/react/-/react-15.6.2.tgz#dba0434ab439cfe82f108f0f511663908179aa72" + integrity sha1-26BDSrQ5z+gvEI8PURZjkIF5qnI= + dependencies: + create-react-class "^15.6.0" + fbjs "^0.8.9" + loose-envify "^1.1.0" + object-assign "^4.1.0" + prop-types "^15.5.10" + +react@^16.4.2, react@^16.7.0: + version "16.7.0" + resolved "https://registry.yarnpkg.com/react/-/react-16.7.0.tgz#b674ec396b0a5715873b350446f7ea0802ab6381" + integrity sha512-StCz3QY8lxTb5cl2HJxjwLFOXPIFQp+p+hxQfc8WE0QiLfCtIlKj8/+5tjjKm8uSTlAW+fCPaavGFS06V9Ar3A== + dependencies: + loose-envify "^1.1.0" + object-assign "^4.1.1" + prop-types "^15.6.2" + scheduler "^0.12.0" + +read-pkg-up@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-1.0.1.tgz#9d63c13276c065918d57f002a57f40a1b643fb02" + integrity sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI= + dependencies: + find-up "^1.0.0" + read-pkg "^1.0.0" + +read-pkg-up@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-2.0.0.tgz#6b72a8048984e0c41e79510fd5e9fa99b3b549be" + integrity sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4= + dependencies: + find-up "^2.0.0" + read-pkg "^2.0.0" + +read-pkg@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-1.1.0.tgz#f5ffaa5ecd29cb31c0474bca7d756b6bb29e3f28" + integrity sha1-9f+qXs0pyzHAR0vKfXVra7KePyg= + dependencies: + load-json-file "^1.0.0" + normalize-package-data "^2.3.2" + path-type "^1.0.0" + +read-pkg@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-2.0.0.tgz#8ef1c0623c6a6db0dc6713c4bfac46332b2368f8" + integrity sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg= + dependencies: + load-json-file "^2.0.0" + normalize-package-data "^2.3.2" + path-type "^2.0.0" + +"readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.4, readable-stream@^2.0.6, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.0, readable-stream@^2.3.3, readable-stream@^2.3.5, readable-stream@^2.3.6, readable-stream@~2.3.6: + version "2.3.6" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.6.tgz#b11c27d88b8ff1fbe070643cf94b0c79ae1b0aaf" + integrity sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw== + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.3" + isarray "~1.0.0" + process-nextick-args "~2.0.0" + safe-buffer "~5.1.1" + string_decoder "~1.1.1" + util-deprecate "~1.0.1" + +readable-stream@1.0: + version "1.0.34" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.0.34.tgz#125820e34bc842d2f2aaafafe4c2916ee32c157c" + integrity sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw= + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.1" + isarray "0.0.1" + string_decoder "~0.10.x" + +readable-stream@^3.0.6: + version "3.1.1" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.1.1.tgz#ed6bbc6c5ba58b090039ff18ce670515795aeb06" + integrity sha512-DkN66hPyqDhnIQ6Jcsvx9bFjhw214O4poMBcIMgPVpQvNy9a0e0Uhg5SqySyDKAmUlwt8LonTBz1ezOnM8pUdA== + dependencies: + inherits "^2.0.3" + string_decoder "^1.1.1" + util-deprecate "^1.0.1" + +readdirp@^2.0.0: + version "2.2.1" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.2.1.tgz#0e87622a3325aa33e892285caf8b4e846529a525" + integrity sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ== + dependencies: + graceful-fs "^4.1.11" + micromatch "^3.1.10" + readable-stream "^2.0.2" + +realpath-native@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/realpath-native/-/realpath-native-1.0.2.tgz#cd51ce089b513b45cf9b1516c82989b51ccc6560" + integrity sha512-+S3zTvVt9yTntFrBpm7TQmQ3tzpCrnA1a/y+3cUHAc9ZR6aIjG0WNLR+Rj79QpJktY+VeW/TQtFlQ1bzsehI8g== + dependencies: + util.promisify "^1.0.0" + +"recompose@0.28.0 - 0.30.0": + version "0.30.0" + resolved "https://registry.yarnpkg.com/recompose/-/recompose-0.30.0.tgz#82773641b3927e8c7d24a0d87d65aeeba18aabd0" + integrity sha512-ZTrzzUDa9AqUIhRk4KmVFihH0rapdCSMFXjhHbNrjAWxBuUD/guYlyysMnuHjlZC/KRiOKRtB4jf96yYSkKE8w== + dependencies: + "@babel/runtime" "^7.0.0" + change-emitter "^0.1.2" + fbjs "^0.8.1" + hoist-non-react-statics "^2.3.1" + react-lifecycles-compat "^3.0.2" + symbol-observable "^1.0.4" + +recursive-readdir@2.2.2: + version "2.2.2" + resolved "https://registry.yarnpkg.com/recursive-readdir/-/recursive-readdir-2.2.2.tgz#9946fb3274e1628de6e36b2f6714953b4845094f" + integrity sha512-nRCcW9Sj7NuZwa2XvH9co8NPeXUBhZP7CRKJtU+cS6PW9FpCIFoI5ib0NT1ZrbNuPoRy0ylyCaUL8Gih4LSyFg== + dependencies: + minimatch "3.0.4" + +redux-saga@^0.16.0: + version "0.16.2" + resolved "https://registry.yarnpkg.com/redux-saga/-/redux-saga-0.16.2.tgz#993662e86bc945d8509ac2b8daba3a8c615cc971" + integrity sha512-iIjKnRThI5sKPEASpUvySemjzwqwI13e3qP7oLub+FycCRDysLSAOwt958niZW6LhxfmS6Qm1BzbU70w/Koc4w== + +redux@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/redux/-/redux-4.0.1.tgz#436cae6cc40fbe4727689d7c8fae44808f1bfef5" + integrity sha512-R7bAtSkk7nY6O/OYMVR9RiBI+XghjF9rlbl5806HJbQph0LJVHZrU5oaO4q70eUKiqMRqm4y07KLTlMZ2BlVmg== + dependencies: + loose-envify "^1.4.0" + symbol-observable "^1.2.0" + +regenerate-unicode-properties@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-7.0.0.tgz#107405afcc4a190ec5ed450ecaa00ed0cafa7a4c" + integrity sha512-s5NGghCE4itSlUS+0WUj88G6cfMVMmH8boTPNvABf8od+2dhT9WDlWu8n01raQAJZMOK8Ch6jSexaRO7swd6aw== + dependencies: + regenerate "^1.4.0" + +regenerate@^1.2.1, regenerate@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.0.tgz#4a856ec4b56e4077c557589cae85e7a4c8869a11" + integrity sha512-1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg== + +regenerator-runtime@^0.11.0: + version "0.11.1" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz#be05ad7f9bf7d22e056f9726cee5017fbf19e2e9" + integrity sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg== + +regenerator-runtime@^0.12.0: + version "0.12.1" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.12.1.tgz#fa1a71544764c036f8c49b13a08b2594c9f8a0de" + integrity sha512-odxIc1/vDlo4iZcfXqRYFj0vpXFNoGdKMAUieAlFYO6m/nl5e9KR/beGf41z4a1FI+aQgtjhuaSlDxQ0hmkrHg== + +regenerator-runtime@^0.13.2: + version "0.13.2" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.2.tgz#32e59c9a6fb9b1a4aff09b4930ca2d4477343447" + integrity sha512-S/TQAZJO+D3m9xeN1WTI8dLKBBiRgXBlTJvbWjCThHWZj9EvHK70Ff50/tYj2J/fvBY6JtFVwRuazHN2E7M9BA== + +regenerator-transform@^0.10.0: + version "0.10.1" + resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.10.1.tgz#1e4996837231da8b7f3cf4114d71b5691a0680dd" + integrity sha512-PJepbvDbuK1xgIgnau7Y90cwaAmO/LCLMI2mPvaXq2heGMR3aWW5/BQvYrhJ8jgmQjXewXvBjzfqKcVOmhjZ6Q== + dependencies: + babel-runtime "^6.18.0" + babel-types "^6.19.0" + private "^0.1.6" + +regenerator-transform@^0.13.3: + version "0.13.3" + resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.13.3.tgz#264bd9ff38a8ce24b06e0636496b2c856b57bcbb" + integrity sha512-5ipTrZFSq5vU2YoGoww4uaRVAK4wyYC4TSICibbfEPOruUu8FFP7ErV0BjmbIOEpn3O/k9na9UEdYR/3m7N6uA== + dependencies: + private "^0.1.6" + +regex-cache@^0.4.2: + version "0.4.4" + resolved "https://registry.yarnpkg.com/regex-cache/-/regex-cache-0.4.4.tgz#75bdc58a2a1496cec48a12835bc54c8d562336dd" + integrity sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ== + dependencies: + is-equal-shallow "^0.1.3" + +regex-not@^1.0.0, regex-not@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c" + integrity sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A== + dependencies: + extend-shallow "^3.0.2" + safe-regex "^1.1.0" + +regexpp@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-2.0.1.tgz#8d19d31cf632482b589049f8281f93dbcba4d07f" + integrity sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw== + +regexpu-core@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-1.0.0.tgz#86a763f58ee4d7c2f6b102e4764050de7ed90c6b" + integrity sha1-hqdj9Y7k18L2sQLkdkBQ3n7ZDGs= + dependencies: + regenerate "^1.2.1" + regjsgen "^0.2.0" + regjsparser "^0.1.4" + +regexpu-core@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-2.0.0.tgz#49d038837b8dcf8bfa5b9a42139938e6ea2ae240" + integrity sha1-SdA4g3uNz4v6W5pCE5k45uoq4kA= + dependencies: + regenerate "^1.2.1" + regjsgen "^0.2.0" + regjsparser "^0.1.4" + +regexpu-core@^4.1.3, regexpu-core@^4.2.0: + version "4.4.0" + resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-4.4.0.tgz#8d43e0d1266883969720345e70c275ee0aec0d32" + integrity sha512-eDDWElbwwI3K0Lo6CqbQbA6FwgtCz4kYTarrri1okfkRLZAqstU+B3voZBCjg8Fl6iq0gXrJG6MvRgLthfvgOA== + dependencies: + regenerate "^1.4.0" + regenerate-unicode-properties "^7.0.0" + regjsgen "^0.5.0" + regjsparser "^0.6.0" + unicode-match-property-ecmascript "^1.0.4" + unicode-match-property-value-ecmascript "^1.0.2" + +regjsgen@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.2.0.tgz#6c016adeac554f75823fe37ac05b92d5a4edb1f7" + integrity sha1-bAFq3qxVT3WCP+N6wFuS1aTtsfc= + +regjsgen@^0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.5.0.tgz#a7634dc08f89209c2049adda3525711fb97265dd" + integrity sha512-RnIrLhrXCX5ow/E5/Mh2O4e/oa1/jW0eaBKTSy3LaCj+M3Bqvm97GWDp2yUtzIs4LEn65zR2yiYGFqb2ApnzDA== + +regjsparser@^0.1.4: + version "0.1.5" + resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.1.5.tgz#7ee8f84dc6fa792d3fd0ae228d24bd949ead205c" + integrity sha1-fuj4Tcb6eS0/0K4ijSS9lJ6tIFw= + dependencies: + jsesc "~0.5.0" + +regjsparser@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.6.0.tgz#f1e6ae8b7da2bae96c99399b868cd6c933a2ba9c" + integrity sha512-RQ7YyokLiQBomUJuUG8iGVvkgOLxwyZM8k6d3q5SAXpg4r5TZJZigKFvC6PpD+qQ98bCDC5YelPeA3EucDoNeQ== + dependencies: + jsesc "~0.5.0" + +relateurl@0.2.x: + version "0.2.7" + resolved "https://registry.yarnpkg.com/relateurl/-/relateurl-0.2.7.tgz#54dbf377e51440aca90a4cd274600d3ff2d888a9" + integrity sha1-VNvzd+UUQKypCkzSdGANP/LYiKk= + +remove-trailing-separator@^1.0.1: + version "1.1.0" + resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef" + integrity sha1-wkvOKig62tW8P1jg1IJJuSN52O8= + +renderkid@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/renderkid/-/renderkid-2.0.2.tgz#12d310f255360c07ad8fde253f6c9e9de372d2aa" + integrity sha512-FsygIxevi1jSiPY9h7vZmBFUbAOcbYm9UwyiLNdVsLRs/5We9Ob5NMPbGYUTWiLq5L+ezlVdE0A8bbME5CWTpg== + dependencies: + css-select "^1.1.0" + dom-converter "~0.2" + htmlparser2 "~3.3.0" + strip-ansi "^3.0.0" + utila "^0.4.0" + +repeat-element@^1.1.2: + version "1.1.3" + resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.3.tgz#782e0d825c0c5a3bb39731f84efee6b742e6b1ce" + integrity sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g== + +repeat-string@^1.5.2, repeat-string@^1.6.1: + version "1.6.1" + resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" + integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc= + +repeating@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/repeating/-/repeating-2.0.1.tgz#5214c53a926d3552707527fbab415dbc08d06dda" + integrity sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo= + dependencies: + is-finite "^1.0.0" + +request-promise-core@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/request-promise-core/-/request-promise-core-1.1.1.tgz#3eee00b2c5aa83239cfb04c5700da36f81cd08b6" + integrity sha1-Pu4AssWqgyOc+wTFcA2jb4HNCLY= + dependencies: + lodash "^4.13.1" + +request-promise-native@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/request-promise-native/-/request-promise-native-1.0.5.tgz#5281770f68e0c9719e5163fd3fab482215f4fda5" + integrity sha1-UoF3D2jgyXGeUWP9P6tIIhX0/aU= + dependencies: + request-promise-core "1.1.1" + stealthy-require "^1.1.0" + tough-cookie ">=2.3.3" + +request@^2.79.0, request@^2.87.0, request@^2.88.0: + version "2.88.0" + resolved "https://registry.yarnpkg.com/request/-/request-2.88.0.tgz#9c2fca4f7d35b592efe57c7f0a55e81052124fef" + integrity sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg== + dependencies: + aws-sign2 "~0.7.0" + aws4 "^1.8.0" + caseless "~0.12.0" + combined-stream "~1.0.6" + extend "~3.0.2" + forever-agent "~0.6.1" + form-data "~2.3.2" + har-validator "~5.1.0" + http-signature "~1.2.0" + is-typedarray "~1.0.0" + isstream "~0.1.2" + json-stringify-safe "~5.0.1" + mime-types "~2.1.19" + oauth-sign "~0.9.0" + performance-now "^2.1.0" + qs "~6.5.2" + safe-buffer "^5.1.2" + tough-cookie "~2.4.3" + tunnel-agent "^0.6.0" + uuid "^3.3.2" + +require-directory@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" + integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I= + +require-from-string@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909" + integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw== + +require-main-filename@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1" + integrity sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE= + +require-uncached@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/require-uncached/-/require-uncached-1.0.3.tgz#4e0d56d6c9662fd31e43011c4b95aa49955421d3" + integrity sha1-Tg1W1slmL9MeQwEcS5WqSZVUIdM= + dependencies: + caller-path "^0.1.0" + resolve-from "^1.0.0" + +requires-port@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" + integrity sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8= + +resolve-cwd@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-2.0.0.tgz#00a9f7387556e27038eae232caa372a6a59b665a" + integrity sha1-AKn3OHVW4nA46uIyyqNypqWbZlo= + dependencies: + resolve-from "^3.0.0" + +resolve-dir@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/resolve-dir/-/resolve-dir-1.0.1.tgz#79a40644c362be82f26effe739c9bb5382046f43" + integrity sha1-eaQGRMNivoLybv/nOcm7U4IEb0M= + dependencies: + expand-tilde "^2.0.0" + global-modules "^1.0.0" + +resolve-from@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-1.0.1.tgz#26cbfe935d1aeeeabb29bc3fe5aeb01e93d44226" + integrity sha1-Jsv+k10a7uq7Kbw/5a6wHpPUQiY= + +resolve-from@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-3.0.0.tgz#b22c7af7d9d6881bc8b6e653335eebcb0a188748" + integrity sha1-six699nWiBvItuZTM17rywoYh0g= + +resolve-pathname@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/resolve-pathname/-/resolve-pathname-2.2.0.tgz#7e9ae21ed815fd63ab189adeee64dc831eefa879" + integrity sha512-bAFz9ld18RzJfddgrO2e/0S2O81710++chRMUxHjXOYKF6jTAMrUNZrEZ1PvV0zlhfjidm08iRPdTLPno1FuRg== + +resolve-url@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" + integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo= + +resolve@1.1.7: + version "1.1.7" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b" + integrity sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs= + +resolve@1.8.1: + version "1.8.1" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.8.1.tgz#82f1ec19a423ac1fbd080b0bab06ba36e84a7a26" + integrity sha512-AicPrAC7Qu1JxPCZ9ZgCZlY35QgFnNqc+0LtbRNxnVw4TXvjQ72wnuL9JQcEBgXkI9JM8MsT9kaQoHcpCRJOYA== + dependencies: + path-parse "^1.0.5" + +resolve@^1.3.2, resolve@^1.5.0, resolve@^1.6.0, resolve@^1.8.1: + version "1.9.0" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.9.0.tgz#a14c6fdfa8f92a7df1d996cb7105fa744658ea06" + integrity sha512-TZNye00tI67lwYvzxCxHGjwTNlUV70io54/Ed4j6PscB8xVfuBJpRenI/o6dVk0cY0PYTY27AgCoGGxRnYuItQ== + dependencies: + path-parse "^1.0.6" + +resolve@~1.7.1: + version "1.7.1" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.7.1.tgz#aadd656374fd298aee895bc026b8297418677fd3" + integrity sha512-c7rwLofp8g1U+h1KNyHL/jicrKg1Ek4q+Lr33AL65uZTinUZHe30D5HlyN5V9NW0JX1D5dXQ4jqW5l7Sy/kGfw== + dependencies: + path-parse "^1.0.5" + +restore-cursor@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-2.0.0.tgz#9f7ee287f82fd326d4fd162923d62129eee0dfaf" + integrity sha1-n37ih/gv0ybU/RYpI9YhKe7g368= + dependencies: + onetime "^2.0.0" + signal-exit "^3.0.2" + +resumer@~0.0.0: + version "0.0.0" + resolved "https://registry.yarnpkg.com/resumer/-/resumer-0.0.0.tgz#f1e8f461e4064ba39e82af3cdc2a8c893d076759" + integrity sha1-8ej0YeQGS6Oegq883CqMiT0HZ1k= + dependencies: + through "~2.3.4" + +ret@~0.1.10: + version "0.1.15" + resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" + integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg== + +rgb-regex@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/rgb-regex/-/rgb-regex-1.0.1.tgz#c0e0d6882df0e23be254a475e8edd41915feaeb1" + integrity sha1-wODWiC3w4jviVKR16O3UGRX+rrE= + +rgba-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/rgba-regex/-/rgba-regex-1.0.0.tgz#43374e2e2ca0968b0ef1523460b7d730ff22eeb3" + integrity sha1-QzdOLiyglosO8VI0YLfXMP8i7rM= + +rimraf@2, rimraf@^2.2.8, rimraf@^2.5.4, rimraf@^2.6.1, rimraf@^2.6.2, rimraf@~2.6.2: + version "2.6.3" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.3.tgz#b2d104fe0d8fb27cf9e0a1cda8262dd3833c6cab" + integrity sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA== + dependencies: + glob "^7.1.3" + +ripemd160@^2.0.0, ripemd160@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.2.tgz#a1c1a6f624751577ba5d07914cbc92850585890c" + integrity sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA== + dependencies: + hash-base "^3.0.0" + inherits "^2.0.1" + +rlp@^2.0.0: + version "2.2.1" + resolved "https://registry.yarnpkg.com/rlp/-/rlp-2.2.1.tgz#9cacf53ad2579163cc56fba64b1f4336f1f2fa46" + integrity sha512-nqB/qy+YjXdp/zj1CjCiDwfLMBPv/XFDol0ir/7O/+Ix90++rvi+QoK1CDJcn8JoqCu2WrPPeRucu4qyIDzALg== + dependencies: + safe-buffer "^5.1.1" + +rsvp@^3.3.3: + version "3.6.2" + resolved "https://registry.yarnpkg.com/rsvp/-/rsvp-3.6.2.tgz#2e96491599a96cde1b515d5674a8f7a91452926a" + integrity sha512-OfWGQTb9vnwRjwtA2QwpG2ICclHC3pgXZO5xt8H2EfgDquO0qVdSb5T88L4qJVAEugbS56pAuV4XZM58UX8ulw== + +run-async@^2.2.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.3.0.tgz#0371ab4ae0bdd720d4166d7dfda64ff7a445a6c0" + integrity sha1-A3GrSuC91yDUFm19/aZP96RFpsA= + dependencies: + is-promise "^2.1.0" + +run-queue@^1.0.0, run-queue@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/run-queue/-/run-queue-1.0.3.tgz#e848396f057d223f24386924618e25694161ec47" + integrity sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec= + dependencies: + aproba "^1.1.1" + +rxjs@^6.1.0: + version "6.3.3" + resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.3.3.tgz#3c6a7fa420e844a81390fb1158a9ec614f4bad55" + integrity sha512-JTWmoY9tWCs7zvIk/CvRjhjGaOd+OVBM987mxFo+OW66cGpdKjZcpmc74ES1sB//7Kl/PAe8+wEakuhG4pcgOw== + dependencies: + tslib "^1.9.0" + +safe-buffer@5.1.2, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: + version "5.1.2" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" + integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== + +safe-event-emitter@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/safe-event-emitter/-/safe-event-emitter-1.0.1.tgz#5b692ef22329ed8f69fdce607e50ca734f6f20af" + integrity sha512-e1wFe99A91XYYxoQbcq2ZJUWurxEyP8vfz7A7vuUe1s95q8r5ebraVaA1BukYJcpM6V16ugWoD9vngi8Ccu5fg== + dependencies: + events "^3.0.0" + +safe-regex@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e" + integrity sha1-QKNmnzsHfR6UPURinhV91IAjvy4= + dependencies: + ret "~0.1.10" + +"safer-buffer@>= 2.1.2 < 3", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0: + version "2.1.2" + resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" + integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== + +sane@^2.0.0: + version "2.5.2" + resolved "https://registry.yarnpkg.com/sane/-/sane-2.5.2.tgz#b4dc1861c21b427e929507a3e751e2a2cb8ab3fa" + integrity sha1-tNwYYcIbQn6SlQej51HiosuKs/o= + dependencies: + anymatch "^2.0.0" + capture-exit "^1.2.0" + exec-sh "^0.2.0" + fb-watchman "^2.0.0" + micromatch "^3.1.4" + minimist "^1.1.1" + walker "~1.0.5" + watch "~0.18.0" + optionalDependencies: + fsevents "^1.2.3" + +sass-loader@7.1.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/sass-loader/-/sass-loader-7.1.0.tgz#16fd5138cb8b424bf8a759528a1972d72aad069d" + integrity sha512-+G+BKGglmZM2GUSfT9TLuEp6tzehHPjAMoRRItOojWIqIGPloVCMhNIQuG639eJ+y033PaGTSjLaTHts8Kw79w== + dependencies: + clone-deep "^2.0.1" + loader-utils "^1.0.1" + lodash.tail "^4.1.1" + neo-async "^2.5.0" + pify "^3.0.0" + semver "^5.5.0" + +sax@^1.2.4, sax@~1.2.4: + version "1.2.4" + resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" + integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== + +saxes@^3.1.4: + version "3.1.4" + resolved "https://registry.yarnpkg.com/saxes/-/saxes-3.1.4.tgz#4ad5c53eb085ac0570ea1071a07aaf22ad29cebd" + integrity sha512-GVZmLJnkS4Vl8Pe9o4nc5ALZ615VOVxCmea8Cs0l+8GZw3RQ5XGOSUomIUfuZuk4Todo44v4y+HY1EATkDDiZg== + dependencies: + xmlchars "^1.3.1" + +scheduler@^0.12.0: + version "0.12.0" + resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.12.0.tgz#8ab17699939c0aedc5a196a657743c496538647b" + integrity sha512-t7MBR28Akcp4Jm+QoR63XgAi9YgCUmgvDHqf5otgAj4QvdoBE4ImCX0ffehefePPG+aitiYHp0g/mW6s4Tp+dw== + dependencies: + loose-envify "^1.1.0" + object-assign "^4.1.1" + +schema-utils@^0.4.4, schema-utils@^0.4.5: + version "0.4.7" + resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-0.4.7.tgz#ba74f597d2be2ea880131746ee17d0a093c68187" + integrity sha512-v/iwU6wvwGK8HbU9yi3/nhGzP0yGSuhQMzL6ySiec1FSrZZDkhm4noOSWzrNFo/jEc+SJY6jRTwuwbSXJPDUnQ== + dependencies: + ajv "^6.1.0" + ajv-keywords "^3.1.0" + +schema-utils@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-1.0.0.tgz#0b79a93204d7b600d4b2850d1f66c2a34951c770" + integrity sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g== + dependencies: + ajv "^6.1.0" + ajv-errors "^1.0.0" + ajv-keywords "^3.1.0" + +scrypt-js@2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/scrypt-js/-/scrypt-js-2.0.3.tgz#bb0040be03043da9a012a2cea9fc9f852cfc87d4" + integrity sha1-uwBAvgMEPamgEqLOqfyfhSz8h9Q= + +scrypt.js@0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/scrypt.js/-/scrypt.js-0.2.0.tgz#af8d1465b71e9990110bedfc593b9479e03a8ada" + integrity sha1-r40UZbcemZARC+38WTuUeeA6ito= + dependencies: + scrypt "^6.0.2" + scryptsy "^1.2.1" + +scrypt@^6.0.2: + version "6.0.3" + resolved "https://registry.yarnpkg.com/scrypt/-/scrypt-6.0.3.tgz#04e014a5682b53fa50c2d5cce167d719c06d870d" + integrity sha1-BOAUpWgrU/pQwtXM4WfXGcBthw0= + dependencies: + nan "^2.0.8" + +scryptsy@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/scryptsy/-/scryptsy-1.2.1.tgz#a3225fa4b2524f802700761e2855bdf3b2d92163" + integrity sha1-oyJfpLJST4AnAHYeKFW987LZIWM= + dependencies: + pbkdf2 "^3.0.3" + +secp256k1@^3.0.1: + version "3.6.1" + resolved "https://registry.yarnpkg.com/secp256k1/-/secp256k1-3.6.1.tgz#f0475d42096218ff00e45a127242abdff9285335" + integrity sha512-utLpWv4P4agEw7hakR73wlWX0NBmC5t/vkJ0TAfTyvETAUzo0tm6aFKPYetVYRaVubxMeWm5Ekv9ETwOgcDCqw== + dependencies: + bindings "^1.2.1" + bip66 "^1.1.3" + bn.js "^4.11.3" + create-hash "^1.1.2" + drbg.js "^1.0.1" + elliptic "^6.2.3" + nan "^2.2.1" + safe-buffer "^5.1.0" + +seek-bzip@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/seek-bzip/-/seek-bzip-1.0.5.tgz#cfe917cb3d274bcffac792758af53173eb1fabdc" + integrity sha1-z+kXyz0nS8/6x5J1ivUxc+sfq9w= + dependencies: + commander "~2.8.1" + +select-hose@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/select-hose/-/select-hose-2.0.0.tgz#625d8658f865af43ec962bfc376a37359a4994ca" + integrity sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo= + +selfsigned@^1.9.1: + version "1.10.4" + resolved "https://registry.yarnpkg.com/selfsigned/-/selfsigned-1.10.4.tgz#cdd7eccfca4ed7635d47a08bf2d5d3074092e2cd" + integrity sha512-9AukTiDmHXGXWtWjembZ5NDmVvP2695EtpgbCsxCa68w3c88B+alqbmZ4O3hZ4VWGXeGWzEVdvqgAJD8DQPCDw== + dependencies: + node-forge "0.7.5" + +"semver@2 || 3 || 4 || 5", semver@^5.3.0, semver@^5.4.1, semver@^5.5.0, semver@^5.5.1, semver@^5.6.0: + version "5.6.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.6.0.tgz#7e74256fbaa49c75aa7c7a205cc22799cac80004" + integrity sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg== + +send@0.16.2: + version "0.16.2" + resolved "https://registry.yarnpkg.com/send/-/send-0.16.2.tgz#6ecca1e0f8c156d141597559848df64730a6bbc1" + integrity sha512-E64YFPUssFHEFBvpbbjr44NCLtI1AohxQ8ZSiJjQLskAdKuriYEP6VyGEsRDH8ScozGpkaX1BGvhanqCwkcEZw== + dependencies: + debug "2.6.9" + depd "~1.1.2" + destroy "~1.0.4" + encodeurl "~1.0.2" + escape-html "~1.0.3" + etag "~1.8.1" + fresh "0.5.2" + http-errors "~1.6.2" + mime "1.4.1" + ms "2.0.0" + on-finished "~2.3.0" + range-parser "~1.2.0" + statuses "~1.4.0" + +serialize-javascript@^1.4.0: + version "1.6.1" + resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-1.6.1.tgz#4d1f697ec49429a847ca6f442a2a755126c4d879" + integrity sha512-A5MOagrPFga4YaKQSWHryl7AXvbQkEqpw4NNYMTNYUNV51bA8ABHgYFpqKx+YFFrw59xMV1qGH1R4AgoNIVgCw== + +serve-index@^1.7.2: + version "1.9.1" + resolved "https://registry.yarnpkg.com/serve-index/-/serve-index-1.9.1.tgz#d3768d69b1e7d82e5ce050fff5b453bea12a9239" + integrity sha1-03aNabHn2C5c4FD/9bRTvqEqkjk= + dependencies: + accepts "~1.3.4" + batch "0.6.1" + debug "2.6.9" + escape-html "~1.0.3" + http-errors "~1.6.2" + mime-types "~2.1.17" + parseurl "~1.3.2" + +serve-static@1.13.2: + version "1.13.2" + resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.13.2.tgz#095e8472fd5b46237db50ce486a43f4b86c6cec1" + integrity sha512-p/tdJrO4U387R9oMjb1oj7qSMaMfmOyd4j9hOFoxZe2baQszgHcSWjuya/CiT5kgZZKRudHNOA0pYXOl8rQ5nw== + dependencies: + encodeurl "~1.0.2" + escape-html "~1.0.3" + parseurl "~1.3.2" + send "0.16.2" + +servify@^0.1.12: + version "0.1.12" + resolved "https://registry.yarnpkg.com/servify/-/servify-0.1.12.tgz#142ab7bee1f1d033b66d0707086085b17c06db95" + integrity sha512-/xE6GvsKKqyo1BAY+KxOWXcLpPsUUyji7Qg3bVD7hh1eRze5bR1uYiuDA/k3Gof1s9BTzQZEJK8sNcNGFIzeWw== + dependencies: + body-parser "^1.16.0" + cors "^2.8.1" + express "^4.14.0" + request "^2.79.0" + xhr "^2.3.3" + +set-blocking@^2.0.0, set-blocking@~2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" + integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc= + +set-immediate-shim@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz#4b2b1b27eb808a9f8dcc481a58e5e56f599f3f61" + integrity sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E= + +set-value@^0.4.3: + version "0.4.3" + resolved "https://registry.yarnpkg.com/set-value/-/set-value-0.4.3.tgz#7db08f9d3d22dc7f78e53af3c3bf4666ecdfccf1" + integrity sha1-fbCPnT0i3H945Trzw79GZuzfzPE= + dependencies: + extend-shallow "^2.0.1" + is-extendable "^0.1.1" + is-plain-object "^2.0.1" + to-object-path "^0.3.0" + +set-value@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/set-value/-/set-value-2.0.0.tgz#71ae4a88f0feefbbf52d1ea604f3fb315ebb6274" + integrity sha512-hw0yxk9GT/Hr5yJEYnHNKYXkIA8mVJgd9ditYZCe16ZczcaELYYcfvaXesNACk2O8O0nTiPQcQhGUQj8JLzeeg== + dependencies: + extend-shallow "^2.0.1" + is-extendable "^0.1.1" + is-plain-object "^2.0.3" + split-string "^3.0.1" + +setimmediate@1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.4.tgz#20e81de622d4a02588ce0c8da8973cbcf1d3138f" + integrity sha1-IOgd5iLUoCWIzgyNqJc8vPHTE48= + +setimmediate@^1.0.4, setimmediate@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" + integrity sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU= + +setprototypeof@1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.0.tgz#d0bd85536887b6fe7c0d818cb962d9d91c54e656" + integrity sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ== + +sha.js@^2.4.0, sha.js@^2.4.8: + version "2.4.11" + resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.11.tgz#37a5cf0b81ecbc6943de109ba2960d1b26584ae7" + integrity sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ== + dependencies: + inherits "^2.0.1" + safe-buffer "^5.0.1" + +sha3@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/sha3/-/sha3-1.2.2.tgz#a66c5098de4c25bc88336ec8b4817d005bca7ba9" + integrity sha1-pmxQmN5MJbyIM27ItIF9AFvKe6k= + dependencies: + nan "2.10.0" + +shallow-clone@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/shallow-clone/-/shallow-clone-0.1.2.tgz#5909e874ba77106d73ac414cfec1ffca87d97060" + integrity sha1-WQnodLp3EG1zrEFM/sH/yofZcGA= + dependencies: + is-extendable "^0.1.1" + kind-of "^2.0.1" + lazy-cache "^0.2.3" + mixin-object "^2.0.1" + +shallow-clone@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/shallow-clone/-/shallow-clone-1.0.0.tgz#4480cd06e882ef68b2ad88a3ea54832e2c48b571" + integrity sha512-oeXreoKR/SyNJtRJMAKPDSvd28OqEwG4eR/xc856cRGBII7gX9lvAqDxusPm0846z/w/hWYjI1NpKwJ00NHzRA== + dependencies: + is-extendable "^0.1.1" + kind-of "^5.0.0" + mixin-object "^2.0.1" + +shebang-command@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" + integrity sha1-RKrGW2lbAzmJaMOfNj/uXer98eo= + dependencies: + shebang-regex "^1.0.0" + +shebang-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" + integrity sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM= + +shell-quote@1.6.1: + version "1.6.1" + resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.6.1.tgz#f4781949cce402697127430ea3b3c5476f481767" + integrity sha1-9HgZSczkAmlxJ0MOo7PFR29IF2c= + dependencies: + array-filter "~0.0.0" + array-map "~0.0.0" + array-reduce "~0.0.0" + jsonify "~0.0.0" + +shellwords@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/shellwords/-/shellwords-0.1.1.tgz#d6b9181c1a48d397324c84871efbcfc73fc0654b" + integrity sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww== + +signal-exit@^3.0.0, signal-exit@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" + integrity sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0= + +simple-concat@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/simple-concat/-/simple-concat-1.0.0.tgz#7344cbb8b6e26fb27d66b2fc86f9f6d5997521c6" + integrity sha1-c0TLuLbib7J9ZrL8hvn21Zl1IcY= + +simple-get@^2.7.0: + version "2.8.1" + resolved "https://registry.yarnpkg.com/simple-get/-/simple-get-2.8.1.tgz#0e22e91d4575d87620620bc91308d57a77f44b5d" + integrity sha512-lSSHRSw3mQNUGPAYRqo7xy9dhKmxFXIjLjp4KHpf99GEH2VH7C3AM+Qfx6du6jhfUi6Vm7XnbEVEf7Wb6N8jRw== + dependencies: + decompress-response "^3.3.0" + once "^1.3.1" + simple-concat "^1.0.0" + +simple-swizzle@^0.2.2: + version "0.2.2" + resolved "https://registry.yarnpkg.com/simple-swizzle/-/simple-swizzle-0.2.2.tgz#a4da6b635ffcccca33f70d17cb92592de95e557a" + integrity sha1-pNprY1/8zMoz9w0Xy5JZLeleVXo= + dependencies: + is-arrayish "^0.3.1" + +sisteransi@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-0.1.1.tgz#5431447d5f7d1675aac667ccd0b865a4994cb3ce" + integrity sha512-PmGOd02bM9YO5ifxpw36nrNMBTptEtfRl4qUYl9SndkolplkrZZOW7PGHjrZL53QvMVj9nQ+TKqUnRsw4tJa4g== + +slash@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/slash/-/slash-1.0.0.tgz#c41f2f6c39fc16d1cd17ad4b5d896114ae470d55" + integrity sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU= + +slice-ansi@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-1.0.0.tgz#044f1a49d8842ff307aad6b505ed178bd950134d" + integrity sha512-POqxBK6Lb3q6s047D/XsDVNPnF9Dl8JSaqe9h9lURl0OdNqy/ujDrOiIHtsqXMGbWWTIomRzAMaTyawAU//Reg== + dependencies: + is-fullwidth-code-point "^2.0.0" + +snapdragon-node@^2.0.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b" + integrity sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw== + dependencies: + define-property "^1.0.0" + isobject "^3.0.0" + snapdragon-util "^3.0.1" + +snapdragon-util@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/snapdragon-util/-/snapdragon-util-3.0.1.tgz#f956479486f2acd79700693f6f7b805e45ab56e2" + integrity sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ== + dependencies: + kind-of "^3.2.0" + +snapdragon@^0.8.1: + version "0.8.2" + resolved "https://registry.yarnpkg.com/snapdragon/-/snapdragon-0.8.2.tgz#64922e7c565b0e14204ba1aa7d6964278d25182d" + integrity sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg== + dependencies: + base "^0.11.1" + debug "^2.2.0" + define-property "^0.2.5" + extend-shallow "^2.0.1" + map-cache "^0.2.2" + source-map "^0.5.6" + source-map-resolve "^0.5.0" + use "^3.1.0" + +sockjs-client@1.1.5: + version "1.1.5" + resolved "https://registry.yarnpkg.com/sockjs-client/-/sockjs-client-1.1.5.tgz#1bb7c0f7222c40f42adf14f4442cbd1269771a83" + integrity sha1-G7fA9yIsQPQq3xT0RCy9Eml3GoM= + dependencies: + debug "^2.6.6" + eventsource "0.1.6" + faye-websocket "~0.11.0" + inherits "^2.0.1" + json3 "^3.3.2" + url-parse "^1.1.8" + +sockjs-client@1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/sockjs-client/-/sockjs-client-1.3.0.tgz#12fc9d6cb663da5739d3dc5fb6e8687da95cb177" + integrity sha512-R9jxEzhnnrdxLCNln0xg5uGHqMnkhPSTzUZH2eXcR03S/On9Yvoq2wyUZILRUhZCNVu2PmwWVoyuiPz8th8zbg== + dependencies: + debug "^3.2.5" + eventsource "^1.0.7" + faye-websocket "~0.11.1" + inherits "^2.0.3" + json3 "^3.3.2" + url-parse "^1.4.3" + +sockjs@0.3.19: + version "0.3.19" + resolved "https://registry.yarnpkg.com/sockjs/-/sockjs-0.3.19.tgz#d976bbe800af7bd20ae08598d582393508993c0d" + integrity sha512-V48klKZl8T6MzatbLlzzRNhMepEys9Y4oGFpypBFFn1gLI/QQ9HtLLyWJNbPlwGLelOVOEijUbTTJeLLI59jLw== + dependencies: + faye-websocket "^0.10.0" + uuid "^3.0.1" + +source-list-map@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-2.0.1.tgz#3993bd873bfc48479cca9ea3a547835c7c154b34" + integrity sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw== + +source-map-resolve@^0.5.0: + version "0.5.2" + resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.2.tgz#72e2cc34095543e43b2c62b2c4c10d4a9054f259" + integrity sha512-MjqsvNwyz1s0k81Goz/9vRBe9SZdB09Bdw+/zYyO+3CuPk6fouTaxscHkgtE8jKvf01kVfl8riHzERQ/kefaSA== + dependencies: + atob "^2.1.1" + decode-uri-component "^0.2.0" + resolve-url "^0.2.1" + source-map-url "^0.4.0" + urix "^0.1.0" + +source-map-support@^0.4.15: + version "0.4.18" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.4.18.tgz#0286a6de8be42641338594e97ccea75f0a2c585f" + integrity sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA== + dependencies: + source-map "^0.5.6" + +source-map-support@^0.5.6, source-map-support@~0.5.6: + version "0.5.9" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.9.tgz#41bc953b2534267ea2d605bccfa7bfa3111ced5f" + integrity sha512-gR6Rw4MvUlYy83vP0vxoVNzM6t8MUXqNuRsuBmBHQDu1Fh6X015FrLdgoDKcNdkwGubozq0P4N0Q37UyFVr1EA== + dependencies: + buffer-from "^1.0.0" + source-map "^0.6.0" + +source-map-url@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.0.tgz#3e935d7ddd73631b97659956d55128e87b5084a3" + integrity sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM= + +source-map@^0.5.0, source-map@^0.5.3, source-map@^0.5.6, source-map@^0.5.7: + version "0.5.7" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" + integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= + +source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.0, source-map@~0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" + integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== + +spdx-correct@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.0.tgz#fb83e504445268f154b074e218c87c003cd31df4" + integrity sha512-lr2EZCctC2BNR7j7WzJ2FpDznxky1sjfxvvYEyzxNyb6lZXHODmEoJeFu4JupYlkfha1KZpJyoqiJ7pgA1qq8Q== + dependencies: + spdx-expression-parse "^3.0.0" + spdx-license-ids "^3.0.0" + +spdx-exceptions@^2.1.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz#2ea450aee74f2a89bfb94519c07fcd6f41322977" + integrity sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA== + +spdx-expression-parse@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz#99e119b7a5da00e05491c9fa338b7904823b41d0" + integrity sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg== + dependencies: + spdx-exceptions "^2.1.0" + spdx-license-ids "^3.0.0" + +spdx-license-ids@^3.0.0: + version "3.0.3" + resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.3.tgz#81c0ce8f21474756148bbb5f3bfc0f36bf15d76e" + integrity sha512-uBIcIl3Ih6Phe3XHK1NqboJLdGfwr1UN3k6wSD1dZpmPsIkb8AGNbZYJ1fOBk834+Gxy8rpfDxrS6XLEMZMY2g== + +spdy-transport@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/spdy-transport/-/spdy-transport-3.0.0.tgz#00d4863a6400ad75df93361a1608605e5dcdcf31" + integrity sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw== + dependencies: + debug "^4.1.0" + detect-node "^2.0.4" + hpack.js "^2.1.6" + obuf "^1.1.2" + readable-stream "^3.0.6" + wbuf "^1.7.3" + +spdy@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/spdy/-/spdy-4.0.0.tgz#81f222b5a743a329aa12cea6a390e60e9b613c52" + integrity sha512-ot0oEGT/PGUpzf/6uk4AWLqkq+irlqHXkrdbk51oWONh3bxQmBuljxPNl66zlRRcIJStWq0QkLUCPOPjgjvU0Q== + dependencies: + debug "^4.1.0" + handle-thing "^2.0.0" + http-deceiver "^1.2.7" + select-hose "^2.0.0" + spdy-transport "^3.0.0" + +split-string@^3.0.1, split-string@^3.0.2: + version "3.1.0" + resolved "https://registry.yarnpkg.com/split-string/-/split-string-3.1.0.tgz#7cb09dda3a86585705c64b39a6466038682e8fe2" + integrity sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw== + dependencies: + extend-shallow "^3.0.0" + +sprintf-js@~1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" + integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw= + +sshpk@^1.7.0: + version "1.16.0" + resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.16.0.tgz#1d4963a2fbffe58050aa9084ca20be81741c07de" + integrity sha512-Zhev35/y7hRMcID/upReIvRse+I9SVhyVre/KTJSJQWMz3C3+G+HpO7m1wK/yckEtujKZ7dS4hkVxAnmHaIGVQ== + dependencies: + asn1 "~0.2.3" + assert-plus "^1.0.0" + bcrypt-pbkdf "^1.0.0" + dashdash "^1.12.0" + ecc-jsbn "~0.1.1" + getpass "^0.1.1" + jsbn "~0.1.0" + safer-buffer "^2.0.2" + tweetnacl "~0.14.0" + +ssri@^5.2.4: + version "5.3.0" + resolved "https://registry.yarnpkg.com/ssri/-/ssri-5.3.0.tgz#ba3872c9c6d33a0704a7d71ff045e5ec48999d06" + integrity sha512-XRSIPqLij52MtgoQavH/x/dU1qVKtWUAAZeOHsR9c2Ddi4XerFy3mc1alf+dLJKl9EUIm/Ht+EowFkTUOA6GAQ== + dependencies: + safe-buffer "^5.1.1" + +ssri@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/ssri/-/ssri-6.0.1.tgz#2a3c41b28dd45b62b63676ecb74001265ae9edd8" + integrity sha512-3Wge10hNcT1Kur4PDFwEieXSCMCJs/7WvSACcrMYrNp+b8kDL1/0wJch5Ni2WrtwEa2IO8OsVfeKIciKCDx/QA== + dependencies: + figgy-pudding "^3.5.1" + +stable@~0.1.6: + version "0.1.8" + resolved "https://registry.yarnpkg.com/stable/-/stable-0.1.8.tgz#836eb3c8382fe2936feaf544631017ce7d47a3cf" + integrity sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w== + +stack-utils@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-1.0.2.tgz#33eba3897788558bebfc2db059dc158ec36cebb8" + integrity sha512-MTX+MeG5U994cazkjd/9KNAapsHnibjMLnfXodlkXw76JEea0UiNzrqidzo1emMwk7w5Qhc9jd4Bn9TBb1MFwA== + +static-extend@^0.1.1: + version "0.1.2" + resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6" + integrity sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY= + dependencies: + define-property "^0.2.5" + object-copy "^0.1.0" + +"statuses@>= 1.4.0 < 2": + version "1.5.0" + resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" + integrity sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow= + +statuses@~1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.4.0.tgz#bb73d446da2796106efcc1b601a253d6c46bd087" + integrity sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew== + +stealthy-require@^1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/stealthy-require/-/stealthy-require-1.1.1.tgz#35b09875b4ff49f26a777e509b3090a3226bf24b" + integrity sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks= + +stream-browserify@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-2.0.1.tgz#66266ee5f9bdb9940a4e4514cafb43bb71e5c9db" + integrity sha1-ZiZu5fm9uZQKTkUUyvtDu3Hlyds= + dependencies: + inherits "~2.0.1" + readable-stream "^2.0.2" + +stream-each@^1.1.0: + version "1.2.3" + resolved "https://registry.yarnpkg.com/stream-each/-/stream-each-1.2.3.tgz#ebe27a0c389b04fbcc233642952e10731afa9bae" + integrity sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw== + dependencies: + end-of-stream "^1.1.0" + stream-shift "^1.0.0" + +stream-http@^2.7.2: + version "2.8.3" + resolved "https://registry.yarnpkg.com/stream-http/-/stream-http-2.8.3.tgz#b2d242469288a5a27ec4fe8933acf623de6514fc" + integrity sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw== + dependencies: + builtin-status-codes "^3.0.0" + inherits "^2.0.1" + readable-stream "^2.3.6" + to-arraybuffer "^1.0.0" + xtend "^4.0.0" + +stream-shift@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.0.tgz#d5c752825e5367e786f78e18e445ea223a155952" + integrity sha1-1cdSgl5TZ+eG944Y5EXqIjoVWVI= + +strict-uri-encode@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz#279b225df1d582b1f54e65addd4352e18faa0713" + integrity sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM= + +string-length@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/string-length/-/string-length-2.0.0.tgz#d40dbb686a3ace960c1cffca562bf2c45f8363ed" + integrity sha1-1A27aGo6zpYMHP/KVivyxF+DY+0= + dependencies: + astral-regex "^1.0.0" + strip-ansi "^4.0.0" + +string-width@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" + integrity sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M= + dependencies: + code-point-at "^1.0.0" + is-fullwidth-code-point "^1.0.0" + strip-ansi "^3.0.0" + +"string-width@^1.0.2 || 2", string-width@^2.0.0, string-width@^2.1.0, string-width@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" + integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== + dependencies: + is-fullwidth-code-point "^2.0.0" + strip-ansi "^4.0.0" + +string.prototype.trim@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/string.prototype.trim/-/string.prototype.trim-1.1.2.tgz#d04de2c89e137f4d7d206f086b5ed2fae6be8cea" + integrity sha1-0E3iyJ4Tf019IG8Ia17S+ua+jOo= + dependencies: + define-properties "^1.1.2" + es-abstract "^1.5.0" + function-bind "^1.0.2" + +string_decoder@^1.0.0, string_decoder@^1.1.1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.2.0.tgz#fe86e738b19544afe70469243b2a1ee9240eae8d" + integrity sha512-6YqyX6ZWEYguAxgZzHGL7SsCeGx3V2TtOTqZz1xSTSWnqsbWwbptafNyvf/ACquZUXV3DANr5BDIwNYe1mN42w== + dependencies: + safe-buffer "~5.1.0" + +string_decoder@~0.10.x: + version "0.10.31" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94" + integrity sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ= + +string_decoder@~1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" + integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== + dependencies: + safe-buffer "~5.1.0" + +stringify-object@^3.2.2: + version "3.3.0" + resolved "https://registry.yarnpkg.com/stringify-object/-/stringify-object-3.3.0.tgz#703065aefca19300d3ce88af4f5b3956d7556629" + integrity sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw== + dependencies: + get-own-enumerable-property-symbols "^3.0.0" + is-obj "^1.0.1" + is-regexp "^1.0.0" + +strip-ansi@4.0.0, strip-ansi@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f" + integrity sha1-qEeQIusaw2iocTibY1JixQXuNo8= + dependencies: + ansi-regex "^3.0.0" + +strip-ansi@^3.0.0, strip-ansi@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" + integrity sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8= + dependencies: + ansi-regex "^2.0.0" + +strip-ansi@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.0.0.tgz#f78f68b5d0866c20b2c9b8c61b5298508dc8756f" + integrity sha512-Uu7gQyZI7J7gn5qLn1Np3G9vcYGTVqB+lFTytnDJv83dd8T22aGH451P3jueT2/QemInJDfxHB5Tde5OzgG1Ow== + dependencies: + ansi-regex "^4.0.0" + +strip-bom@3.0.0, strip-bom@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" + integrity sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM= + +strip-bom@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-2.0.0.tgz#6219a85616520491f35788bdbf1447a99c7e6b0e" + integrity sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4= + dependencies: + is-utf8 "^0.2.0" + +strip-comments@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/strip-comments/-/strip-comments-1.0.2.tgz#82b9c45e7f05873bee53f37168af930aa368679d" + integrity sha512-kL97alc47hoyIQSV165tTt9rG5dn4w1dNnBhOQ3bOU1Nc1hel09jnXANaHJ7vzHLd4Ju8kseDGzlev96pghLFw== + dependencies: + babel-extract-comments "^1.0.0" + babel-plugin-transform-object-rest-spread "^6.26.0" + +strip-dirs@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/strip-dirs/-/strip-dirs-2.1.0.tgz#4987736264fc344cf20f6c34aca9d13d1d4ed6c5" + integrity sha512-JOCxOeKLm2CAS73y/U4ZeZPTkE+gNVCzKt7Eox84Iej1LT/2pTWYpZKJuxwQpvX1LiZb1xokNR7RLfuBAa7T3g== + dependencies: + is-natural-number "^4.0.1" + +strip-eof@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf" + integrity sha1-u0P/VZim6wXYm1n80SnJgzE2Br8= + +strip-hex-prefix@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/strip-hex-prefix/-/strip-hex-prefix-1.0.0.tgz#0c5f155fef1151373377de9dbb588da05500e36f" + integrity sha1-DF8VX+8RUTczd96du1iNoFUA428= + dependencies: + is-hex-prefixed "1.0.0" + +strip-json-comments@^2.0.1, strip-json-comments@~2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" + integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo= + +style-loader@0.23.0: + version "0.23.0" + resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-0.23.0.tgz#8377fefab68416a2e05f1cabd8c3a3acfcce74f1" + integrity sha512-uCcN7XWHkqwGVt7skpInW6IGO1tG6ReyFQ1Cseh0VcN6VdcFQi62aG/2F3Y9ueA8x4IVlfaSUxpmQXQD9QrEuQ== + dependencies: + loader-utils "^1.1.0" + schema-utils "^0.4.5" + +stylehacks@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/stylehacks/-/stylehacks-4.0.1.tgz#3186595d047ab0df813d213e51c8b94e0b9010f2" + integrity sha512-TK5zEPeD9NyC1uPIdjikzsgWxdQQN/ry1X3d1iOz1UkYDCmcr928gWD1KHgyC27F50UnE0xCTrBOO1l6KR8M4w== + dependencies: + browserslist "^4.0.0" + postcss "^7.0.0" + postcss-selector-parser "^3.0.0" + +supports-color@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" + integrity sha1-U10EXOa2Nj+kARcIRimZXp3zJMc= + +supports-color@^3.1.2: + version "3.2.3" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-3.2.3.tgz#65ac0504b3954171d8a64946b2ae3cbb8a5f54f6" + integrity sha1-ZawFBLOVQXHYpklGsq48u4pfVPY= + dependencies: + has-flag "^1.0.0" + +supports-color@^5.1.0, supports-color@^5.3.0, supports-color@^5.4.0, supports-color@^5.5.0: + version "5.5.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" + integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== + dependencies: + has-flag "^3.0.0" + +svgo@^1.0.0, svgo@^1.0.5: + version "1.1.1" + resolved "https://registry.yarnpkg.com/svgo/-/svgo-1.1.1.tgz#12384b03335bcecd85cfa5f4e3375fed671cb985" + integrity sha512-GBkJbnTuFpM4jFbiERHDWhZc/S/kpHToqmZag3aEBjPYK44JAN2QBjvrGIxLOoCyMZjuFQIfTO2eJd8uwLY/9g== + dependencies: + coa "~2.0.1" + colors "~1.1.2" + css-select "^2.0.0" + css-select-base-adapter "~0.1.0" + css-tree "1.0.0-alpha.28" + css-url-regex "^1.1.0" + csso "^3.5.0" + js-yaml "^3.12.0" + mkdirp "~0.5.1" + object.values "^1.0.4" + sax "~1.2.4" + stable "~0.1.6" + unquote "~1.1.1" + util.promisify "~1.0.0" + +swarm-js@0.1.37: + version "0.1.37" + resolved "https://registry.yarnpkg.com/swarm-js/-/swarm-js-0.1.37.tgz#27d485317a340bbeec40292af783cc10acfa4663" + integrity sha512-G8gi5fcXP/2upwiuOShJ258sIufBVztekgobr3cVgYXObZwJ5AXLqZn52AI+/ffft29pJexF9WNdUxjlkVehoQ== + dependencies: + bluebird "^3.5.0" + buffer "^5.0.5" + decompress "^4.0.0" + eth-lib "^0.1.26" + fs-extra "^2.1.2" + fs-promise "^2.0.0" + got "^7.1.0" + mime-types "^2.1.16" + mkdirp-promise "^5.0.1" + mock-fs "^4.1.0" + setimmediate "^1.0.5" + tar.gz "^1.0.5" + xhr-request-promise "^0.1.2" + +symbol-observable@1.2.0, symbol-observable@^1.0.4, symbol-observable@^1.1.0, symbol-observable@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.2.0.tgz#c22688aed4eab3cdc2dfeacbb561660560a00804" + integrity sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ== + +symbol-tree@^3.2.2: + version "3.2.2" + resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.2.tgz#ae27db38f660a7ae2e1c3b7d1bc290819b8519e6" + integrity sha1-rifbOPZgp64uHDt9G8KQgZuFGeY= + +table@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/table/-/table-4.0.3.tgz#00b5e2b602f1794b9acaf9ca908a76386a7813bc" + integrity sha512-S7rnFITmBH1EnyKcvxBh1LjYeQMmnZtCXSEbHcH6S0NoKit24ZuFO/T1vDcLdYsLQkM188PVVhQmzKIuThNkKg== + dependencies: + ajv "^6.0.1" + ajv-keywords "^3.0.0" + chalk "^2.1.0" + lodash "^4.17.4" + slice-ansi "1.0.0" + string-width "^2.1.1" + +tapable@^1.0.0, tapable@^1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/tapable/-/tapable-1.1.1.tgz#4d297923c5a72a42360de2ab52dadfaaec00018e" + integrity sha512-9I2ydhj8Z9veORCw5PRm4u9uebCn0mcCa6scWoNcbZ6dAtoo2618u9UUzxgmsCOreJpqDDuv61LvwofW7hLcBA== + +tape@^4.6.3: + version "4.9.2" + resolved "https://registry.yarnpkg.com/tape/-/tape-4.9.2.tgz#f233e40f09dc7e00fcf9b26755453c3822ad28c0" + integrity sha512-lPXKRKILZ1kZaUy5ynWKs8ATGSUO7HAFHCFnBam6FaGSqPdOwMWbxXHq4EXFLE8WRTleo/YOMXkaUTRmTB1Fiw== + dependencies: + deep-equal "~1.0.1" + defined "~1.0.0" + for-each "~0.3.3" + function-bind "~1.1.1" + glob "~7.1.2" + has "~1.0.3" + inherits "~2.0.3" + minimist "~1.2.0" + object-inspect "~1.6.0" + resolve "~1.7.1" + resumer "~0.0.0" + string.prototype.trim "~1.1.2" + through "~2.3.8" + +tar-stream@^1.5.2: + version "1.6.2" + resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-1.6.2.tgz#8ea55dab37972253d9a9af90fdcd559ae435c555" + integrity sha512-rzS0heiNf8Xn7/mpdSVVSMAWAoy9bfb1WOTYC78Z0UQKeKa/CWS8FOq0lKGNa8DWKAn9gxjCvMLYc5PGXYlK2A== + dependencies: + bl "^1.0.0" + buffer-alloc "^1.2.0" + end-of-stream "^1.0.0" + fs-constants "^1.0.0" + readable-stream "^2.3.0" + to-buffer "^1.1.1" + xtend "^4.0.0" + +tar.gz@^1.0.5: + version "1.0.7" + resolved "https://registry.yarnpkg.com/tar.gz/-/tar.gz-1.0.7.tgz#577ef2c595faaa73452ef0415fed41113212257b" + integrity sha512-uhGatJvds/3diZrETqMj4RxBR779LKlIE74SsMcn5JProZsfs9j0QBwWO1RW+IWNJxS2x8Zzra1+AW6OQHWphg== + dependencies: + bluebird "^2.9.34" + commander "^2.8.1" + fstream "^1.0.8" + mout "^0.11.0" + tar "^2.1.1" + +tar@^2.1.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/tar/-/tar-2.2.1.tgz#8e4d2a256c0e2185c6b18ad694aec968b83cb1d1" + integrity sha1-jk0qJWwOIYXGsYrWlK7JaLg8sdE= + dependencies: + block-stream "*" + fstream "^1.0.2" + inherits "2" + +tar@^4: + version "4.4.8" + resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.8.tgz#b19eec3fde2a96e64666df9fdb40c5ca1bc3747d" + integrity sha512-LzHF64s5chPQQS0IYBn9IN5h3i98c12bo4NCO7e0sGM2llXQ3p2FGC5sdENN4cTW48O915Sh+x+EXx7XW96xYQ== + dependencies: + chownr "^1.1.1" + fs-minipass "^1.2.5" + minipass "^2.3.4" + minizlib "^1.1.1" + mkdirp "^0.5.0" + safe-buffer "^5.1.2" + yallist "^3.0.2" + +terser-webpack-plugin@1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-1.1.0.tgz#cf7c25a1eee25bf121f4a587bb9e004e3f80e528" + integrity sha512-61lV0DSxMAZ8AyZG7/A4a3UPlrbOBo8NIQ4tJzLPAdGOQ+yoNC7l5ijEow27lBAL2humer01KLS6bGIMYQxKoA== + dependencies: + cacache "^11.0.2" + find-cache-dir "^2.0.0" + schema-utils "^1.0.0" + serialize-javascript "^1.4.0" + source-map "^0.6.1" + terser "^3.8.1" + webpack-sources "^1.1.0" + worker-farm "^1.5.2" + +terser@^3.8.1: + version "3.14.1" + resolved "https://registry.yarnpkg.com/terser/-/terser-3.14.1.tgz#cc4764014af570bc79c79742358bd46926018a32" + integrity sha512-NSo3E99QDbYSMeJaEk9YW2lTg3qS9V0aKGlb+PlOrei1X02r1wSBHCNX/O+yeTRFSWPKPIGj6MqvvdqV4rnVGw== + dependencies: + commander "~2.17.1" + source-map "~0.6.1" + source-map-support "~0.5.6" + +test-exclude@^4.2.1: + version "4.2.3" + resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-4.2.3.tgz#a9a5e64474e4398339245a0a769ad7c2f4a97c20" + integrity sha512-SYbXgY64PT+4GAL2ocI3HwPa4Q4TBKm0cwAVeKOt/Aoc0gSpNRjJX8w0pA1LMKZ3LBmd8pYBqApFNQLII9kavA== + dependencies: + arrify "^1.0.1" + micromatch "^2.3.11" + object-assign "^4.1.0" + read-pkg-up "^1.0.1" + require-main-filename "^1.0.1" + +text-table@0.2.0, text-table@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" + integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ= + +thenify-all@^1.0.0, thenify-all@^1.6.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/thenify-all/-/thenify-all-1.6.0.tgz#1a1918d402d8fc3f98fbf234db0bcc8cc10e9726" + integrity sha1-GhkY1ALY/D+Y+/I02wvMjMEOlyY= + dependencies: + thenify ">= 3.1.0 < 4" + +"thenify@>= 3.1.0 < 4": + version "3.3.0" + resolved "https://registry.yarnpkg.com/thenify/-/thenify-3.3.0.tgz#e69e38a1babe969b0108207978b9f62b88604839" + integrity sha1-5p44obq+lpsBCCB5eLn2K4hgSDk= + dependencies: + any-promise "^1.0.0" + +throat@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/throat/-/throat-4.1.0.tgz#89037cbc92c56ab18926e6ba4cbb200e15672a6a" + integrity sha1-iQN8vJLFarGJJua6TLsgDhVnKmo= + +through2@^2.0.0: + version "2.0.5" + resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.5.tgz#01c1e39eb31d07cb7d03a96a70823260b23132cd" + integrity sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ== + dependencies: + readable-stream "~2.3.6" + xtend "~4.0.1" + +through@^2.3.6, through@~2.3.4, through@~2.3.8: + version "2.3.8" + resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" + integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU= + +thunky@^1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/thunky/-/thunky-1.0.3.tgz#f5df732453407b09191dae73e2a8cc73f381a826" + integrity sha512-YwT8pjmNcAXBZqrubu22P4FYsh2D4dxRmnWBOL8Jk8bUcRUtc5326kx32tuTmFDAZtLOGEVNl8POAR8j896Iow== + +timed-out@^4.0.0, timed-out@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/timed-out/-/timed-out-4.0.1.tgz#f32eacac5a175bea25d7fab565ab3ed8741ef56f" + integrity sha1-8y6srFoXW+ol1/q1Zas+2HQe9W8= + +timers-browserify@^2.0.4: + version "2.0.10" + resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-2.0.10.tgz#1d28e3d2aadf1d5a5996c4e9f95601cd053480ae" + integrity sha512-YvC1SV1XdOUaL6gx5CoGroT3Gu49pK9+TZ38ErPldOWW4j49GI1HKs9DV+KGq/w6y+LZ72W1c8cKz2vzY+qpzg== + dependencies: + setimmediate "^1.0.4" + +timsort@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/timsort/-/timsort-0.3.0.tgz#405411a8e7e6339fe64db9a234de11dc31e02bd4" + integrity sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q= + +tiny-invariant@^1.0.2: + version "1.0.4" + resolved "https://registry.yarnpkg.com/tiny-invariant/-/tiny-invariant-1.0.4.tgz#346b5415fd93cb696b0c4e8a96697ff590f92463" + integrity sha512-lMhRd/djQJ3MoaHEBrw8e2/uM4rs9YMNk0iOr8rHQ0QdbM7D4l0gFl3szKdeixrlyfm9Zqi4dxHCM2qVG8ND5g== + +tiny-warning@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/tiny-warning/-/tiny-warning-1.0.2.tgz#1dfae771ee1a04396bdfde27a3adcebc6b648b28" + integrity sha512-rru86D9CpQRLvsFG5XFdy0KdLAvjdQDyZCsRcuu60WtzFylDM3eAWSxEVz5kzL2Gp544XiUvPbVKtOA/txLi9Q== + +tmp@^0.0.33: + version "0.0.33" + resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" + integrity sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw== + dependencies: + os-tmpdir "~1.0.2" + +tmpl@1.0.x: + version "1.0.4" + resolved "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.4.tgz#23640dd7b42d00433911140820e5cf440e521dd1" + integrity sha1-I2QN17QtAEM5ERQIIOXPRA5SHdE= + +to-arraybuffer@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz#7d229b1fcc637e466ca081180836a7aabff83f43" + integrity sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M= + +to-buffer@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/to-buffer/-/to-buffer-1.1.1.tgz#493bd48f62d7c43fcded313a03dcadb2e1213a80" + integrity sha512-lx9B5iv7msuFYE3dytT+KE5tap+rNYw+K4jVkb9R/asAb+pbBSM17jtunHplhBe6RRJdZx3Pn2Jph24O32mOVg== + +to-fast-properties@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-1.0.3.tgz#b83571fa4d8c25b82e231b06e3a3055de4ca1a47" + integrity sha1-uDVx+k2MJbguIxsG46MFXeTKGkc= + +to-fast-properties@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" + integrity sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4= + +to-object-path@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/to-object-path/-/to-object-path-0.3.0.tgz#297588b7b0e7e0ac08e04e672f85c1f4999e17af" + integrity sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68= + dependencies: + kind-of "^3.0.2" + +to-regex-range@^2.1.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-2.1.1.tgz#7c80c17b9dfebe599e27367e0d4dd5590141db38" + integrity sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg= + dependencies: + is-number "^3.0.0" + repeat-string "^1.6.1" + +to-regex@^3.0.1, to-regex@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/to-regex/-/to-regex-3.0.2.tgz#13cfdd9b336552f30b51f33a8ae1b42a7a7599ce" + integrity sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw== + dependencies: + define-property "^2.0.2" + extend-shallow "^3.0.2" + regex-not "^1.0.2" + safe-regex "^1.1.0" + +topo@2.x.x: + version "2.0.2" + resolved "https://registry.yarnpkg.com/topo/-/topo-2.0.2.tgz#cd5615752539057c0dc0491a621c3bc6fbe1d182" + integrity sha1-zVYVdSU5BXwNwEkaYhw7xvvh0YI= + dependencies: + hoek "4.x.x" + +tough-cookie@>=2.3.3, tough-cookie@^2.3.4, tough-cookie@^2.5.0: + version "2.5.0" + resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2" + integrity sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g== + dependencies: + psl "^1.1.28" + punycode "^2.1.1" + +tough-cookie@~2.4.3: + version "2.4.3" + resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.4.3.tgz#53f36da3f47783b0925afa06ff9f3b165280f781" + integrity sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ== + dependencies: + psl "^1.1.24" + punycode "^1.4.1" + +tr46@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/tr46/-/tr46-1.0.1.tgz#a8b13fd6bfd2489519674ccde55ba3693b706d09" + integrity sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk= + dependencies: + punycode "^2.1.0" + +trim-right@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/trim-right/-/trim-right-1.0.1.tgz#cb2e1203067e0c8de1f614094b9fe45704ea6003" + integrity sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM= + +trim@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/trim/-/trim-0.0.1.tgz#5858547f6b290757ee95cccc666fb50084c460dd" + integrity sha1-WFhUf2spB1fulczMZm+1AITEYN0= + +tryer@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/tryer/-/tryer-1.0.1.tgz#f2c85406800b9b0f74c9f7465b81eaad241252f8" + integrity sha512-c3zayb8/kWWpycWYg87P71E1S1ZL6b6IJxfb5fvsUgsf0S2MVGaDhDXXjDMpdCpfWXqptc+4mXwmiy1ypXqRAA== + +tslib@^1.9.0: + version "1.9.3" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.9.3.tgz#d7e4dd79245d85428c4d7e4822a79917954ca286" + integrity sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ== + +tty-browserify@0.0.0: + version "0.0.0" + resolved "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.0.tgz#a157ba402da24e9bf957f9aa69d524eed42901a6" + integrity sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY= + +tunnel-agent@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" + integrity sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0= + dependencies: + safe-buffer "^5.0.1" + +tweetnacl@^0.14.3, tweetnacl@~0.14.0: + version "0.14.5" + resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" + integrity sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q= + +type-check@~0.3.2: + version "0.3.2" + resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" + integrity sha1-WITKtRLPHTVeP7eE8wgEsrUg23I= + dependencies: + prelude-ls "~1.1.2" + +type-is@~1.6.16: + version "1.6.16" + resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.16.tgz#f89ce341541c672b25ee7ae3c73dee3b2be50194" + integrity sha512-HRkVv/5qY2G6I8iab9cI7v1bOIdhm94dVjQCPFElW9W+3GeDOSHmy2EBYe4VTApuzolPcmgFTN3ftVJRKR2J9Q== + dependencies: + media-typer "0.3.0" + mime-types "~2.1.18" + +typedarray-to-buffer@^3.1.2: + version "3.1.5" + resolved "https://registry.yarnpkg.com/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz#a97ee7a9ff42691b9f783ff1bc5112fe3fca9080" + integrity sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q== + dependencies: + is-typedarray "^1.0.0" + +typedarray@^0.0.6: + version "0.0.6" + resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" + integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c= + +ua-parser-js@^0.7.18: + version "0.7.19" + resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-0.7.19.tgz#94151be4c0a7fb1d001af7022fdaca4642659e4b" + integrity sha512-T3PVJ6uz8i0HzPxOF9SWzWAlfN/DavlpQqepn22xgve/5QecC+XMCAtmUNnY7C9StehaV6exjUCI801lOI7QlQ== + +uglify-es@^3.3.4: + version "3.3.9" + resolved "https://registry.yarnpkg.com/uglify-es/-/uglify-es-3.3.9.tgz#0c1c4f0700bed8dbc124cdb304d2592ca203e677" + integrity sha512-r+MU0rfv4L/0eeW3xZrd16t4NZfK8Ld4SWVglYBb7ez5uXFWHuVRs6xCTrf1yirs9a4j4Y27nn7SRfO6v67XsQ== + dependencies: + commander "~2.13.0" + source-map "~0.6.1" + +uglify-js@3.4.x, uglify-js@^3.1.4: + version "3.4.9" + resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.4.9.tgz#af02f180c1207d76432e473ed24a28f4a782bae3" + integrity sha512-8CJsbKOtEbnJsTyv6LE6m6ZKniqMiFWmm9sRbopbkGs3gMPPfd3Fh8iIA4Ykv5MgaTbqHr4BaoGLJLZNhsrW1Q== + dependencies: + commander "~2.17.1" + source-map "~0.6.1" + +uglifyjs-webpack-plugin@^1.2.4: + version "1.3.0" + resolved "https://registry.yarnpkg.com/uglifyjs-webpack-plugin/-/uglifyjs-webpack-plugin-1.3.0.tgz#75f548160858163a08643e086d5fefe18a5d67de" + integrity sha512-ovHIch0AMlxjD/97j9AYovZxG5wnHOPkL7T1GKochBADp/Zwc44pEWNqpKl1Loupp1WhFg7SlYmHZRUfdAacgw== + dependencies: + cacache "^10.0.4" + find-cache-dir "^1.0.0" + schema-utils "^0.4.5" + serialize-javascript "^1.4.0" + source-map "^0.6.1" + uglify-es "^3.3.4" + webpack-sources "^1.1.0" + worker-farm "^1.5.2" + +ultron@~1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/ultron/-/ultron-1.1.1.tgz#9fe1536a10a664a65266a1e3ccf85fd36302bc9c" + integrity sha512-UIEXBNeYmKptWH6z8ZnqTeS8fV74zG0/eRU9VGkpzz+LIJNs8W/zM/L+7ctCkRrgbNnnR0xxw4bKOr0cW0N0Og== + +unbzip2-stream@^1.0.9: + version "1.3.1" + resolved "https://registry.yarnpkg.com/unbzip2-stream/-/unbzip2-stream-1.3.1.tgz#7854da51622a7e63624221196357803b552966a1" + integrity sha512-fIZnvdjblYs7Cru/xC6tCPVhz7JkYcVQQkePwMLyQELzYTds2Xn8QefPVnvdVhhZqubxNA1cASXEH5wcK0Bucw== + dependencies: + buffer "^3.0.1" + through "^2.3.6" + +underscore@1.8.3: + version "1.8.3" + resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.8.3.tgz#4f3fb53b106e6097fcf9cb4109f2a5e9bdfa5022" + integrity sha1-Tz+1OxBuYJf8+ctBCfKl6b36UCI= + +unicode-canonical-property-names-ecmascript@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz#2619800c4c825800efdd8343af7dd9933cbe2818" + integrity sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ== + +unicode-match-property-ecmascript@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz#8ed2a32569961bce9227d09cd3ffbb8fed5f020c" + integrity sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg== + dependencies: + unicode-canonical-property-names-ecmascript "^1.0.4" + unicode-property-aliases-ecmascript "^1.0.4" + +unicode-match-property-value-ecmascript@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.0.2.tgz#9f1dc76926d6ccf452310564fd834ace059663d4" + integrity sha512-Rx7yODZC1L/T8XKo/2kNzVAQaRE88AaMvI1EF/Xnj3GW2wzN6fop9DDWuFAKUVFH7vozkz26DzP0qyWLKLIVPQ== + +unicode-property-aliases-ecmascript@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.0.4.tgz#5a533f31b4317ea76f17d807fa0d116546111dd0" + integrity sha512-2WSLa6OdYd2ng8oqiGIWnJqyFArvhn+5vgx5GTxMbUYjCYKUcuKS62YLFF0R/BDGlB1yzXjQOLtPAfHsgirEpg== + +union-value@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.0.tgz#5c71c34cb5bad5dcebe3ea0cd08207ba5aa1aea4" + integrity sha1-XHHDTLW61dzr4+oM0IIHulqhrqQ= + dependencies: + arr-union "^3.1.0" + get-value "^2.0.6" + is-extendable "^0.1.1" + set-value "^0.4.3" + +uniq@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/uniq/-/uniq-1.0.1.tgz#b31c5ae8254844a3a8281541ce2b04b865a734ff" + integrity sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8= + +uniqs@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/uniqs/-/uniqs-2.0.0.tgz#ffede4b36b25290696e6e165d4a59edb998e6b02" + integrity sha1-/+3ks2slKQaW5uFl1KWe25mOawI= + +unique-filename@^1.1.0, unique-filename@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/unique-filename/-/unique-filename-1.1.1.tgz#1d69769369ada0583103a1e6ae87681b56573230" + integrity sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ== + dependencies: + unique-slug "^2.0.0" + +unique-slug@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/unique-slug/-/unique-slug-2.0.1.tgz#5e9edc6d1ce8fb264db18a507ef9bd8544451ca6" + integrity sha512-n9cU6+gITaVu7VGj1Z8feKMmfAjEAQGhwD9fE3zvpRRa0wEIx8ODYkVGfSc94M2OX00tUFV8wH3zYbm1I8mxFg== + dependencies: + imurmurhash "^0.1.4" + +universalify@^0.1.0: + version "0.1.2" + resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" + integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== + +unpipe@1.0.0, unpipe@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" + integrity sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw= + +unquote@~1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/unquote/-/unquote-1.1.1.tgz#8fded7324ec6e88a0ff8b905e7c098cdc086d544" + integrity sha1-j97XMk7G6IoP+LkF58CYzcCG1UQ= + +unset-value@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559" + integrity sha1-g3aHP30jNRef+x5vw6jtDfyKtVk= + dependencies: + has-value "^0.3.1" + isobject "^3.0.0" + +upath@^1.0.5: + version "1.1.0" + resolved "https://registry.yarnpkg.com/upath/-/upath-1.1.0.tgz#35256597e46a581db4793d0ce47fa9aebfc9fabd" + integrity sha512-bzpH/oBhoS/QI/YtbkqCg6VEiPYjSZtrHQM6/QnJS6OL9pKUFLqb3aFh4Scvwm45+7iAgiMkLhSbaZxUqmrprw== + +upper-case@^1.1.1: + version "1.1.3" + resolved "https://registry.yarnpkg.com/upper-case/-/upper-case-1.1.3.tgz#f6b4501c2ec4cdd26ba78be7222961de77621598" + integrity sha1-9rRQHC7EzdJrp4vnIilh3ndiFZg= + +uri-js@^4.2.2: + version "4.2.2" + resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.2.2.tgz#94c540e1ff772956e2299507c010aea6c8838eb0" + integrity sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ== + dependencies: + punycode "^2.1.0" + +urix@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" + integrity sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI= + +url-loader@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/url-loader/-/url-loader-1.1.1.tgz#4d1f3b4f90dde89f02c008e662d604d7511167c1" + integrity sha512-vugEeXjyYFBCUOpX+ZuaunbK3QXMKaQ3zUnRfIpRBlGkY7QizCnzyyn2ASfcxsvyU3ef+CJppVywnl3Kgf13Gg== + dependencies: + loader-utils "^1.1.0" + mime "^2.0.3" + schema-utils "^1.0.0" + +url-parse-lax@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/url-parse-lax/-/url-parse-lax-1.0.0.tgz#7af8f303645e9bd79a272e7a14ac68bc0609da73" + integrity sha1-evjzA2Rem9eaJy56FKxovAYJ2nM= + dependencies: + prepend-http "^1.0.1" + +url-parse@^1.1.8, url-parse@^1.4.3: + version "1.4.4" + resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.4.4.tgz#cac1556e95faa0303691fec5cf9d5a1bc34648f8" + integrity sha512-/92DTTorg4JjktLNLe6GPS2/RvAd/RGr6LuktmWSMLEOa6rjnlrFXNgSbSmkNvCoL2T028A0a1JaJLzRMlFoHg== + dependencies: + querystringify "^2.0.0" + requires-port "^1.0.0" + +url-set-query@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/url-set-query/-/url-set-query-1.0.0.tgz#016e8cfd7c20ee05cafe7795e892bd0702faa339" + integrity sha1-AW6M/Xwg7gXK/neV6JK9BwL6ozk= + +url-to-options@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/url-to-options/-/url-to-options-1.0.1.tgz#1505a03a289a48cbd7a434efbaeec5055f5633a9" + integrity sha1-FQWgOiiaSMvXpDTvuu7FBV9WM6k= + +url@^0.11.0: + version "0.11.0" + resolved "https://registry.yarnpkg.com/url/-/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1" + integrity sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE= + dependencies: + punycode "1.3.2" + querystring "0.2.0" + +use@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f" + integrity sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ== + +utf8@2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/utf8/-/utf8-2.1.1.tgz#2e01db02f7d8d0944f77104f1609eb0c304cf768" + integrity sha1-LgHbAvfY0JRPdxBPFgnrDDBM92g= + +util-deprecate@^1.0.1, util-deprecate@~1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" + integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= + +util.promisify@1.0.0, util.promisify@^1.0.0, util.promisify@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/util.promisify/-/util.promisify-1.0.0.tgz#440f7165a459c9a16dc145eb8e72f35687097030" + integrity sha512-i+6qA2MPhvoKLuxnJNpXAGhg7HphQOSUq2LKMZD0m15EiskXUkMvKdF4Uui0WYeCUGea+o2cw/ZuwehtfsrNkA== + dependencies: + define-properties "^1.1.2" + object.getownpropertydescriptors "^2.0.3" + +util@0.10.3: + version "0.10.3" + resolved "https://registry.yarnpkg.com/util/-/util-0.10.3.tgz#7afb1afe50805246489e3db7fe0ed379336ac0f9" + integrity sha1-evsa/lCAUkZInj23/g7TeTNqwPk= + dependencies: + inherits "2.0.1" + +util@^0.10.3: + version "0.10.4" + resolved "https://registry.yarnpkg.com/util/-/util-0.10.4.tgz#3aa0125bfe668a4672de58857d3ace27ecb76901" + integrity sha512-0Pm9hTQ3se5ll1XihRic3FDIku70C+iHUdT/W926rSgHV5QgXsYbKZN8MSC3tJtSkhuROzvsQjAaFENRXr+19A== + dependencies: + inherits "2.0.3" + +utila@^0.4.0, utila@~0.4: + version "0.4.0" + resolved "https://registry.yarnpkg.com/utila/-/utila-0.4.0.tgz#8a16a05d445657a3aea5eecc5b12a4fa5379772c" + integrity sha1-ihagXURWV6Oupe7MWxKk+lN5dyw= + +utils-merge@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" + integrity sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM= + +uuid@2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-2.0.1.tgz#c2a30dedb3e535d72ccf82e343941a50ba8533ac" + integrity sha1-wqMN7bPlNdcsz4LjQ5QaULqFM6w= + +uuid@^3.0.1, uuid@^3.3.2: + version "3.3.2" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.3.2.tgz#1b4af4955eb3077c501c23872fc6513811587131" + integrity sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA== + +validate-npm-package-license@^3.0.1: + version "3.0.4" + resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a" + integrity sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew== + dependencies: + spdx-correct "^3.0.0" + spdx-expression-parse "^3.0.0" + +value-equal@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/value-equal/-/value-equal-0.4.0.tgz#c5bdd2f54ee093c04839d71ce2e4758a6890abc7" + integrity sha512-x+cYdNnaA3CxvMaTX0INdTCN8m8aF2uY9BvEqmxuYp8bL09cs/kWVQPVGcA35fMktdOsP69IgU7wFj/61dJHEw== + +vary@^1, vary@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" + integrity sha1-IpnwLG3tMNSllhsLn3RSShj2NPw= + +vendors@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/vendors/-/vendors-1.0.2.tgz#7fcb5eef9f5623b156bcea89ec37d63676f21801" + integrity sha512-w/hry/368nO21AN9QljsaIhb9ZiZtZARoVH5f3CsFbawdLdayCgKRPup7CggujvySMxx0I91NOyxdVENohprLQ== + +verror@1.10.0: + version "1.10.0" + resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" + integrity sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA= + dependencies: + assert-plus "^1.0.0" + core-util-is "1.0.2" + extsprintf "^1.2.0" + +vm-browserify@0.0.4: + version "0.0.4" + resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-0.0.4.tgz#5d7ea45bbef9e4a6ff65f95438e0a87c357d5a73" + integrity sha1-XX6kW7755Kb/ZflUOOCofDV9WnM= + dependencies: + indexof "0.0.1" + +w3c-hr-time@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/w3c-hr-time/-/w3c-hr-time-1.0.1.tgz#82ac2bff63d950ea9e3189a58a65625fedf19045" + integrity sha1-gqwr/2PZUOqeMYmlimViX+3xkEU= + dependencies: + browser-process-hrtime "^0.1.2" + +w3c-xmlserializer@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/w3c-xmlserializer/-/w3c-xmlserializer-1.0.1.tgz#054cdcd359dc5d1f3ec9be4e272c756af4b21d39" + integrity sha512-XZGI1OH/OLQr/NaJhhPmzhngwcAnZDLytsvXnRmlYeRkmbb0I7sqFFA22erq4WQR0sUu17ZSQOAV9mFwCqKRNg== + dependencies: + domexception "^1.0.1" + webidl-conversions "^4.0.2" + xml-name-validator "^3.0.0" + +walker@~1.0.5: + version "1.0.7" + resolved "https://registry.yarnpkg.com/walker/-/walker-1.0.7.tgz#2f7f9b8fd10d677262b18a884e28d19618e028fb" + integrity sha1-L3+bj9ENZ3JisYqITijRlhjgKPs= + dependencies: + makeerror "1.0.x" + +warning@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/warning/-/warning-3.0.0.tgz#32e5377cb572de4ab04753bdf8821c01ed605b7c" + integrity sha1-MuU3fLVy3kqwR1O9+IIcAe1gW3w= + dependencies: + loose-envify "^1.0.0" + +warning@^4.0.1: + version "4.0.3" + resolved "https://registry.yarnpkg.com/warning/-/warning-4.0.3.tgz#16e9e077eb8a86d6af7d64aa1e05fd85b4678ca3" + integrity sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w== + dependencies: + loose-envify "^1.0.0" + +watch@~0.18.0: + version "0.18.0" + resolved "https://registry.yarnpkg.com/watch/-/watch-0.18.0.tgz#28095476c6df7c90c963138990c0a5423eb4b986" + integrity sha1-KAlUdsbffJDJYxOJkMClQj60uYY= + dependencies: + exec-sh "^0.2.0" + minimist "^1.2.0" + +watchpack@^1.5.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-1.6.0.tgz#4bc12c2ebe8aa277a71f1d3f14d685c7b446cd00" + integrity sha512-i6dHe3EyLjMmDlU1/bGQpEw25XSjkJULPuAVKCbNRefQVq48yXKUpwg538F7AZTf9kyr57zj++pQFltUa5H7yA== + dependencies: + chokidar "^2.0.2" + graceful-fs "^4.1.2" + neo-async "^2.5.0" + +wbuf@^1.1.0, wbuf@^1.7.3: + version "1.7.3" + resolved "https://registry.yarnpkg.com/wbuf/-/wbuf-1.7.3.tgz#c1d8d149316d3ea852848895cb6a0bfe887b87df" + integrity sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA== + dependencies: + minimalistic-assert "^1.0.0" + +web3-bzz@1.0.0-beta.37: + version "1.0.0-beta.37" + resolved "https://registry.yarnpkg.com/web3-bzz/-/web3-bzz-1.0.0-beta.37.tgz#59e3e4f5a9d732731008fe9165c3ec8bf85d502f" + integrity sha512-E+dho49Nsm/QpQvYWOF35YDsQrMvLB19AApENxhlQsu6HpWQt534DQul0t3Y/aAh8rlKD6Kanxt8LhHDG3vejQ== + dependencies: + got "7.1.0" + swarm-js "0.1.37" + underscore "1.8.3" + +web3-core-helpers@1.0.0-beta.37: + version "1.0.0-beta.37" + resolved "https://registry.yarnpkg.com/web3-core-helpers/-/web3-core-helpers-1.0.0-beta.37.tgz#04ec354b7f5c57234c309eea2bda9bf1f2fe68ba" + integrity sha512-efaLOzN28RMnbugnyelgLwPWWaSwElQzcAJ/x3PZu+uPloM/lE5x0YuBKvIh7/PoSMlHqtRWj1B8CpuQOUQ5Ew== + dependencies: + underscore "1.8.3" + web3-eth-iban "1.0.0-beta.37" + web3-utils "1.0.0-beta.37" + +web3-core-method@1.0.0-beta.37: + version "1.0.0-beta.37" + resolved "https://registry.yarnpkg.com/web3-core-method/-/web3-core-method-1.0.0-beta.37.tgz#53d148e63f818b23461b26307afdfbdaa9457744" + integrity sha512-pKWFUeqnVmzx3VrZg+CseSdrl/Yrk2ioid/HzolNXZE6zdoITZL0uRjnsbqXGEzgRRd1Oe/pFndpTlRsnxXloA== + dependencies: + underscore "1.8.3" + web3-core-helpers "1.0.0-beta.37" + web3-core-promievent "1.0.0-beta.37" + web3-core-subscriptions "1.0.0-beta.37" + web3-utils "1.0.0-beta.37" + +web3-core-promievent@1.0.0-beta.37: + version "1.0.0-beta.37" + resolved "https://registry.yarnpkg.com/web3-core-promievent/-/web3-core-promievent-1.0.0-beta.37.tgz#4e51c469d0a7ac0a969885a4dbcde8504abe5b02" + integrity sha512-GTF2r1lP8nJBeA5Gxq5yZpJy9l8Fb9CXGZPfF8jHvaRdQHtm2Z+NDhqYmF833lcdkokRSyfPcXlz1mlWeClFpg== + dependencies: + any-promise "1.3.0" + eventemitter3 "1.1.1" + +web3-core-requestmanager@1.0.0-beta.37: + version "1.0.0-beta.37" + resolved "https://registry.yarnpkg.com/web3-core-requestmanager/-/web3-core-requestmanager-1.0.0-beta.37.tgz#721a75df5920621bff42d9d74f7a64413675d56b" + integrity sha512-66VUqye5BGp1Zz1r8psCxdNH+GtTjaFwroum2Osx+wbC5oRjAiXkkadiitf6wRb+edodjEMPn49u7B6WGNuewQ== + dependencies: + underscore "1.8.3" + web3-core-helpers "1.0.0-beta.37" + web3-providers-http "1.0.0-beta.37" + web3-providers-ipc "1.0.0-beta.37" + web3-providers-ws "1.0.0-beta.37" + +web3-core-subscriptions@1.0.0-beta.37: + version "1.0.0-beta.37" + resolved "https://registry.yarnpkg.com/web3-core-subscriptions/-/web3-core-subscriptions-1.0.0-beta.37.tgz#40de5e2490cc05b15faa8f935c97fd48d670cd9a" + integrity sha512-FdXl8so9kwkRRWziuCSpFsAuAdg9KvpXa1fQlT16uoGcYYfxwFO/nkwyBGQzkZt7emShI2IRugcazyPCZDwkOA== + dependencies: + eventemitter3 "1.1.1" + underscore "1.8.3" + web3-core-helpers "1.0.0-beta.37" + +web3-core@1.0.0-beta.37: + version "1.0.0-beta.37" + resolved "https://registry.yarnpkg.com/web3-core/-/web3-core-1.0.0-beta.37.tgz#66c2c7000772c9db36d737ada31607ace09b7e90" + integrity sha512-cIwEqCj7OJyefQNauI0HOgW4sSaOQ98V99H2/HEIlnCZylsDzfw7gtQUdwnRFiIyIxjbWy3iWsjwDPoXNPZBYg== + dependencies: + web3-core-helpers "1.0.0-beta.37" + web3-core-method "1.0.0-beta.37" + web3-core-requestmanager "1.0.0-beta.37" + web3-utils "1.0.0-beta.37" + +web3-eth-abi@1.0.0-beta.37: + version "1.0.0-beta.37" + resolved "https://registry.yarnpkg.com/web3-eth-abi/-/web3-eth-abi-1.0.0-beta.37.tgz#55592fa9cd2427d9f0441d78f3b8d0c1359a2a24" + integrity sha512-g9DKZGM2OqwKp/tX3W/yihcj7mQCtJ6CXyZXEIZfuDyRBED/iSEIFfieDOd+yo16sokLMig6FG7ADhhu+19hdA== + dependencies: + ethers "4.0.0-beta.1" + underscore "1.8.3" + web3-utils "1.0.0-beta.37" + +web3-eth-accounts@1.0.0-beta.37: + version "1.0.0-beta.37" + resolved "https://registry.yarnpkg.com/web3-eth-accounts/-/web3-eth-accounts-1.0.0-beta.37.tgz#0a5a9f14a6c3bd285e001c15eb3bb38ffa4b5204" + integrity sha512-uvbHL62/zwo4GDmwKdqH9c/EgYd8QVnAfpVw8D3epSISpgbONNY7Hr4MRMSd/CqAP12l2Ls9JVQGLhhC83bW6g== + dependencies: + any-promise "1.3.0" + crypto-browserify "3.12.0" + eth-lib "0.2.7" + scrypt.js "0.2.0" + underscore "1.8.3" + uuid "2.0.1" + web3-core "1.0.0-beta.37" + web3-core-helpers "1.0.0-beta.37" + web3-core-method "1.0.0-beta.37" + web3-utils "1.0.0-beta.37" + +web3-eth-contract@1.0.0-beta.37: + version "1.0.0-beta.37" + resolved "https://registry.yarnpkg.com/web3-eth-contract/-/web3-eth-contract-1.0.0-beta.37.tgz#87f93c95ed16f320ba54943b7886890de6766013" + integrity sha512-h1B3A8Z/C7BlnTCHkrWbXZQTViDxfR12lKMeTkT8Sqj5phFmxrBlPE4ORy4lf1Dk5b23mZYE0r/IRACx4ThCrQ== + dependencies: + underscore "1.8.3" + web3-core "1.0.0-beta.37" + web3-core-helpers "1.0.0-beta.37" + web3-core-method "1.0.0-beta.37" + web3-core-promievent "1.0.0-beta.37" + web3-core-subscriptions "1.0.0-beta.37" + web3-eth-abi "1.0.0-beta.37" + web3-utils "1.0.0-beta.37" + +web3-eth-ens@1.0.0-beta.37: + version "1.0.0-beta.37" + resolved "https://registry.yarnpkg.com/web3-eth-ens/-/web3-eth-ens-1.0.0-beta.37.tgz#714ecb01eb447ee3eb39b2b20a10ae96edb1f01f" + integrity sha512-dR3UkrVzdRrJhfP57xBPx0CMiVnCcYFvh+u2XMkGydrhHgupSUkjqGr89xry/j1T0BkuN9mikpbyhdCVMXqMbg== + dependencies: + eth-ens-namehash "2.0.8" + underscore "1.8.3" + web3-core "1.0.0-beta.37" + web3-core-helpers "1.0.0-beta.37" + web3-core-promievent "1.0.0-beta.37" + web3-eth-abi "1.0.0-beta.37" + web3-eth-contract "1.0.0-beta.37" + web3-utils "1.0.0-beta.37" + +web3-eth-iban@1.0.0-beta.37: + version "1.0.0-beta.37" + resolved "https://registry.yarnpkg.com/web3-eth-iban/-/web3-eth-iban-1.0.0-beta.37.tgz#313a3f18ae2ab00ba98678ea1156b09ef32a3655" + integrity sha512-WQRniGJFxH/XCbd7miO6+jnUG+6bvuzfeufPIiOtCbeIC1ypp1kSqER8YVBDrTyinU1xnf1U5v0KBZ2yiWBJxQ== + dependencies: + bn.js "4.11.6" + web3-utils "1.0.0-beta.37" + +web3-eth-personal@1.0.0-beta.37: + version "1.0.0-beta.37" + resolved "https://registry.yarnpkg.com/web3-eth-personal/-/web3-eth-personal-1.0.0-beta.37.tgz#187472f51861e2b6d45da43411801bc91a859f9a" + integrity sha512-B4dZpGbD+nGnn48i6nJBqrQ+HB7oDmd+Q3wGRKOsHSK5HRWO/KwYeA7wgwamMAElkut50lIsT9EJl4Apfk3G5Q== + dependencies: + web3-core "1.0.0-beta.37" + web3-core-helpers "1.0.0-beta.37" + web3-core-method "1.0.0-beta.37" + web3-net "1.0.0-beta.37" + web3-utils "1.0.0-beta.37" + +web3-eth@1.0.0-beta.37: + version "1.0.0-beta.37" + resolved "https://registry.yarnpkg.com/web3-eth/-/web3-eth-1.0.0-beta.37.tgz#0e8ffcd857a5f85ae4b5f052ad831ca5c56f4f74" + integrity sha512-Eb3aGtkz3G9q+Z9DKgSQNbn/u8RtcZQQ0R4sW9hy5KK47GoT6vab5c6DiD3QWzI0BzitHzR5Ji+3VHf/hPUGgw== + dependencies: + underscore "1.8.3" + web3-core "1.0.0-beta.37" + web3-core-helpers "1.0.0-beta.37" + web3-core-method "1.0.0-beta.37" + web3-core-subscriptions "1.0.0-beta.37" + web3-eth-abi "1.0.0-beta.37" + web3-eth-accounts "1.0.0-beta.37" + web3-eth-contract "1.0.0-beta.37" + web3-eth-ens "1.0.0-beta.37" + web3-eth-iban "1.0.0-beta.37" + web3-eth-personal "1.0.0-beta.37" + web3-net "1.0.0-beta.37" + web3-utils "1.0.0-beta.37" + +web3-net@1.0.0-beta.37: + version "1.0.0-beta.37" + resolved "https://registry.yarnpkg.com/web3-net/-/web3-net-1.0.0-beta.37.tgz#b494136043f3c6ba84fe4a47d4c028c2a63c9a8e" + integrity sha512-xG/uBtMdDa1UMXw9KjDUgf3fXA/fDEJUYUS0TDn+U9PMgngA+UVECHNNvQTrVVDxEky38V3sahwIDiopNsQdsw== + dependencies: + web3-core "1.0.0-beta.37" + web3-core-method "1.0.0-beta.37" + web3-utils "1.0.0-beta.37" + +web3-providers-http@1.0.0-beta.37: + version "1.0.0-beta.37" + resolved "https://registry.yarnpkg.com/web3-providers-http/-/web3-providers-http-1.0.0-beta.37.tgz#c06efd60e16e329e25bd268d2eefc68d82d13651" + integrity sha512-FM/1YDB1jtZuTo78habFj7S9tNHoqt0UipdyoQV29b8LkGKZV9Vs3is8L24hzuj1j/tbwkcAH+ewIseHwu0DTg== + dependencies: + web3-core-helpers "1.0.0-beta.37" + xhr2-cookies "1.1.0" + +web3-providers-ipc@1.0.0-beta.37: + version "1.0.0-beta.37" + resolved "https://registry.yarnpkg.com/web3-providers-ipc/-/web3-providers-ipc-1.0.0-beta.37.tgz#55d247e7197257ca0c3e4f4b0fe1561311b9d5b9" + integrity sha512-NdRPRxYMIU0C3u18NI8u4bwbhI9pCg5nRgDGYcmSAx5uOBxiYcQy+hb0WkJRRhBoyIXJmy+s26FoH8904+UnPg== + dependencies: + oboe "2.1.3" + underscore "1.8.3" + web3-core-helpers "1.0.0-beta.37" + +web3-providers-ws@1.0.0-beta.37: + version "1.0.0-beta.37" + resolved "https://registry.yarnpkg.com/web3-providers-ws/-/web3-providers-ws-1.0.0-beta.37.tgz#77c15aebc00b75d760d22d063ac2e415bdbef72f" + integrity sha512-8p6ZLv+1JYa5Vs8oBn33Nn3VGFBbF+wVfO+b78RJS1Qf1uIOzjFVDk3XwYDD7rlz9G5BKpxhaQw+6EGQ7L02aw== + dependencies: + underscore "1.8.3" + web3-core-helpers "1.0.0-beta.37" + websocket "git://github.com/frozeman/WebSocket-Node.git#browserifyCompatible" + +web3-shh@1.0.0-beta.37: + version "1.0.0-beta.37" + resolved "https://registry.yarnpkg.com/web3-shh/-/web3-shh-1.0.0-beta.37.tgz#3246ce5229601b525020828a56ee283307057105" + integrity sha512-h5STG/xqZNQWtCLYOu7NiMqwqPea8SfkKQUPUFxXKIPVCFVKpHuQEwW1qcPQRJMLhlQIv17xuoUe1A+RzDNbrw== + dependencies: + web3-core "1.0.0-beta.37" + web3-core-method "1.0.0-beta.37" + web3-core-subscriptions "1.0.0-beta.37" + web3-net "1.0.0-beta.37" + +web3-utils@1.0.0-beta.37: + version "1.0.0-beta.37" + resolved "https://registry.yarnpkg.com/web3-utils/-/web3-utils-1.0.0-beta.37.tgz#ab868a90fe5e649337e38bdaf72133fcbf4d414d" + integrity sha512-kA1fyhO8nKgU21wi30oJQ/ssvu+9srMdjOTKbHYbQe4ATPcr5YNwwrxG3Bcpbu1bEwRUVKHCkqi+wTvcAWBdlQ== + dependencies: + bn.js "4.11.6" + eth-lib "0.1.27" + ethjs-unit "0.1.6" + number-to-bn "1.7.0" + randomhex "0.1.5" + underscore "1.8.3" + utf8 "2.1.1" + +web3@^1.0.0-beta.35: + version "1.0.0-beta.37" + resolved "https://registry.yarnpkg.com/web3/-/web3-1.0.0-beta.37.tgz#b42c30e67195f816cd19d048fda872f70eca7083" + integrity sha512-8XLgUspdzicC/xHG82TLrcF/Fxzj2XYNJ1KTYnepOI77bj5rvpsxxwHYBWQ6/JOjk0HkZqoBfnXWgcIHCDhZhQ== + dependencies: + web3-bzz "1.0.0-beta.37" + web3-core "1.0.0-beta.37" + web3-eth "1.0.0-beta.37" + web3-eth-personal "1.0.0-beta.37" + web3-net "1.0.0-beta.37" + web3-shh "1.0.0-beta.37" + web3-utils "1.0.0-beta.37" + +webidl-conversions@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-4.0.2.tgz#a855980b1f0b6b359ba1d5d9fb39ae941faa63ad" + integrity sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg== + +webpack-dev-middleware@3.4.0: + version "3.4.0" + resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-3.4.0.tgz#1132fecc9026fd90f0ecedac5cbff75d1fb45890" + integrity sha512-Q9Iyc0X9dP9bAsYskAVJ/hmIZZQwf/3Sy4xCAZgL5cUkjZmUZLt4l5HpbST/Pdgjn3u6pE7u5OdGd1apgzRujA== + dependencies: + memory-fs "~0.4.1" + mime "^2.3.1" + range-parser "^1.0.3" + webpack-log "^2.0.0" + +webpack-dev-server@3.1.14: + version "3.1.14" + resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-3.1.14.tgz#60fb229b997fc5a0a1fc6237421030180959d469" + integrity sha512-mGXDgz5SlTxcF3hUpfC8hrQ11yhAttuUQWf1Wmb+6zo3x6rb7b9mIfuQvAPLdfDRCGRGvakBWHdHOa0I9p/EVQ== + dependencies: + ansi-html "0.0.7" + bonjour "^3.5.0" + chokidar "^2.0.0" + compression "^1.5.2" + connect-history-api-fallback "^1.3.0" + debug "^3.1.0" + del "^3.0.0" + express "^4.16.2" + html-entities "^1.2.0" + http-proxy-middleware "~0.18.0" + import-local "^2.0.0" + internal-ip "^3.0.1" + ip "^1.1.5" + killable "^1.0.0" + loglevel "^1.4.1" + opn "^5.1.0" + portfinder "^1.0.9" + schema-utils "^1.0.0" + selfsigned "^1.9.1" + semver "^5.6.0" + serve-index "^1.7.2" + sockjs "0.3.19" + sockjs-client "1.3.0" + spdy "^4.0.0" + strip-ansi "^3.0.0" + supports-color "^5.1.0" + url "^0.11.0" + webpack-dev-middleware "3.4.0" + webpack-log "^2.0.0" + yargs "12.0.2" + +webpack-log@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/webpack-log/-/webpack-log-2.0.0.tgz#5b7928e0637593f119d32f6227c1e0ac31e1b47f" + integrity sha512-cX8G2vR/85UYG59FgkoMamwHUIkSSlV3bBMRsbxVXVUk2j6NleCKjQ/WE9eYg9WY4w25O9w8wKP4rzNZFmUcUg== + dependencies: + ansi-colors "^3.0.0" + uuid "^3.3.2" + +webpack-manifest-plugin@2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/webpack-manifest-plugin/-/webpack-manifest-plugin-2.0.4.tgz#e4ca2999b09557716b8ba4475fb79fab5986f0cd" + integrity sha512-nejhOHexXDBKQOj/5v5IZSfCeTO3x1Dt1RZEcGfBSul891X/eLIcIVH31gwxPDdsi2Z8LKKFGpM4w9+oTBOSCg== + dependencies: + fs-extra "^7.0.0" + lodash ">=3.5 <5" + tapable "^1.0.0" + +webpack-sources@^1.1.0, webpack-sources@^1.2.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-1.3.0.tgz#2a28dcb9f1f45fe960d8f1493252b5ee6530fa85" + integrity sha512-OiVgSrbGu7NEnEvQJJgdSFPl2qWKkWq5lHMhgiToIiN9w34EBnjYzSYs+VbL5KoYiLNtFFa7BZIKxRED3I32pA== + dependencies: + source-list-map "^2.0.0" + source-map "~0.6.1" + +webpack@4.19.1: + version "4.19.1" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.19.1.tgz#096674bc3b573f8756c762754366e5b333d6576f" + integrity sha512-j7Q/5QqZRqIFXJvC0E59ipLV5Hf6lAnS3ezC3I4HMUybwEDikQBVad5d+IpPtmaQPQArvgUZLXIN6lWijHBn4g== + dependencies: + "@webassemblyjs/ast" "1.7.6" + "@webassemblyjs/helper-module-context" "1.7.6" + "@webassemblyjs/wasm-edit" "1.7.6" + "@webassemblyjs/wasm-parser" "1.7.6" + acorn "^5.6.2" + acorn-dynamic-import "^3.0.0" + ajv "^6.1.0" + ajv-keywords "^3.1.0" + chrome-trace-event "^1.0.0" + enhanced-resolve "^4.1.0" + eslint-scope "^4.0.0" + json-parse-better-errors "^1.0.2" + loader-runner "^2.3.0" + loader-utils "^1.1.0" + memory-fs "~0.4.1" + micromatch "^3.1.8" + mkdirp "~0.5.0" + neo-async "^2.5.0" + node-libs-browser "^2.0.0" + schema-utils "^0.4.4" + tapable "^1.1.0" + uglifyjs-webpack-plugin "^1.2.4" + watchpack "^1.5.0" + webpack-sources "^1.2.0" + +websocket-driver@>=0.5.1: + version "0.7.0" + resolved "https://registry.yarnpkg.com/websocket-driver/-/websocket-driver-0.7.0.tgz#0caf9d2d755d93aee049d4bdd0d3fe2cca2a24eb" + integrity sha1-DK+dLXVdk67gSdS90NP+LMoqJOs= + dependencies: + http-parser-js ">=0.4.0" + websocket-extensions ">=0.1.1" + +websocket-extensions@>=0.1.1: + version "0.1.3" + resolved "https://registry.yarnpkg.com/websocket-extensions/-/websocket-extensions-0.1.3.tgz#5d2ff22977003ec687a4b87073dfbbac146ccf29" + integrity sha512-nqHUnMXmBzT0w570r2JpJxfiSD1IzoI+HGVdd3aZ0yNi3ngvQ4jv1dtHt5VGxfI2yj5yqImPhOK4vmIh2xMbGg== + +"websocket@git://github.com/frozeman/WebSocket-Node.git#browserifyCompatible": + version "1.0.26" + resolved "git://github.com/frozeman/WebSocket-Node.git#6c72925e3f8aaaea8dc8450f97627e85263999f2" + dependencies: + debug "^2.2.0" + nan "^2.3.3" + typedarray-to-buffer "^3.1.2" + yaeti "^0.0.6" + +whatwg-encoding@^1.0.1, whatwg-encoding@^1.0.3, whatwg-encoding@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz#5abacf777c32166a51d085d6b4f3e7d27113ddb0" + integrity sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw== + dependencies: + iconv-lite "0.4.24" + +whatwg-fetch@3.0.0, whatwg-fetch@>=0.10.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-3.0.0.tgz#fc804e458cc460009b1a2b966bc8817d2578aefb" + integrity sha512-9GSJUgz1D4MfyKU7KRqwOjXCXTqWdFNvEr7eUBYchQiVc744mqK/MzXPNR2WsPkmkOa4ywfg8C2n8h+13Bey1Q== + +whatwg-mimetype@^2.1.0, whatwg-mimetype@^2.2.0, whatwg-mimetype@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz#3d4b1e0312d2079879f826aff18dbeeca5960fbf" + integrity sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g== + +whatwg-url@^6.4.1: + version "6.5.0" + resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-6.5.0.tgz#f2df02bff176fd65070df74ad5ccbb5a199965a8" + integrity sha512-rhRZRqx/TLJQWUpQ6bmrt2UV4f0HCQ463yQuONJqC6fO2VoEb1pTYddbe59SkYq87aoM5A3bdhMZiUiVws+fzQ== + dependencies: + lodash.sortby "^4.7.0" + tr46 "^1.0.1" + webidl-conversions "^4.0.2" + +whatwg-url@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-7.0.0.tgz#fde926fa54a599f3adf82dff25a9f7be02dc6edd" + integrity sha512-37GeVSIJ3kn1JgKyjiYNmSLP1yzbpb29jdmwBSgkD9h40/hyrR/OifpVUndji3tmwGgD8qpw7iQu3RSbCrBpsQ== + dependencies: + lodash.sortby "^4.7.0" + tr46 "^1.0.1" + webidl-conversions "^4.0.2" + +which-module@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" + integrity sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho= + +which@^1.2.12, which@^1.2.14, which@^1.2.9, which@^1.3.0: + version "1.3.1" + resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" + integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== + dependencies: + isexe "^2.0.0" + +wide-align@^1.1.0: + version "1.1.3" + resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.3.tgz#ae074e6bdc0c14a431e804e624549c633b000457" + integrity sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA== + dependencies: + string-width "^1.0.2 || 2" + +wordwrap@~0.0.2: + version "0.0.3" + resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.3.tgz#a3d5da6cd5c0bc0008d37234bbaf1bed63059107" + integrity sha1-o9XabNXAvAAI03I0u68b7WMFkQc= + +wordwrap@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" + integrity sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus= + +workbox-background-sync@^3.6.3: + version "3.6.3" + resolved "https://registry.yarnpkg.com/workbox-background-sync/-/workbox-background-sync-3.6.3.tgz#6609a0fac9eda336a7c52e6aa227ba2ae532ad94" + integrity sha512-ypLo0B6dces4gSpaslmDg5wuoUWrHHVJfFWwl1udvSylLdXvnrfhFfriCS42SNEe5lsZtcNZF27W/SMzBlva7Q== + dependencies: + workbox-core "^3.6.3" + +workbox-broadcast-cache-update@^3.6.3: + version "3.6.3" + resolved "https://registry.yarnpkg.com/workbox-broadcast-cache-update/-/workbox-broadcast-cache-update-3.6.3.tgz#3f5dff22ada8c93e397fb38c1dc100606a7b92da" + integrity sha512-pJl4lbClQcvp0SyTiEw0zLSsVYE1RDlCPtpKnpMjxFtu8lCFTAEuVyzxp9w7GF4/b3P4h5nyQ+q7V9mIR7YzGg== + dependencies: + workbox-core "^3.6.3" + +workbox-build@^3.6.3: + version "3.6.3" + resolved "https://registry.yarnpkg.com/workbox-build/-/workbox-build-3.6.3.tgz#77110f9f52dc5d82fa6c1c384c6f5e2225adcbd8" + integrity sha512-w0clZ/pVjL8VXy6GfthefxpEXs0T8uiRuopZSFVQ8ovfbH6c6kUpEh6DcYwm/Y6dyWPiCucdyAZotgjz+nRz8g== + dependencies: + babel-runtime "^6.26.0" + common-tags "^1.4.0" + fs-extra "^4.0.2" + glob "^7.1.2" + joi "^11.1.1" + lodash.template "^4.4.0" + pretty-bytes "^4.0.2" + stringify-object "^3.2.2" + strip-comments "^1.0.2" + workbox-background-sync "^3.6.3" + workbox-broadcast-cache-update "^3.6.3" + workbox-cache-expiration "^3.6.3" + workbox-cacheable-response "^3.6.3" + workbox-core "^3.6.3" + workbox-google-analytics "^3.6.3" + workbox-navigation-preload "^3.6.3" + workbox-precaching "^3.6.3" + workbox-range-requests "^3.6.3" + workbox-routing "^3.6.3" + workbox-strategies "^3.6.3" + workbox-streams "^3.6.3" + workbox-sw "^3.6.3" + +workbox-cache-expiration@^3.6.3: + version "3.6.3" + resolved "https://registry.yarnpkg.com/workbox-cache-expiration/-/workbox-cache-expiration-3.6.3.tgz#4819697254a72098a13f94b594325a28a1e90372" + integrity sha512-+ECNph/6doYx89oopO/UolYdDmQtGUgo8KCgluwBF/RieyA1ZOFKfrSiNjztxOrGJoyBB7raTIOlEEwZ1LaHoA== + dependencies: + workbox-core "^3.6.3" + +workbox-cacheable-response@^3.6.3: + version "3.6.3" + resolved "https://registry.yarnpkg.com/workbox-cacheable-response/-/workbox-cacheable-response-3.6.3.tgz#869f1a68fce9063f6869ddbf7fa0a2e0a868b3aa" + integrity sha512-QpmbGA9SLcA7fklBLm06C4zFg577Dt8u3QgLM0eMnnbaVv3rhm4vbmDpBkyTqvgK/Ly8MBDQzlXDtUCswQwqqg== + dependencies: + workbox-core "^3.6.3" + +workbox-core@^3.6.3: + version "3.6.3" + resolved "https://registry.yarnpkg.com/workbox-core/-/workbox-core-3.6.3.tgz#69abba70a4f3f2a5c059295a6f3b7c62bd00e15c" + integrity sha512-cx9cx0nscPkIWs8Pt98HGrS9/aORuUcSkWjG25GqNWdvD/pSe7/5Oh3BKs0fC+rUshCiyLbxW54q0hA+GqZeSQ== + +workbox-google-analytics@^3.6.3: + version "3.6.3" + resolved "https://registry.yarnpkg.com/workbox-google-analytics/-/workbox-google-analytics-3.6.3.tgz#99df2a3d70d6e91961e18a6752bac12e91fbf727" + integrity sha512-RQBUo/6SXtIaQTRFj4RQZ9e1gAl7D8oS5S+Hi173Kk70/BgJjzPwXpC5A249Jv5YfkCOLMQCeF9A27BiD0b0ig== + dependencies: + workbox-background-sync "^3.6.3" + workbox-core "^3.6.3" + workbox-routing "^3.6.3" + workbox-strategies "^3.6.3" + +workbox-navigation-preload@^3.6.3: + version "3.6.3" + resolved "https://registry.yarnpkg.com/workbox-navigation-preload/-/workbox-navigation-preload-3.6.3.tgz#a2c34eb7c17e7485b795125091215f757b3c4964" + integrity sha512-dd26xTX16DUu0i+MhqZK/jQXgfIitu0yATM4jhRXEmpMqQ4MxEeNvl2CgjDMOHBnCVMax+CFZQWwxMx/X/PqCw== + dependencies: + workbox-core "^3.6.3" + +workbox-precaching@^3.6.3: + version "3.6.3" + resolved "https://registry.yarnpkg.com/workbox-precaching/-/workbox-precaching-3.6.3.tgz#5341515e9d5872c58ede026a31e19bafafa4e1c1" + integrity sha512-aBqT66BuMFviPTW6IpccZZHzpA8xzvZU2OM1AdhmSlYDXOJyb1+Z6blVD7z2Q8VNtV1UVwQIdImIX+hH3C3PIw== + dependencies: + workbox-core "^3.6.3" + +workbox-range-requests@^3.6.3: + version "3.6.3" + resolved "https://registry.yarnpkg.com/workbox-range-requests/-/workbox-range-requests-3.6.3.tgz#3cc21cba31f2dd8c43c52a196bcc8f6cdbcde803" + integrity sha512-R+yLWQy7D9aRF9yJ3QzwYnGFnGDhMUij4jVBUVtkl67oaVoP1ymZ81AfCmfZro2kpPRI+vmNMfxxW531cqdx8A== + dependencies: + workbox-core "^3.6.3" + +workbox-routing@^3.6.3: + version "3.6.3" + resolved "https://registry.yarnpkg.com/workbox-routing/-/workbox-routing-3.6.3.tgz#659cd8f9274986cfa98fda0d050de6422075acf7" + integrity sha512-bX20i95OKXXQovXhFOViOK63HYmXvsIwZXKWbSpVeKToxMrp0G/6LZXnhg82ijj/S5yhKNRf9LeGDzaqxzAwMQ== + dependencies: + workbox-core "^3.6.3" + +workbox-strategies@^3.6.3: + version "3.6.3" + resolved "https://registry.yarnpkg.com/workbox-strategies/-/workbox-strategies-3.6.3.tgz#11a0dc249a7bc23d3465ec1322d28fa6643d64a0" + integrity sha512-Pg5eulqeKet2y8j73Yw6xTgLdElktcWExGkzDVCGqfV9JCvnGuEpz5eVsCIK70+k4oJcBCin9qEg3g3CwEIH3g== + dependencies: + workbox-core "^3.6.3" + +workbox-streams@^3.6.3: + version "3.6.3" + resolved "https://registry.yarnpkg.com/workbox-streams/-/workbox-streams-3.6.3.tgz#beaea5d5b230239836cc327b07d471aa6101955a" + integrity sha512-rqDuS4duj+3aZUYI1LsrD2t9hHOjwPqnUIfrXSOxSVjVn83W2MisDF2Bj+dFUZv4GalL9xqErcFW++9gH+Z27w== + dependencies: + workbox-core "^3.6.3" + +workbox-sw@^3.6.3: + version "3.6.3" + resolved "https://registry.yarnpkg.com/workbox-sw/-/workbox-sw-3.6.3.tgz#278ea4c1831b92bbe2d420da8399176c4b2789ff" + integrity sha512-IQOUi+RLhvYCiv80RP23KBW/NTtIvzvjex28B8NW1jOm+iV4VIu3VXKXTA6er5/wjjuhmtB28qEAUqADLAyOSg== + +workbox-webpack-plugin@3.6.3: + version "3.6.3" + resolved "https://registry.yarnpkg.com/workbox-webpack-plugin/-/workbox-webpack-plugin-3.6.3.tgz#a807bb891b4e4e3c808df07e58f17de2d5ba6182" + integrity sha512-RwmKjc7HFHUFHoOlKoZUq9349u0QN3F8W5tZZU0vc1qsBZDINWXRiIBCAKvo/Njgay5sWz7z4I2adnyTo97qIQ== + dependencies: + babel-runtime "^6.26.0" + json-stable-stringify "^1.0.1" + workbox-build "^3.6.3" + +worker-farm@^1.5.2: + version "1.6.0" + resolved "https://registry.yarnpkg.com/worker-farm/-/worker-farm-1.6.0.tgz#aecc405976fab5a95526180846f0dba288f3a4a0" + integrity sha512-6w+3tHbM87WnSWnENBUvA2pxJPLhQUg5LKwUQHq3r+XPhIM+Gh2R5ycbwPCyuGbNg+lPgdcnQUhuC02kJCvffQ== + dependencies: + errno "~0.1.7" + +wrap-ansi@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85" + integrity sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU= + dependencies: + string-width "^1.0.1" + strip-ansi "^3.0.1" + +wrappy@1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" + integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= + +write-file-atomic@^2.1.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-2.3.0.tgz#1ff61575c2e2a4e8e510d6fa4e243cce183999ab" + integrity sha512-xuPeK4OdjWqtfi59ylvVL0Yn35SF3zgcAcv7rBPFHVaEapaDr4GdGgm3j7ckTwH9wHL7fGmgfAnb0+THrHb8tA== + dependencies: + graceful-fs "^4.1.11" + imurmurhash "^0.1.4" + signal-exit "^3.0.2" + +write@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/write/-/write-0.2.1.tgz#5fc03828e264cea3fe91455476f7a3c566cb0757" + integrity sha1-X8A4KOJkzqP+kUVUdvejxWbLB1c= + dependencies: + mkdirp "^0.5.1" + +ws@^3.0.0: + version "3.3.3" + resolved "https://registry.yarnpkg.com/ws/-/ws-3.3.3.tgz#f1cf84fe2d5e901ebce94efaece785f187a228f2" + integrity sha512-nnWLa/NwZSt4KQJu51MYlCcSQ5g7INpOrOMt4XV8j4dqTXdmlUmSHQ8/oLC069ckre0fRsgfvsKwbTdtKLCDkA== + dependencies: + async-limiter "~1.0.0" + safe-buffer "~5.1.0" + ultron "~1.1.0" + +ws@^5.2.0: + version "5.2.2" + resolved "https://registry.yarnpkg.com/ws/-/ws-5.2.2.tgz#dffef14866b8e8dc9133582514d1befaf96e980f" + integrity sha512-jaHFD6PFv6UgoIVda6qZllptQsMlDEJkTQcybzzXDYM1XO9Y8em691FGMPmM46WGyLU4z9KMgQN+qrux/nhlHA== + dependencies: + async-limiter "~1.0.0" + +ws@^6.1.2: + version "6.1.2" + resolved "https://registry.yarnpkg.com/ws/-/ws-6.1.2.tgz#3cc7462e98792f0ac679424148903ded3b9c3ad8" + integrity sha512-rfUqzvz0WxmSXtJpPMX2EeASXabOrSMk1ruMOV3JBTBjo4ac2lDjGGsbQSyxj8Odhw5fBib8ZKEjDNvgouNKYw== + dependencies: + async-limiter "~1.0.0" + +xhr-request-promise@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/xhr-request-promise/-/xhr-request-promise-0.1.2.tgz#343c44d1ee7726b8648069682d0f840c83b4261d" + integrity sha1-NDxE0e53JrhkgGloLQ+EDIO0Jh0= + dependencies: + xhr-request "^1.0.1" + +xhr-request@^1.0.1: + version "1.1.0" + resolved "https://registry.yarnpkg.com/xhr-request/-/xhr-request-1.1.0.tgz#f4a7c1868b9f198723444d82dcae317643f2e2ed" + integrity sha512-Y7qzEaR3FDtL3fP30k9wO/e+FBnBByZeybKOhASsGP30NIkRAAkKD/sCnLvgEfAIEC1rcmK7YG8f4oEnIrrWzA== + dependencies: + buffer-to-arraybuffer "^0.0.5" + object-assign "^4.1.1" + query-string "^5.0.1" + simple-get "^2.7.0" + timed-out "^4.0.1" + url-set-query "^1.0.0" + xhr "^2.0.4" + +xhr2-cookies@1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/xhr2-cookies/-/xhr2-cookies-1.1.0.tgz#7d77449d0999197f155cb73b23df72505ed89d48" + integrity sha1-fXdEnQmZGX8VXLc7I99yUF7YnUg= + dependencies: + cookiejar "^2.1.1" + +xhr@^2.0.4, xhr@^2.3.3: + version "2.5.0" + resolved "https://registry.yarnpkg.com/xhr/-/xhr-2.5.0.tgz#bed8d1676d5ca36108667692b74b316c496e49dd" + integrity sha512-4nlO/14t3BNUZRXIXfXe+3N6w3s1KoxcJUUURctd64BLRe67E4gRwp4PjywtDY72fXpZ1y6Ch0VZQRY/gMPzzQ== + dependencies: + global "~4.3.0" + is-function "^1.0.1" + parse-headers "^2.0.0" + xtend "^4.0.0" + +xml-name-validator@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-3.0.0.tgz#6ae73e06de4d8c6e47f9fb181f78d648ad457c6a" + integrity sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw== + +xmlchars@^1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/xmlchars/-/xmlchars-1.3.1.tgz#1dda035f833dbb4f86a0c28eaa6ca769214793cf" + integrity sha512-tGkGJkN8XqCod7OT+EvGYK5Z4SfDQGD30zAa58OcnAa0RRWgzUEK72tkXhsX1FZd+rgnhRxFtmO+ihkp8LHSkw== + +xmlhttprequest@1.8.0: + version "1.8.0" + resolved "https://registry.yarnpkg.com/xmlhttprequest/-/xmlhttprequest-1.8.0.tgz#67fe075c5c24fef39f9d65f5f7b7fe75171968fc" + integrity sha1-Z/4HXFwk/vOfnWX197f+dRcZaPw= + +xregexp@4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/xregexp/-/xregexp-4.0.0.tgz#e698189de49dd2a18cc5687b05e17c8e43943020" + integrity sha512-PHyM+sQouu7xspQQwELlGwwd05mXUFqwFYfqPO0cC7x4fxyHnnuetmQr6CjJiafIDoH4MogHb9dOoJzR/Y4rFg== + +xtend@^4.0.0, xtend@^4.0.1, xtend@~4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af" + integrity sha1-pcbVMr5lbiPbgg77lDofBJmNY68= + +y18n@^3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/y18n/-/y18n-3.2.1.tgz#6d15fba884c08679c0d77e88e7759e811e07fa41" + integrity sha1-bRX7qITAhnnA136I53WegR4H+kE= + +"y18n@^3.2.1 || ^4.0.0", y18n@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.0.tgz#95ef94f85ecc81d007c264e190a120f0a3c8566b" + integrity sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w== + +yaeti@^0.0.6: + version "0.0.6" + resolved "https://registry.yarnpkg.com/yaeti/-/yaeti-0.0.6.tgz#f26f484d72684cf42bedfb76970aa1608fbf9577" + integrity sha1-8m9ITXJoTPQr7ft2lwqhYI+/lXc= + +yallist@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" + integrity sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI= + +yallist@^3.0.0, yallist@^3.0.2: + version "3.0.3" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.0.3.tgz#b4b049e314be545e3ce802236d6cd22cd91c3de9" + integrity sha512-S+Zk8DEWE6oKpV+vI3qWkaK+jSbIK86pCwe2IF/xwIpQ8jEuxpw9NyaGjmp9+BoJv5FV2piqCDcoCtStppiq2A== + +yargs-parser@^10.1.0: + version "10.1.0" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-10.1.0.tgz#7202265b89f7e9e9f2e5765e0fe735a905edbaa8" + integrity sha512-VCIyR1wJoEBZUqk5PA+oOBF6ypbwh5aNB3I50guxAL/quggdfs4TtNHQrSazFA3fYZ+tEqfs0zIGlv0c/rgjbQ== + dependencies: + camelcase "^4.1.0" + +yargs-parser@^9.0.2: + version "9.0.2" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-9.0.2.tgz#9ccf6a43460fe4ed40a9bb68f48d43b8a68cc077" + integrity sha1-nM9qQ0YP5O1Aqbto9I1DuKaMwHc= + dependencies: + camelcase "^4.1.0" + +yargs@12.0.2: + version "12.0.2" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-12.0.2.tgz#fe58234369392af33ecbef53819171eff0f5aadc" + integrity sha512-e7SkEx6N6SIZ5c5H22RTZae61qtn3PYUE8JYbBFlK9sYmh3DMQ6E5ygtaG/2BW0JZi4WGgTR2IV5ChqlqrDGVQ== + dependencies: + cliui "^4.0.0" + decamelize "^2.0.0" + find-up "^3.0.0" + get-caller-file "^1.0.1" + os-locale "^3.0.0" + require-directory "^2.1.1" + require-main-filename "^1.0.1" + set-blocking "^2.0.0" + string-width "^2.0.0" + which-module "^2.0.0" + y18n "^3.2.1 || ^4.0.0" + yargs-parser "^10.1.0" + +yargs@^11.0.0: + version "11.1.0" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-11.1.0.tgz#90b869934ed6e871115ea2ff58b03f4724ed2d77" + integrity sha512-NwW69J42EsCSanF8kyn5upxvjp5ds+t3+udGBeTbFnERA+lF541DDpMawzo4z6W/QrzNM18D+BPMiOBibnFV5A== + dependencies: + cliui "^4.0.0" + decamelize "^1.1.1" + find-up "^2.1.0" + get-caller-file "^1.0.1" + os-locale "^2.0.0" + require-directory "^2.1.1" + require-main-filename "^1.0.1" + set-blocking "^2.0.0" + string-width "^2.0.0" + which-module "^2.0.0" + y18n "^3.2.1" + yargs-parser "^9.0.2" + +yauzl@^2.4.2: + version "2.10.0" + resolved "https://registry.yarnpkg.com/yauzl/-/yauzl-2.10.0.tgz#c7eb17c93e112cb1086fa6d8e51fb0667b79a5f9" + integrity sha1-x+sXyT4RLLEIb6bY5R+wZnt5pfk= + dependencies: + buffer-crc32 "~0.2.3" + fd-slicer "~1.1.0" diff --git a/contracts/ERC165.sol b/contracts/ERC165.sol new file mode 100644 index 0000000..8903be1 --- /dev/null +++ b/contracts/ERC165.sol @@ -0,0 +1,44 @@ +pragma solidity ^0.5.0; + +import "./IERC165.sol"; + +/** + * @title ERC165 + * @author Matt Condon (@shrugs) + * @dev Implements ERC165 using a lookup table. + */ +contract ERC165 is IERC165 { + bytes4 private constant _InterfaceId_ERC165 = 0x01ffc9a7; + /** + * 0x01ffc9a7 === + * bytes4(keccak256('supportsInterface(bytes4)')) + */ + + /** + * @dev a mapping of interface id to whether or not it's supported + */ + mapping(bytes4 => bool) private _supportedInterfaces; + + /** + * @dev A contract implementing SupportsInterfaceWithLookup + * implement ERC165 itself + */ + constructor () internal { + _registerInterface(_InterfaceId_ERC165); + } + + /** + * @dev implement supportsInterface(bytes4) using a lookup table + */ + function supportsInterface(bytes4 interfaceId) external view returns (bool) { + return _supportedInterfaces[interfaceId]; + } + + /** + * @dev internal method for registering an interface + */ + function _registerInterface(bytes4 interfaceId) internal { + require(interfaceId != 0xffffffff); + _supportedInterfaces[interfaceId] = true; + } +} diff --git a/contracts/IERC165.sol b/contracts/IERC165.sol new file mode 100644 index 0000000..393e6fb --- /dev/null +++ b/contracts/IERC165.sol @@ -0,0 +1,15 @@ +pragma solidity ^0.5.0; + +/** + * @title IERC165 + * @dev https://github.com/ethereum/EIPs/blob/master/EIPS/eip-165.md + */ +interface IERC165 { + /** + * @notice Query if a contract implements an interface + * @param interfaceId The interface identifier, as specified in ERC-165 + * @dev Interface identification is specified in ERC-165. This function + * uses less than 30,000 gas. + */ + function supportsInterface(bytes4 interfaceId) external view returns (bool); +} diff --git a/contracts/Migrations.sol b/contracts/Migrations.sol new file mode 100644 index 0000000..89d6ee3 --- /dev/null +++ b/contracts/Migrations.sol @@ -0,0 +1,23 @@ +pragma solidity >=0.4.21 <0.6.0; + +contract Migrations { + address public owner; + uint public last_completed_migration; + + constructor() public { + owner = msg.sender; + } + + modifier restricted() { + if (msg.sender == owner) _; + } + + function setCompleted(uint completed) public restricted { + last_completed_migration = completed; + } + + function upgrade(address new_address) public restricted { + Migrations upgraded = Migrations(new_address); + upgraded.setCompleted(last_completed_migration); + } +} diff --git a/contracts/SafeMath.sol b/contracts/SafeMath.sol new file mode 100644 index 0000000..5dd4bb9 --- /dev/null +++ b/contracts/SafeMath.sol @@ -0,0 +1,65 @@ +pragma solidity ^0.5.2; + +/** + * @title SafeMath + * @dev Unsigned math operations with safety checks that revert on error + */ +library SafeMath { + /** + * @dev Multiplies two unsigned integers, reverts on overflow. + */ + function mul(uint256 a, uint256 b) internal pure returns (uint256) { + // Gas optimization: this is cheaper than requiring 'a' not being zero, but the + // benefit is lost if 'b' is also tested. + // See: https://github.com/OpenZeppelin/openzeppelin-solidity/pull/522 + if (a == 0) { + return 0; + } + + uint256 c = a * b; + require(c / a == b); + + return c; + } + + /** + * @dev Integer division of two unsigned integers truncating the quotient, reverts on division by zero. + */ + function div(uint256 a, uint256 b) internal pure returns (uint256) { + // Solidity only automatically asserts when dividing by 0 + require(b > 0); + uint256 c = a / b; + // assert(a == b * c + a % b); // There is no case in which this doesn't hold + + return c; + } + + /** + * @dev Subtracts two unsigned integers, reverts on overflow (i.e. if subtrahend is greater than minuend). + */ + function sub(uint256 a, uint256 b) internal pure returns (uint256) { + require(b <= a); + uint256 c = a - b; + + return c; + } + + /** + * @dev Adds two unsigned integers, reverts on overflow. + */ + function add(uint256 a, uint256 b) internal pure returns (uint256) { + uint256 c = a + b; + require(c >= a); + + return c; + } + + /** + * @dev Divides two unsigned integers and returns the remainder (unsigned integer modulo), + * reverts when dividing by zero. + */ + function mod(uint256 a, uint256 b) internal pure returns (uint256) { + require(b != 0); + return a % b; + } +} diff --git a/contracts/SmartPiggies.sol b/contracts/SmartPiggies.sol new file mode 100644 index 0000000..6ebe4cc --- /dev/null +++ b/contracts/SmartPiggies.sol @@ -0,0 +1,952 @@ +/** +SmartPiggies is an open source standard for +a free peer to peer global derivatives market + +Copyright (C) 2019, Arief, Algya, Lee + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +**/ +pragma solidity >=0.4.24 <0.6.0; +pragma experimental ABIEncoderV2; + +// massive thanks to ERC-721 spec for this D: + +// references to "oracles" could use a different / more general term +// so that the spec could use signed data directly from "source" w/ same interface + +interface PaymentToken { + function transferFrom(address from, address to, uint256 value) external returns (bool); + function transfer(address to, uint256 value) external returns (bool); + function decimals() external returns (uint8); +} + +import "./ERC165.sol"; +import "./SafeMath.sol"; + +/** @title ERC-59 (subject to change) Smart Option Standard +*/ +contract SmartPiggies is ERC165 { + using SafeMath for uint256; + + address payable owner; + uint256 public tokenId; + + struct DetailAddresses { + address writer; + address holder; + address collateralERC; + address premiumERC; + address dataResolverNow; + address dataResolverAtExpiry; + } + + struct DetailUints { + uint256 collateral; + uint256 lotSize; + uint256 strikePrice; + uint256 expiry; + uint256 settlementPrice; + uint256 reqCollateral; + uint8 collateralDecimals; // to store decimals from ERC-20 contract + } + + struct BoolFlags { + bool isRequest; + bool isEuro; + bool isPut; + bool hasBeenCleared; // to flag whether the oracle returned a callback w/ price + } + + struct DetailAuction { + uint256 startBlock; + uint256 expiryBlock; + uint256 startPrice; + uint256 reservePrice; + uint256 timeStep; + uint256 priceStep; + bool auctionActive; + bool satisfyInProgress; // mutex guard to disallow ending an auction if a transaction to satisfy is in progress + } + + struct Piggy { + DetailAddresses addresses; //address details + DetailUints uintDetails; //number details + BoolFlags flags; //parameter switches + } + + mapping (address => mapping(address => uint256)) private ERC20balances; + mapping (address => uint256[]) private ownedPiggies; //again, public? + mapping (uint256 => uint256) private ownedPiggiesIndex; + mapping (uint256 => Piggy) private piggies; + mapping (uint256 => DetailAuction) private auctions; + + /* + add events + */ + + event CreatePiggy( + address indexed from, + uint256 indexed tokenId, + uint256 indexed strike, + uint256 expiryBlock, + bool RFP + ); + + event TransferPiggy( + address indexed from, + address indexed to, + uint256 indexed tokenId + ); + + event UpdateRFP( + address indexed from, + uint256 indexed tokenId, + address collateralERC, + address premiumERC, + address dataResolverNow, + address dataResolverAtExpiry, + uint256 reqCollateral, + uint256 lotSize, + uint256 strikePrice, + uint256 expiry, + bool isEuro, + bool isPut + ); + + event ReclaimAndBurn( + address indexed from, + uint256 indexed tokenId, + bool indexed RFP + ); + + event StartAuction( + address indexed from, + uint256 indexed tokenId, + uint256 startPrice, + uint256 reservePrice, + uint256 auctionLength, + uint256 timeStep, + uint256 priceStep + ); + + event EndAuction( + address indexed from, + uint256 indexed tokenId, + bool indexed RFP + ); + + event SatisfyAuction( + address indexed from, + uint256 indexed tokenId, + uint256 paidPremium, + uint256 change, + uint256 auctionPremium + ); + + event RequestSettlementPrice( + address indexed feePayer, + uint256 indexed tokenId, + uint256 oracleFee, + address dataResolver + ); + + event OracleReturned( + address indexed resolver, + uint256 indexed tokenId, + uint256 indexed price + ); + + event SettlePiggy( + address indexed from, + uint256 indexed tokenId, + uint256 indexed holderPayout, + uint256 writerPayout + ); + + event ClaimPayout( + address indexed from, + uint256 indexed amount, + address indexed paymentToken + ); + + /** + constructor should throw if various things aren't properly set + also should throw if the contract is not delegated an amount of collateral designated + in the reference ERC-20 which is >= the collateral value of the piggy + */ + constructor() + public + { + //declarations here + owner = msg.sender; //so we can delete if from the testnet + } + + // abstract ERC-20 TransferFrom attepmts + function attemptPaymentTransfer(address _ERC20, address _from, address _to, uint256 _amount) + private + returns (bool) + { + (bool success, ) = address(PaymentToken(_ERC20)).call( + abi.encodeWithSignature( + "transferFrom(address,address,uint256)", + _from, + _to, + _amount + ) + ); + return success; + } + + // token should capture claim fields --> "getSellerClaim()" / "getOwnerClaim()" ? + // the oracle has to do a lot of heavy lifting in the current design, and the token needs + // to be created with extreme care wrt the oracle metadata + // if we want to do "capped" options as traditional, need more metadata re: endpoints i guess + /** @notice Create a new ERC-59 token + @dev Throws if `_collateralERC` is not a valid Ethereum (ERC-20) address. + Throws if `_premiumERC` is not a valid Ethereum (ERC-20) address (may be same + as `_collateralERC`). + Throws if `_oracle` is not a valid Ethereum address. + Throws if `_expiry` < block.number. + If `_asRequest` is true, throws if `_reqCollateral` == 0. + If `_asRequest` is false, throws if msg.sender has not delegated at least `_collateral` + in the ERC-20 token whose contract is `_collateralERC` to the ERC-59 contract. + When a new token is created, msg.sender should be recorded as the creator and owner. + If `_asRequest` is true, the zero address should be recorded as the seller. + If `_asRequest` is false, msg.sender should be recorded as the seller. + If `_asRequest` is false, `_reqCollateral` will be irrelevant and should be captured as 0. + If `_asRequest` is false, the ERC-59 contract must take ownership of `_collateral` amount + of ERC-20 tokens governed by the `_collateralERC` contract. + @param _collateralERC The address of the reference ERC-20 token to be used as collateral + @param _premiumERC The address of the reference ERC-20 token to be used to pay the premium + param _oracle The address of a service contract which will return the settlement price + param _asRequest If true, will create the token as an "RFP" / request for a particular option + param _underlyingNow An identifier for the reference underlying which the contract at `_oracle` + is able to parse to return the current price of the underlying + param _underlyingExpiry An identifier for the reference underlying which the contract at + `_oracle` is able to parse to return the price of the underlying at `_expiry` + @param _collateral The amount of collateral for the option, denominated in units of the token + at the `_collateralERC` address + @param _lotSize A multiplier on the settlement price used to determine settlement claims + @param _strikePrice The strike value of the option, in the same units as the settlement price + @param _expiry The block height at which the option will expire + param _reqCollateral The amount of collateral desired in the option, if creating with + `_asRequest` == true, denominated in units of the token at the `_collateralERC` address + @param _isEuro If true, the option can only be settled at or after `_expiry` is reached, else + it can be settled at any time + @param _isPut If true, the settlement claims will be calculated for a put option; else they + will be calculated for a call option + */ + function createPiggy( + address _collateralERC, + address _premiumERC, + address _dataResolverNow, + address _dataResolverAtExpiry, + uint256 _collateral, + uint256 _lotSize, + uint256 _strikePrice, + uint256 _expiry, + bool _isEuro, + bool _isPut, + bool _isRequest + ) + public + returns (bool) + { + require( + _collateralERC != address(0) && + _premiumERC != address(0) && + _dataResolverNow != address(0) && + _dataResolverAtExpiry != address(0), + "addresses cannot be zero" + ); + require( + _collateral != 0 && + _lotSize != 0 && + _strikePrice != 0 && + _expiry != 0, + "option parameters cannot be zero" + ); + // if not an RFP, make sure the collateral can be transferred + if (!_isRequest) { + bool success = attemptPaymentTransfer( + _collateralERC, //_collateralERC + msg.sender, + address(this), + _collateral + ); + require(success, "Token transfer did not complete"); + } + // any other checks that need to be performed specifically for RFPs ? + + // assuming all checks have passed: + tokenId = tokenId.add(1); + + // write the values to storage, including _isRequest flag + Piggy storage p = piggies[tokenId]; + p.addresses.holder = msg.sender; + p.addresses.collateralERC = _collateralERC; + p.addresses.premiumERC = _premiumERC; + p.addresses.dataResolverNow = _dataResolverNow; + p.addresses.dataResolverAtExpiry = _dataResolverAtExpiry; + p.uintDetails.collateralDecimals = _getERC20Decimals(_collateralERC); + p.uintDetails.lotSize = _lotSize; + p.uintDetails.strikePrice = _strikePrice; + p.uintDetails.expiry = _expiry.add(block.number); + p.flags.isEuro = _isEuro; + p.flags.isPut = _isPut; + p.flags.isRequest = _isRequest; + + // conditional state variable assignments based on _isRequest: + if (_isRequest) { + p.uintDetails.reqCollateral = _collateral; + } else { + p.addresses.writer = msg.sender; + p.uintDetails.collateral = _collateral; + } + _addTokenToOwnedPiggies(msg.sender, tokenId); + + emit CreatePiggy( + msg.sender, + tokenId, + _strikePrice, + _expiry.add(block.number), + _isRequest + ); + + return true; + } + +// make sure the ERC-20 contract for collateral correctly reports decimals +function _getERC20Decimals(address _ERC20) + internal + returns (uint8) +{ + (bool success, bytes memory _decBytes) = address(PaymentToken(_ERC20)).call( + abi.encodeWithSignature("decimals()") + ); + require(success, "collateral ERC-20 contract does not properly specify decimals"); + // convert bytes to uint8: + uint256 _ERCdecimals; + for(uint256 i=0; i < _decBytes.length; i++) { + _ERCdecimals = _ERCdecimals + uint8(_decBytes[i])*(2**(8*(_decBytes.length-(i+1)))); + } + return uint8(_ERCdecimals); +} + + // helper function to view info from about the piggy outside of the contract + function getDetails(uint256 _tokenId) + public + view + returns (Piggy memory) + { + return piggies[_tokenId]; + } + + // this is a helper function to allow view of auction details + function getAuctionDetails(uint256 _tokenId) + public + view + returns (DetailAuction memory) + { + return auctions[_tokenId]; + } + + /** @notice Count the number of ERC-59 tokens owned by a particular address + @dev ERC-59 tokens assigned to the zero address are considered invalid, and this + function throws for queries about the zero address. + @param _owner An address for which to query the balance of ERC-59 tokens + @return The number of ERC-59 tokens owned by `_owner`, possibly zero + */ + function getOwnedPiggies(address _owner) + public + view + returns (uint256[] memory) + { + require(_owner != address(0), "address cannot be zero"); + return ownedPiggies[_owner]; + } + + function getERC20balance(address _owner, address _erc20) + public + view + returns (uint256) + { + require(_owner != address(0), "address cannot be zero"); + return ERC20balances[_owner][_erc20]; + } + + function transferFrom(address _from, address _to, uint256 _tokenId) + public + { + require(msg.sender == piggies[_tokenId].addresses.holder, "msg.sender is not the owner"); //openzep doesn't do this + _internalTransfer(_from, _to, _tokenId); + } + + // internal transfer for transfers made on behalf of the contract + function _internalTransfer(address _from, address _to, uint256 _tokenId) + internal + { + require(_from == piggies[_tokenId].addresses.holder, "from address is not the owner"); + require(_to != address(0), "to address is zero"); + _removeTokenFromOwnedPiggies(_from, _tokenId); + _addTokenToOwnedPiggies(_to, _tokenId); + piggies[_tokenId].addresses.holder = _to; + emit TransferPiggy(_from, _to, _tokenId); + } + + // possibly add function to update reqCollateral if token is an RFP and hasn't been successfully fulfilled + // maybe allow all fields of an RFP to be updated ? + // this may be more trouble than it is worth. could allow this function to accept a struct, and check if any keys matching fields of Piggy are nonzero, if so, update those ones + function updateRFP( + uint256 _tokenId, + address _collateralERC, + address _premiumERC, + address _dataResolverNow, + address _dataResolverAtExpiry, + uint256 _reqCollateral, + uint256 _lotSize, + uint256 _strikePrice, + uint256 _expiry, + bool _isEuro, // MUST be specified + bool _isPut // MUST be specified + ) + public + returns (bool) + { + require(piggies[_tokenId].addresses.holder == msg.sender, "you must own the RFP to update it"); + require(piggies[_tokenId].flags.isRequest, "you can only update an RFP"); + uint256 expiryBlock; + if (_collateralERC != address(0)) { + piggies[_tokenId].addresses.collateralERC = _collateralERC; + } + if (_premiumERC != address(0)) { + piggies[_tokenId].addresses.premiumERC = _premiumERC; + } + if (_dataResolverNow != address(0)) { + piggies[_tokenId].addresses.dataResolverNow = _dataResolverNow; + } + if (_dataResolverAtExpiry != address(0)) { + piggies[_tokenId].addresses.dataResolverAtExpiry = _dataResolverAtExpiry; + } + if (_reqCollateral != 0) { + piggies[_tokenId].uintDetails.reqCollateral = _reqCollateral; + } + if (_lotSize != 0) { + piggies[_tokenId].uintDetails.lotSize = _lotSize; + } + if (_strikePrice != 0 ) { + piggies[_tokenId].uintDetails.strikePrice = _strikePrice; + } + if (_expiry != 0) { + // should this redo the expiry calculation? to be consistent w/ how the creation function works ? + expiryBlock = _expiry.add(block.number); + piggies[_tokenId].uintDetails.expiry = expiryBlock; + } + piggies[_tokenId].flags.isEuro = _isEuro; + piggies[_tokenId].flags.isPut = _isPut; + + emit UpdateRFP( + msg.sender, + _tokenId, + _collateralERC, + _premiumERC, + _dataResolverNow, + _dataResolverAtExpiry, + _reqCollateral, + _lotSize, + _strikePrice, + expiryBlock, + _isEuro, + _isPut + ); + + return true; + } + + // this function can be used to burn any token; if it is an option, will return collateral before burning + function reclaimAndBurn(uint256 _tokenId) + public + returns (bool) + { + require(msg.sender == piggies[_tokenId].addresses.holder, "you must own the token to burn it"); + require(!auctions[_tokenId].auctionActive, "you cannot burn a token which is on auction"); + if (!piggies[_tokenId].flags.isRequest) { + require(msg.sender == piggies[_tokenId].addresses.writer, "you must own the collateral to reclaim it"); + // return the collateral to sender + PaymentToken(piggies[_tokenId].addresses.collateralERC).transfer(msg.sender, piggies[_tokenId].uintDetails.collateral); + } + emit ReclaimAndBurn(msg.sender, _tokenId, piggies[_tokenId].flags.isRequest); + //remove id from index mapping + _removeTokenFromOwnedPiggies(piggies[_tokenId].addresses.holder, _tokenId); + // burn the token (zero out storage fields) + _resetPiggy(_tokenId); + return true; + } + + function _clearAuctionDetails(uint256 _tokenId) + internal + { + auctions[_tokenId].startBlock = 0; + auctions[_tokenId].expiryBlock = 0; + auctions[_tokenId].startPrice = 0; + auctions[_tokenId].reservePrice = 0; + auctions[_tokenId].timeStep = 0; + auctions[_tokenId].priceStep = 0; + auctions[_tokenId].auctionActive = false; + // I don't think we want this one to touch the two state flags; handle those on a per-function basis in the order that makes sense probably + // MIGHT be ok to set auctionActive = false here though actually... + } + + function startAuction( + uint256 _tokenId, + uint256 _startPrice, + uint256 _reservePrice, + uint256 _auctionLength, + uint256 _timeStep, + uint256 _priceStep + ) + external + returns (bool) + { + uint256 _auctionExpiry = block.number.add(_auctionLength); + require(piggies[_tokenId].addresses.holder == msg.sender, "you must own a token to auction it"); + require(piggies[_tokenId].uintDetails.expiry > block.number, "option must not be expired"); + require(piggies[_tokenId].uintDetails.expiry > _auctionExpiry, "auction cannot expire after the option"); + require(!piggies[_tokenId].flags.hasBeenCleared, "option cannot have been cleared"); + require(!auctions[_tokenId].auctionActive, "auction cannot already be running"); + // as specified below, this is not needed if we change the function (as I have done) to accept an _auctionLength rather than a direct _auctionExpiry value + //require(_auctionExpiry > block.number, "auction must expire in the future"); // DO WE WANT TO ALSO ADD A BUFFER HERE? LIKE IT MUST EXPIRE AT LEAST XX BLOCKS IN THE FUTURE? + if (piggies[_tokenId].flags.isRequest) { + bool success = attemptPaymentTransfer( + piggies[_tokenId].addresses.premiumERC, + msg.sender, + address(this), + _reservePrice // this should be the max the requestor is willing to pay in a reverse dutch auction + ); + require(success, "transferFrom did not return true"); + } + // if we made it past the various checks, set the auction metadata up in auctions mapping + auctions[_tokenId].startBlock = block.number; + auctions[_tokenId].expiryBlock = _auctionExpiry; + auctions[_tokenId].startPrice = _startPrice; + auctions[_tokenId].reservePrice = _reservePrice; + auctions[_tokenId].timeStep = _timeStep; + auctions[_tokenId].priceStep = _priceStep; + auctions[_tokenId].auctionActive = true; + + emit StartAuction( + msg.sender, + _tokenId, + _startPrice, + _reservePrice, + _auctionLength, + _timeStep, + _priceStep + ); + + return true; + } + + function endAuction(uint256 _tokenId) + public + returns (bool) + { + require(piggies[_tokenId].addresses.holder == msg.sender, "you must own a token to auction it"); + require(auctions[_tokenId].auctionActive, "auction must be active to cancel it"); + require(!auctions[_tokenId].satisfyInProgress, "auction cannot be in the process of being satisfied"); // this should be added to other functions as well + if (piggies[_tokenId].flags.isRequest) { + // refund the _reservePrice premium + uint256 _premiumToReturn = auctions[_tokenId].reservePrice; + //auctions[_tokenId].reservePrice = 0; // this sort of offends my sensibilities because we only zero out one auction param, but it is the only one required to change for this logic to work + PaymentToken(piggies[_tokenId].addresses.premiumERC).transfer(msg.sender, _premiumToReturn); + } + _clearAuctionDetails(_tokenId); + emit EndAuction(msg.sender, _tokenId, piggies[_tokenId].flags.isRequest); + return true; + } + + // calculate the price for satisfaction of an auction + // this is an interpolated linear price based on the supplied auction parameters at a resolution of 1 block + function getAuctionPrice(uint256 _tokenId) + internal + view + returns (uint256) + { + // I think we can skip various checks here since they will be in the satisfyAuction function instead + // (e.g. making sure auction is active and not expired, etc. etc.) + uint256 _pStart = auctions[_tokenId].startPrice; + // price delta is (time elapsed) * (price change per time step) + uint256 _pDelta = (block.number).sub(auctions[_tokenId].startBlock).mul(auctions[_tokenId].priceStep).div(auctions[_tokenId].timeStep); + if (piggies[_tokenId].flags.isRequest) { + return _pStart.add(_pDelta); + } else { + return (_pStart.sub(_pDelta)); + } + } + + // consider possible attacks and refactor if needed + function satisfyAuction(uint256 _tokenId) + public + returns (bool) + { + require(!auctions[_tokenId].satisfyInProgress, "cannot reenter this function while it is in progress"); + require(piggies[_tokenId].addresses.holder != msg.sender, "cannot satisfy your own auction; use endAuction instead"); + require(auctions[_tokenId].auctionActive, "auction must be active to satisfy it"); + // if auction is "active" according to state but has expired, change state + if (auctions[_tokenId].expiryBlock < block.number) { + //auctions[_tokenId].auctionActive = false; // handled by _clearAuctionDetails now + _clearAuctionDetails(_tokenId); + return false; + } + // get linear auction premium; reserve price should be a ceiling or floor depending on whether this is an RFP or an option, respectively + uint256 _auctionPremium = getAuctionPrice(_tokenId); + // lock mutex + auctions[_tokenId].satisfyInProgress = true; + if (piggies[_tokenId].flags.isRequest) { + // msg.sender needs to delegate reqCollateral + bool success = attemptPaymentTransfer( + piggies[_tokenId].addresses.collateralERC, + msg.sender, + address(this), + piggies[_tokenId].uintDetails.reqCollateral + ); + if (!success) { + auctions[_tokenId].satisfyInProgress = false; + return false; + } + // if the collateral transfer succeeded, collateral gets set to reqCollateral + piggies[_tokenId].uintDetails.collateral = piggies[_tokenId].uintDetails.reqCollateral; + // calculate adjusted premium (based on reservePrice) + possible change due back to current holder + uint256 _change = 0; + uint256 _adjPremium = _auctionPremium; + if (_adjPremium > auctions[_tokenId].reservePrice) { + _adjPremium = auctions[_tokenId].reservePrice; + } else { + _change = auctions[_tokenId].reservePrice.sub(_adjPremium); + } + // current holder pays premium (via amount already delegated to this contract in startAuction) + PaymentToken(piggies[_tokenId].addresses.premiumERC).transfer(msg.sender, _adjPremium); + // current holder receives any change due + if (_change > 0) { + PaymentToken(piggies[_tokenId].addresses.premiumERC).transfer(piggies[_tokenId].addresses.holder, _change); + } + // isRequest becomes false + piggies[_tokenId].flags.isRequest = false; + // msg.sender becomes writer + piggies[_tokenId].addresses.writer = msg.sender; + + emit SatisfyAuction( + msg.sender, + _tokenId, + _adjPremium, + _change, + _auctionPremium + ); + + } else { + // calculate the adjusted premium based on reservePrice + uint256 _adjPremium = _auctionPremium; + if (_adjPremium < auctions[_tokenId].reservePrice) { + _adjPremium = auctions[_tokenId].reservePrice; + } + // msg.sender pays (adjusted) premium + bool success = attemptPaymentTransfer( + piggies[_tokenId].addresses.premiumERC, + msg.sender, + piggies[_tokenId].addresses.holder, // should the SP contract escrow it first? + _adjPremium + ); + if (!success) { + auctions[_tokenId].satisfyInProgress = false; + return false; + } + // msg.sender becomes holder + _internalTransfer(piggies[_tokenId].addresses.holder, msg.sender, _tokenId); + + emit SatisfyAuction( + msg.sender, + _tokenId, + _adjPremium, + 0, + _auctionPremium + ); + + } + // auction is ended + _clearAuctionDetails(_tokenId); + // mutex released + auctions[_tokenId].satisfyInProgress = false; + return true; + } + + /** @notice Call the oracle to fetch the settlement price + @dev Throws if `_tokenId` is not a valid ERC-59 token. + Throws if `_oracle` is not a valid contract address. + Throws if `onMarket(_tokenId)` is true. + If `isEuro` is true for the specified token, throws if `_expiry` > block.number. + If `isEuro` is true for the specified token, throws if `_priceNow` is true. [OR specify that it flips that to false always (?)] + If `priceNow` is true, throws if block.number > `_expiry` for the specified token. + If `priceNow` is false, throws if block.number < `_expiry` for the specified token. + If `priceNow` is true, calls the oracle to request the `_underlyingNow` value for the token. + If `priceNow` is false, calls the oracle to request the `_underlyingExpiry` value for the token. + Depending on the oracle service implemented, additional state will need to be referenced in + order to call the oracle, e.g. an endpoint to fetch. This state handling will need to be + managed on an implementation basis for specific oracle services. + @param _tokenId The identifier of the specific ERC-59 token for which to fetch a settlement price + _oracle The address of the oracle contract used to fetch the external settlement price + _priceNow A boolean for specifying whether to fetch a "live" price or a fixed price at + expiry of the option + @return The settlement price from the oracle to be used in `settleOption()` + */ + function requestSettlementPrice(uint256 _tokenId, uint256 _oracleFee) // this should be renamed perhaps, s.t. it is obvious that this is the "clearing phase" + public + returns (bool) + { + require(msg.sender != address(0), "sender cannot be the zero address"); + //what check should be done to check that piggy is active? + require(!auctions[_tokenId].auctionActive, "cannot clear a token while auction is active"); + require(!piggies[_tokenId].flags.hasBeenCleared, "token has already been cleared"); // this is potentially problematic in the case of "garbage data" + require(_tokenId != 0, "_tokenId cannot be zero"); + require(_oracleFee != 0, "oracle fee cannot be zero"); + //if Euro require past expiry + if (piggies[_tokenId].flags.isEuro) { + require(piggies[_tokenId].uintDetails.expiry <= block.number); + } + //fetch data from dataResolver contract + address _dataResolver; + if (piggies[_tokenId].flags.isEuro || (piggies[_tokenId].uintDetails.expiry < block.number)) + { + _dataResolver = piggies[_tokenId].addresses.dataResolverAtExpiry; + } else { + require(msg.sender == piggies[_tokenId].addresses.holder, "only the holder can settle an American style option before expiry"); + _dataResolver = piggies[_tokenId].addresses.dataResolverNow; + } + require(_callResolver(_dataResolver, msg.sender, _oracleFee, _tokenId), "call to resolver did not return true"); + return true; + } + + function _callResolver(address _dataResolver, address _feePayer, uint256 _oracleFee, uint256 _tokenId) + internal + returns (bool) + { + (bool success, ) = address(_dataResolver).call( + abi.encodeWithSignature("fetchData(address,uint256,uint256)", _feePayer, _oracleFee, _tokenId) + ); + require(success, "fetch success did not return true"); + + emit RequestSettlementPrice( + _feePayer, + _tokenId, + _oracleFee, + _dataResolver + ); + + return true; + } + + function _callback( + uint256 _tokenId, + uint256 _price + ) + public + { + address _dataResolver; + if (piggies[_tokenId].flags.isEuro || (piggies[_tokenId].uintDetails.expiry < block.number)) + { + _dataResolver = piggies[_tokenId].addresses.dataResolverAtExpiry; + } else { + _dataResolver = piggies[_tokenId].addresses.dataResolverNow; + } + require(msg.sender == _dataResolver, "resolve address was not correct"); // MUST restrict a call to only the resolver address + piggies[_tokenId].uintDetails.settlementPrice = _price; + piggies[_tokenId].flags.hasBeenCleared = true; + + emit OracleReturned( + msg.sender, + _tokenId, + _price + ); + + } + + // this appears to basically be redundant w/ requestSettlementPrice + // function clearOption(uint256 _tokenId) + // public + // returns (bool) + // { + // require(msg.sender != address(0)); + // //require(ownerOf(_piggyId) == msg.sender); + // //what check should be done to check that piggy is active? + // require(_tokenId != 0); + + // //Get a price from the oracle + // piggies[_tokenId].requestId = requestSettlementPrice(_tokenId); + + // return true; + // } + + function _calculateLongPayout( + bool _isPut, + uint256 _exercisePrice, + uint256 _strikePrice, + uint256 _lotSize, + uint8 _decimals + ) + internal + pure + returns (uint256 _payout) + { + if (_isPut && (_strikePrice > _exercisePrice)) { + _payout = _strikePrice.sub(_exercisePrice); + } + if (!_isPut && (_exercisePrice > _strikePrice)) { + _payout = _exercisePrice.sub(_strikePrice); + } + _payout = _payout.mul(10**uint256(_decimals)).mul(_lotSize).div(100); + return _payout; + } + + // calculate settlement using oracle's callback data + // needs to have _settlementPrice from oracle + // options math goes here -- conditionals based on call/put + /** @notice Calculate the settlement of ownership of option collateral + @dev Throws if `_tokenId` is not a valid ERC-59 token. + Throws if msg.sender is not one of: seller, owner of `_tokenId`. + Throws if `hasSettlementPrice(_tokenId)` is false. + + [Option settlement math goes here for call / put situations] + + */ + function settlePiggy(uint256 _tokenId) + public + returns (bool) + { + require(msg.sender != address(0), "msg.sender cannot be zero"); + require(_tokenId != 0, "tokenId cannot be zero"); + require(piggies[_tokenId].flags.hasBeenCleared, "piggy has not received an oracle price"); + + uint256 payout; + + if(piggies[_tokenId].flags.isEuro) { + require(piggies[_tokenId].uintDetails.expiry <= block.number, "European option needs to be expired"); + } + payout = _calculateLongPayout( + piggies[_tokenId].flags.isPut, + piggies[_tokenId].uintDetails.settlementPrice, + piggies[_tokenId].uintDetails.strikePrice, + piggies[_tokenId].uintDetails.lotSize, + piggies[_tokenId].uintDetails.collateralDecimals + ); + + // set the balances of the two counterparties based on the payout + address _writer = piggies[_tokenId].addresses.writer; + address _holder = piggies[_tokenId].addresses.holder; + address _collateralERC = piggies[_tokenId].addresses.collateralERC; + + if (payout > piggies[_tokenId].uintDetails.collateral) { + payout = piggies[_tokenId].uintDetails.collateral; + } + ERC20balances[_holder][_collateralERC] = ERC20balances[_holder][_collateralERC].add(payout); + ERC20balances[_writer][_collateralERC] = piggies[_tokenId].uintDetails.collateral.sub(payout); + + emit SettlePiggy( + msg.sender, + _tokenId, + payout, + piggies[_tokenId].uintDetails.collateral.sub(payout) + ); + + _removeTokenFromOwnedPiggies(_holder, _tokenId); + //clean up piggyId + _resetPiggy(_tokenId); + return true; + } + + // claim payout - pull payment + // sends any reference ERC-20 which the _claimant is owed (as a result of an auction or settlement) + function claimPayout(address _paymentToken, uint256 _amount) + public + returns (bool) + { + require(_amount <= ERC20balances[msg.sender][_paymentToken], "ERC20 balance is less than requested amount"); + ERC20balances[msg.sender][_paymentToken] = ERC20balances[msg.sender][_paymentToken].sub(_amount); + //require(token(_stableToken).transfer(msg.sender, balanceOf(msg.sender))), "Unable to transfer"); + (bool success, ) = address(PaymentToken(_paymentToken)).call( + abi.encodeWithSignature( + "transfer(address,uint256)", + msg.sender, + _amount + ) + ); + require(success, "ERC20 token transfer failed"); + + emit ClaimPayout( + msg.sender, + _amount, + _paymentToken + ); + + return true; + } + + function _addTokenToOwnedPiggies(address _to, uint256 _tokenId) + private + { + ownedPiggiesIndex[_tokenId] = ownedPiggies[_to].length; + ownedPiggies[_to].push(_tokenId); + } + + function _removeTokenFromOwnedPiggies(address _from, uint256 _tokenId) + private + { + uint256 lastTokenIndex = ownedPiggies[_from].length.sub(1); + uint256 tokenIndex = ownedPiggiesIndex[_tokenId]; + + if (tokenIndex != lastTokenIndex) { + uint256 lastTokenId = ownedPiggies[_from][lastTokenIndex]; + ownedPiggies[_from][tokenIndex] = lastTokenId; + ownedPiggiesIndex[lastTokenId] = tokenIndex; + } + ownedPiggies[_from].length--; + } + + function _resetPiggy(uint256 _tokenId) + private + { + piggies[_tokenId].addresses.writer = address(0); + piggies[_tokenId].addresses.holder = address(0); + piggies[_tokenId].addresses.collateralERC = address(0); + piggies[_tokenId].addresses.premiumERC = address(0); + piggies[_tokenId].addresses.dataResolverNow = address(0); + piggies[_tokenId].addresses.dataResolverAtExpiry = address(0); + piggies[_tokenId].uintDetails.collateral = 0; + piggies[_tokenId].uintDetails.lotSize = 0; + piggies[_tokenId].uintDetails.strikePrice = 0; + piggies[_tokenId].uintDetails.expiry = 0; + piggies[_tokenId].uintDetails.settlementPrice = 0; + piggies[_tokenId].uintDetails.reqCollateral = 0; + piggies[_tokenId].uintDetails.collateralDecimals = 0; + piggies[_tokenId].flags.isRequest = false; + piggies[_tokenId].flags.isEuro = false; + piggies[_tokenId].flags.isPut = false; + piggies[_tokenId].flags.hasBeenCleared = false; + } + + function kill() + public + { + require(msg.sender == owner); + selfdestruct(owner); + } +} diff --git a/migrations/1_initial_migration.js b/migrations/1_initial_migration.js new file mode 100644 index 0000000..6e0a9f1 --- /dev/null +++ b/migrations/1_initial_migration.js @@ -0,0 +1,5 @@ +var Migrations = artifacts.require("Migrations"); + +module.exports = function(deployer) { + deployer.deploy(Migrations); +}; diff --git a/migrations/2_deploy_contracts.js b/migrations/2_deploy_contracts.js new file mode 100644 index 0000000..6d23fa7 --- /dev/null +++ b/migrations/2_deploy_contracts.js @@ -0,0 +1,5 @@ +const SmartPiggies = artifacts.require("SmartPiggies"); + +module.exports = function(deployer) { + deployer.deploy(SmartPiggies); +}; diff --git a/node_modules/openzeppelin-solidity/CHANGELOG.md b/node_modules/openzeppelin-solidity/CHANGELOG.md new file mode 100644 index 0000000..da3a890 --- /dev/null +++ b/node_modules/openzeppelin-solidity/CHANGELOG.md @@ -0,0 +1,32 @@ +# Changelog + +## 2.1.1 (2019-04-01) + * Version bump to avoid conflict in the npm registry. + +## 2.1.0 (2019-04-01) + +### New features: + * Now targeting the 0.5.x line of Solidity compilers. For 0.4.24 support, use version 2.0 of OpenZeppelin. + * `WhitelistCrowdsale`: a crowdsale where only whitelisted accounts (`WhitelistedRole`) can purchase tokens. Adding or removing accounts from the whitelist is done by whitelist admins (`WhitelistAdminRole`). Similar to the pre-2.0 `WhitelistedCrowdsale`. ([#1525](https://github.com/OpenZeppelin/openzeppelin-solidity/pull/1525), [#1589](https://github.com/OpenZeppelin/openzeppelin-solidity/pull/1589)) + * `RefundablePostDeliveryCrowdsale`: replacement for `RefundableCrowdsale` (deprecated, see below) where tokens are only granted once the crowdsale ends (if it meets its goal). ([#1543](https://github.com/OpenZeppelin/openzeppelin-solidity/pull/1543)) + * `PausableCrowdsale`: allows for pausers (`PauserRole`) to pause token purchases. Other crowdsale operations (e.g. withdrawals and refunds, if applicable) are not affected. ([#832](https://github.com/OpenZeppelin/openzeppelin-solidity/pull/832)) + * `ERC20`: `transferFrom` and `_burnFrom ` now emit `Approval` events, to represent the token's state comprehensively through events. ([#1524](https://github.com/OpenZeppelin/openzeppelin-solidity/pull/1524)) + * `ERC721`: added `_burn(uint256 tokenId)`, replacing the similar deprecated function (see below). ([#1550](https://github.com/OpenZeppelin/openzeppelin-solidity/pull/1550)) + * `ERC721`: added `_tokensOfOwner(address owner)`, allowing to internally retrieve the array of an account's owned tokens. ([#1522](https://github.com/OpenZeppelin/openzeppelin-solidity/pull/1522)) + * Crowdsales: all constructors are now `public`, meaning it is not necessary to extend these contracts in order to deploy them. The exception is `FinalizableCrowdsale`, since it is meaningless unless extended. ([#1564](https://github.com/OpenZeppelin/openzeppelin-solidity/pull/1564)) + * `SignedSafeMath`: added overflow-safe operations for signed integers (`int256`). ([#1559](https://github.com/OpenZeppelin/openzeppelin-solidity/pull/1559), [#1588](https://github.com/OpenZeppelin/openzeppelin-solidity/pull/1588)) + +### Improvements: + * The compiler version required by `Array` was behind the rest of the libray so it was updated to `v0.4.24`. ([#1553](https://github.com/OpenZeppelin/openzeppelin-solidity/pull/1553)) + * Now conforming to a 4-space indentation code style. ([1508](https://github.com/OpenZeppelin/openzeppelin-solidity/pull/1508)) + * `ERC20`: more gas efficient due to removed redundant `require`s. ([#1409](https://github.com/OpenZeppelin/openzeppelin-solidity/pull/1409)) + * `ERC721`: fixed a bug that prevented internal data structures from being properly cleaned, missing potential gas refunds. ([#1539](https://github.com/OpenZeppelin/openzeppelin-solidity/pull/1539) and [#1549](https://github.com/OpenZeppelin/openzeppelin-solidity/pull/1549)) + * `ERC721`: general gas savings on `transferFrom`, `_mint` and `_burn`, due to redudant `require`s and `SSTORE`s. ([#1549](https://github.com/OpenZeppelin/openzeppelin-solidity/pull/1549)) + +### Bugfixes: + +### Breaking changes: + +### Deprecations: + * `ERC721._burn(address owner, uint256 tokenId)`: due to the `owner` parameter being unnecessary. ([#1550](https://github.com/OpenZeppelin/openzeppelin-solidity/pull/1550)) + * `RefundableCrowdsale`: due to trading abuse potential on crowdsales that miss their goal. ([#1543](https://github.com/OpenZeppelin/openzeppelin-solidity/pull/1543)) diff --git a/node_modules/openzeppelin-solidity/LICENSE b/node_modules/openzeppelin-solidity/LICENSE new file mode 100644 index 0000000..98dd89c --- /dev/null +++ b/node_modules/openzeppelin-solidity/LICENSE @@ -0,0 +1,22 @@ +The MIT License (MIT) + +Copyright (c) 2016 Smart Contract Solutions, Inc. + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be included +in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/node_modules/openzeppelin-solidity/README.md b/node_modules/openzeppelin-solidity/README.md new file mode 100644 index 0000000..8f12460 --- /dev/null +++ b/node_modules/openzeppelin-solidity/README.md @@ -0,0 +1,58 @@ +# OpenZeppelin + +[![NPM Package](https://img.shields.io/npm/v/openzeppelin-solidity.svg?style=flat-square)](https://www.npmjs.org/package/openzeppelin-solidity) +[![Build Status](https://travis-ci.com/OpenZeppelin/openzeppelin-solidity.svg?branch=master)](https://travis-ci.com/OpenZeppelin/openzeppelin-solidity) +[![Coverage Status](https://coveralls.io/repos/github/OpenZeppelin/openzeppelin-solidity/badge.svg?branch=master)](https://coveralls.io/github/OpenZeppelin/openzeppelin-solidity?branch=master) + +**OpenZeppelin is a library for secure smart contract development.** It provides implementations of standards like ERC20 and ERC721 which you can deploy as-is or extend to suit your needs, as well as Solidity components to build custom contracts and more complex decentralized systems. + +## Install + +``` +npm install openzeppelin-solidity +``` + +## Usage + +To write your custom contracts, import ours and extend them through inheritance. + +```solidity +pragma solidity ^0.4.24; + +import 'openzeppelin-solidity/contracts/token/ERC721/ERC721Full.sol'; +import 'openzeppelin-solidity/contracts/token/ERC721/ERC721Mintable.sol'; + +contract MyNFT is ERC721Full, ERC721Mintable { + constructor() ERC721Full("MyNFT", "MNFT") public { + } +} +``` + +> You need an ethereum development framework for the above import statements to work! Check out these guides for [Truffle] or [Embark]. + +On our site you will find a few [guides] to learn about the diferent parts of OpenZeppelin, as well as [documentation for the API][API docs]. Keep in mind that the API docs are work in progress, and don’t hesitate to ask questions in [our Slack][Slack]. + +## Security + +OpenZeppelin the project is maintained by [Zeppelin] the company, and developed following our high standards for code quality and security. OpenZeppelin is meant to provide tested and community-audited code, but please use common sense when doing anything that deals with real money! We take no responsibility for your implementation decisions and any security problems you might experience. + +The core development principles and strategies that OpenZeppelin is based on include: security in depth, simple and modular code, clarity-driven naming conventions, comprehensive unit testing, pre-and-post-condition sanity checks, code consistency, and regular audits. + +Please report any security issues you find to security@openzeppelin.org. + +## Contribute + +OpenZeppelin exists thanks to its contributors. There are many ways you can participate and help build high quality software. Check out the [contribution guide]! + +## License + +OpenZeppelin is released under the [MIT License](LICENSE). + + +[API docs]: https://openzeppelin.org/api/docs/token_ERC721_ERC721BasicToken.html +[guides]: https://openzeppelin.org/api/docs/get-started.html +[Slack]: https://slack.openzeppelin.org +[Zeppelin]: https://zeppelin.solutions +[contribution guide]: CONTRIBUTING.md +[Truffle]: https://truffleframework.com/docs/truffle/quickstart +[Embark]: https://embark.status.im/docs/quick_start.html diff --git a/node_modules/openzeppelin-solidity/build/contracts/Address.json b/node_modules/openzeppelin-solidity/build/contracts/Address.json new file mode 100644 index 0000000..a35511d --- /dev/null +++ b/node_modules/openzeppelin-solidity/build/contracts/Address.json @@ -0,0 +1,520 @@ +{ + "contractName": "Address", + "abi": [], + "bytecode": "0x604c602c600b82828239805160001a60731460008114601c57601e565bfe5b5030600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea165627a7a7230582092156802ccc731962b81ee441eefabedd63dcddace94192f788a5355306a76ad0029", + "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea165627a7a7230582092156802ccc731962b81ee441eefabedd63dcddace94192f788a5355306a76ad0029", + "sourceMap": "85:996:64:-;;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", + "deployedSourceMap": "85:996:64:-;;;;;;;;", + "source": "pragma solidity ^0.5.0;\n\n/**\n * Utility library of inline functions on addresses\n */\nlibrary Address {\n /**\n * Returns whether the target address is a contract\n * @dev This function will return false if invoked during the constructor of a contract,\n * as the code is not actually created until after the constructor finishes.\n * @param account address of the account to check\n * @return whether the target address is a contract\n */\n function isContract(address account) internal view returns (bool) {\n uint256 size;\n // XXX Currently there is no better way to check if there is a contract in an address\n // than to check the size of the code at that address.\n // See https://ethereum.stackexchange.com/a/14016/36603\n // for more details about how this works.\n // TODO Check this again before the Serenity release, because all addresses will be\n // contracts then.\n // solhint-disable-next-line no-inline-assembly\n assembly { size := extcodesize(account) }\n return size > 0;\n }\n}\n", + "sourcePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/utils/Address.sol", + "ast": { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/utils/Address.sol", + "exportedSymbols": { + "Address": [ + 6716 + ] + }, + "id": 6717, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 6699, + "literals": [ + "solidity", + "^", + "0.5", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "0:23:64" + }, + { + "baseContracts": [], + "contractDependencies": [], + "contractKind": "library", + "documentation": "Utility library of inline functions on addresses", + "fullyImplemented": true, + "id": 6716, + "linearizedBaseContracts": [ + 6716 + ], + "name": "Address", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": { + "id": 6714, + "nodeType": "Block", + "src": "529:550:64", + "statements": [ + { + "assignments": [ + 6707 + ], + "declarations": [ + { + "constant": false, + "id": 6707, + "name": "size", + "nodeType": "VariableDeclaration", + "scope": 6714, + "src": "539:12:64", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6706, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "539:7:64", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 6708, + "initialValue": null, + "nodeType": "VariableDeclarationStatement", + "src": "539:12:64" + }, + { + "externalReferences": [ + { + "size": { + "declaration": 6707, + "isOffset": false, + "isSlot": false, + "src": "1018:4:64", + "valueSize": 1 + } + }, + { + "account": { + "declaration": 6701, + "isOffset": false, + "isSlot": false, + "src": "1038:7:64", + "valueSize": 1 + } + } + ], + "id": 6709, + "nodeType": "InlineAssembly", + "operations": "{\n size := extcodesize(account)\n}", + "src": "1007:56:64" + }, + { + "expression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6712, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 6710, + "name": "size", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6707, + "src": "1064:4:64", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 6711, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1071:1:64", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "1064:8:64", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 6705, + "id": 6713, + "nodeType": "Return", + "src": "1057:15:64" + } + ] + }, + "documentation": "Returns whether the target address is a contract\n@dev This function will return false if invoked during the constructor of a contract,\nas the code is not actually created until after the constructor finishes.\n@param account address of the account to check\n@return whether the target address is a contract", + "id": 6715, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "isContract", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6702, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6701, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 6715, + "src": "483:15:64", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6700, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "483:7:64", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "482:17:64" + }, + "returnParameters": { + "id": 6705, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6704, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 6715, + "src": "523:4:64", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 6703, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "523:4:64", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "522:6:64" + }, + "scope": 6716, + "src": "463:616:64", + "stateMutability": "view", + "superFunction": null, + "visibility": "internal" + } + ], + "scope": 6717, + "src": "85:996:64" + } + ], + "src": "0:1082:64" + }, + "legacyAST": { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/utils/Address.sol", + "exportedSymbols": { + "Address": [ + 6716 + ] + }, + "id": 6717, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 6699, + "literals": [ + "solidity", + "^", + "0.5", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "0:23:64" + }, + { + "baseContracts": [], + "contractDependencies": [], + "contractKind": "library", + "documentation": "Utility library of inline functions on addresses", + "fullyImplemented": true, + "id": 6716, + "linearizedBaseContracts": [ + 6716 + ], + "name": "Address", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": { + "id": 6714, + "nodeType": "Block", + "src": "529:550:64", + "statements": [ + { + "assignments": [ + 6707 + ], + "declarations": [ + { + "constant": false, + "id": 6707, + "name": "size", + "nodeType": "VariableDeclaration", + "scope": 6714, + "src": "539:12:64", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6706, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "539:7:64", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 6708, + "initialValue": null, + "nodeType": "VariableDeclarationStatement", + "src": "539:12:64" + }, + { + "externalReferences": [ + { + "size": { + "declaration": 6707, + "isOffset": false, + "isSlot": false, + "src": "1018:4:64", + "valueSize": 1 + } + }, + { + "account": { + "declaration": 6701, + "isOffset": false, + "isSlot": false, + "src": "1038:7:64", + "valueSize": 1 + } + } + ], + "id": 6709, + "nodeType": "InlineAssembly", + "operations": "{\n size := extcodesize(account)\n}", + "src": "1007:56:64" + }, + { + "expression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6712, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 6710, + "name": "size", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6707, + "src": "1064:4:64", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 6711, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1071:1:64", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "1064:8:64", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 6705, + "id": 6713, + "nodeType": "Return", + "src": "1057:15:64" + } + ] + }, + "documentation": "Returns whether the target address is a contract\n@dev This function will return false if invoked during the constructor of a contract,\nas the code is not actually created until after the constructor finishes.\n@param account address of the account to check\n@return whether the target address is a contract", + "id": 6715, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "isContract", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6702, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6701, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 6715, + "src": "483:15:64", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6700, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "483:7:64", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "482:17:64" + }, + "returnParameters": { + "id": 6705, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6704, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 6715, + "src": "523:4:64", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 6703, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "523:4:64", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "522:6:64" + }, + "scope": 6716, + "src": "463:616:64", + "stateMutability": "view", + "superFunction": null, + "visibility": "internal" + } + ], + "scope": 6717, + "src": "85:996:64" + } + ], + "src": "0:1082:64" + }, + "compiler": { + "name": "solc", + "version": "0.5.0+commit.1d4f565a.Emscripten.clang" + }, + "networks": {}, + "schemaVersion": "3.0.0", + "updatedAt": "2019-01-04T21:44:02.908Z", + "devdoc": { + "methods": {} + }, + "userdoc": { + "methods": {}, + "notice": "Utility library of inline functions on addresses" + } +} \ No newline at end of file diff --git a/node_modules/openzeppelin-solidity/build/contracts/AllowanceCrowdsale.json b/node_modules/openzeppelin-solidity/build/contracts/AllowanceCrowdsale.json new file mode 100644 index 0000000..8e66571 --- /dev/null +++ b/node_modules/openzeppelin-solidity/build/contracts/AllowanceCrowdsale.json @@ -0,0 +1,2341 @@ +{ + "contractName": "AllowanceCrowdsale", + "abi": [ + { + "constant": true, + "inputs": [], + "name": "rate", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "weiRaised", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "wallet", + "outputs": [ + { + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "beneficiary", + "type": "address" + } + ], + "name": "buyTokens", + "outputs": [], + "payable": true, + "stateMutability": "payable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "token", + "outputs": [ + { + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "name": "tokenWallet", + "type": "address" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "payable": true, + "stateMutability": "payable", + "type": "fallback" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "purchaser", + "type": "address" + }, + { + "indexed": true, + "name": "beneficiary", + "type": "address" + }, + { + "indexed": false, + "name": "value", + "type": "uint256" + }, + { + "indexed": false, + "name": "amount", + "type": "uint256" + } + ], + "name": "TokensPurchased", + "type": "event" + }, + { + "constant": true, + "inputs": [], + "name": "tokenWallet", + "outputs": [ + { + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "remainingTokens", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "sourceMap": "", + "deployedSourceMap": "", + "source": "pragma solidity ^0.5.0;\n\nimport \"../Crowdsale.sol\";\nimport \"../../token/ERC20/IERC20.sol\";\nimport \"../../token/ERC20/SafeERC20.sol\";\nimport \"../../math/SafeMath.sol\";\nimport \"../../math/Math.sol\";\n\n/**\n * @title AllowanceCrowdsale\n * @dev Extension of Crowdsale where tokens are held by a wallet, which approves an allowance to the crowdsale.\n */\ncontract AllowanceCrowdsale is Crowdsale {\n using SafeMath for uint256;\n using SafeERC20 for IERC20;\n\n address private _tokenWallet;\n\n /**\n * @dev Constructor, takes token wallet address.\n * @param tokenWallet Address holding the tokens, which has approved allowance to the crowdsale\n */\n constructor (address tokenWallet) public {\n require(tokenWallet != address(0));\n _tokenWallet = tokenWallet;\n }\n\n /**\n * @return the address of the wallet that will hold the tokens.\n */\n function tokenWallet() public view returns (address) {\n return _tokenWallet;\n }\n\n /**\n * @dev Checks the amount of tokens left in the allowance.\n * @return Amount of tokens left in the allowance\n */\n function remainingTokens() public view returns (uint256) {\n return Math.min(token().balanceOf(_tokenWallet), token().allowance(_tokenWallet, address(this)));\n }\n\n /**\n * @dev Overrides parent behavior by transferring tokens from wallet.\n * @param beneficiary Token purchaser\n * @param tokenAmount Amount of tokens purchased\n */\n function _deliverTokens(address beneficiary, uint256 tokenAmount) internal {\n token().safeTransferFrom(_tokenWallet, beneficiary, tokenAmount);\n }\n}\n", + "sourcePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/crowdsale/emission/AllowanceCrowdsale.sol", + "ast": { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/crowdsale/emission/AllowanceCrowdsale.sol", + "exportedSymbols": { + "AllowanceCrowdsale": [ + 1361 + ] + }, + "id": 1362, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 1280, + "literals": [ + "solidity", + "^", + "0.5", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "0:23:12" + }, + { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/crowdsale/Crowdsale.sol", + "file": "../Crowdsale.sol", + "id": 1281, + "nodeType": "ImportDirective", + "scope": 1362, + "sourceUnit": 985, + "src": "25:26:12", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/token/ERC20/IERC20.sol", + "file": "../../token/ERC20/IERC20.sol", + "id": 1282, + "nodeType": "ImportDirective", + "scope": 1362, + "sourceUnit": 5053, + "src": "52:38:12", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol", + "file": "../../token/ERC20/SafeERC20.sol", + "id": 1283, + "nodeType": "ImportDirective", + "scope": 1362, + "sourceUnit": 5197, + "src": "91:41:12", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/math/SafeMath.sol", + "file": "../../math/SafeMath.sol", + "id": 1284, + "nodeType": "ImportDirective", + "scope": 1362, + "sourceUnit": 3483, + "src": "133:33:12", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/math/Math.sol", + "file": "../../math/Math.sol", + "id": 1285, + "nodeType": "ImportDirective", + "scope": 1362, + "sourceUnit": 3355, + "src": "167:29:12", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 1286, + "name": "Crowdsale", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 984, + "src": "378:9:12", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Crowdsale_$984", + "typeString": "contract Crowdsale" + } + }, + "id": 1287, + "nodeType": "InheritanceSpecifier", + "src": "378:9:12" + } + ], + "contractDependencies": [ + 984, + 6830 + ], + "contractKind": "contract", + "documentation": "@title AllowanceCrowdsale\n@dev Extension of Crowdsale where tokens are held by a wallet, which approves an allowance to the crowdsale.", + "fullyImplemented": false, + "id": 1361, + "linearizedBaseContracts": [ + 1361, + 984, + 6830 + ], + "name": "AllowanceCrowdsale", + "nodeType": "ContractDefinition", + "nodes": [ + { + "id": 1290, + "libraryName": { + "contractScope": null, + "id": 1288, + "name": "SafeMath", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 3482, + "src": "400:8:12", + "typeDescriptions": { + "typeIdentifier": "t_contract$_SafeMath_$3482", + "typeString": "library SafeMath" + } + }, + "nodeType": "UsingForDirective", + "src": "394:27:12", + "typeName": { + "id": 1289, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "413:7:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + { + "id": 1293, + "libraryName": { + "contractScope": null, + "id": 1291, + "name": "SafeERC20", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 5196, + "src": "432:9:12", + "typeDescriptions": { + "typeIdentifier": "t_contract$_SafeERC20_$5196", + "typeString": "library SafeERC20" + } + }, + "nodeType": "UsingForDirective", + "src": "426:27:12", + "typeName": { + "contractScope": null, + "id": 1292, + "name": "IERC20", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 5052, + "src": "446:6:12", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$5052", + "typeString": "contract IERC20" + } + } + }, + { + "constant": false, + "id": 1295, + "name": "_tokenWallet", + "nodeType": "VariableDeclaration", + "scope": 1361, + "src": "459:28:12", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1294, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "459:7:12", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "private" + }, + { + "body": { + "id": 1312, + "nodeType": "Block", + "src": "704:87:12", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 1305, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1301, + "name": "tokenWallet", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1297, + "src": "722:11:12", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 1303, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "745:1:12", + "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": 1302, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "737:7:12", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 1304, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "737:10:12", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "722:25:12", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 1300, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6848, + 6849 + ], + "referencedDeclaration": 6848, + "src": "714:7:12", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 1306, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "714:34:12", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1307, + "nodeType": "ExpressionStatement", + "src": "714:34:12" + }, + { + "expression": { + "argumentTypes": null, + "id": 1310, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 1308, + "name": "_tokenWallet", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1295, + "src": "758:12:12", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 1309, + "name": "tokenWallet", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1297, + "src": "773:11:12", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "758:26:12", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 1311, + "nodeType": "ExpressionStatement", + "src": "758:26:12" + } + ] + }, + "documentation": "@dev Constructor, takes token wallet address.\n@param tokenWallet Address holding the tokens, which has approved allowance to the crowdsale", + "id": 1313, + "implemented": true, + "kind": "constructor", + "modifiers": [], + "name": "", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1298, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1297, + "name": "tokenWallet", + "nodeType": "VariableDeclaration", + "scope": 1313, + "src": "676:19:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1296, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "676:7:12", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "675:21:12" + }, + "returnParameters": { + "id": 1299, + "nodeType": "ParameterList", + "parameters": [], + "src": "704:0:12" + }, + "scope": 1361, + "src": "663:128:12", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 1320, + "nodeType": "Block", + "src": "934:36:12", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 1318, + "name": "_tokenWallet", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1295, + "src": "951:12:12", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "functionReturnParameters": 1317, + "id": 1319, + "nodeType": "Return", + "src": "944:19:12" + } + ] + }, + "documentation": "@return the address of the wallet that will hold the tokens.", + "id": 1321, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "tokenWallet", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1314, + "nodeType": "ParameterList", + "parameters": [], + "src": "901:2:12" + }, + "returnParameters": { + "id": 1317, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1316, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 1321, + "src": "925:7:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1315, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "925:7:12", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "924:9:12" + }, + "scope": 1361, + "src": "881:89:12", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 1343, + "nodeType": "Block", + "src": "1166:113:12", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1331, + "name": "_tokenWallet", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1295, + "src": "1210:12:12", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 1328, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 812, + "src": "1192:5:12", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_IERC20_$5052_$", + "typeString": "function () view returns (contract IERC20)" + } + }, + "id": 1329, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1192:7:12", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$5052", + "typeString": "contract IERC20" + } + }, + "id": 1330, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "balanceOf", + "nodeType": "MemberAccess", + "referencedDeclaration": 5026, + "src": "1192:17:12", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$", + "typeString": "function (address) view external returns (uint256)" + } + }, + "id": 1332, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1192:31:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1336, + "name": "_tokenWallet", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1295, + "src": "1243:12:12", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1338, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6902, + "src": "1265:4:12", + "typeDescriptions": { + "typeIdentifier": "t_contract$_AllowanceCrowdsale_$1361", + "typeString": "contract AllowanceCrowdsale" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_AllowanceCrowdsale_$1361", + "typeString": "contract AllowanceCrowdsale" + } + ], + "id": 1337, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "1257:7:12", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 1339, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1257:13:12", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 1333, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 812, + "src": "1225:5:12", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_IERC20_$5052_$", + "typeString": "function () view returns (contract IERC20)" + } + }, + "id": 1334, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1225:7:12", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$5052", + "typeString": "contract IERC20" + } + }, + "id": 1335, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "allowance", + "nodeType": "MemberAccess", + "referencedDeclaration": 5035, + "src": "1225:17:12", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$", + "typeString": "function (address,address) view external returns (uint256)" + } + }, + "id": 1340, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1225:46:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 1326, + "name": "Math", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3354, + "src": "1183:4:12", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Math_$3354_$", + "typeString": "type(library Math)" + } + }, + "id": 1327, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "min", + "nodeType": "MemberAccess", + "referencedDeclaration": 3321, + "src": "1183:8:12", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 1341, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1183:89:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 1325, + "id": 1342, + "nodeType": "Return", + "src": "1176:96:12" + } + ] + }, + "documentation": "@dev Checks the amount of tokens left in the allowance.\n@return Amount of tokens left in the allowance", + "id": 1344, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "remainingTokens", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1322, + "nodeType": "ParameterList", + "parameters": [], + "src": "1133:2:12" + }, + "returnParameters": { + "id": 1325, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1324, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 1344, + "src": "1157:7:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1323, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1157:7:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1156:9:12" + }, + "scope": 1361, + "src": "1109:170:12", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 1359, + "nodeType": "Block", + "src": "1545:81:12", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1354, + "name": "_tokenWallet", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1295, + "src": "1580:12:12", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1355, + "name": "beneficiary", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1346, + "src": "1594:11:12", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1356, + "name": "tokenAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1348, + "src": "1607:11:12", + "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, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 1351, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 812, + "src": "1555:5:12", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_IERC20_$5052_$", + "typeString": "function () view returns (contract IERC20)" + } + }, + "id": 1352, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1555:7:12", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$5052", + "typeString": "contract IERC20" + } + }, + "id": 1353, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "safeTransferFrom", + "nodeType": "MemberAccess", + "referencedDeclaration": 5098, + "src": "1555:24:12", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$5052_$_t_address_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$5052_$", + "typeString": "function (contract IERC20,address,address,uint256)" + } + }, + "id": 1357, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1555:64:12", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1358, + "nodeType": "ExpressionStatement", + "src": "1555:64:12" + } + ] + }, + "documentation": "@dev Overrides parent behavior by transferring tokens from wallet.\n@param beneficiary Token purchaser\n@param tokenAmount Amount of tokens purchased", + "id": 1360, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_deliverTokens", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1349, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1346, + "name": "beneficiary", + "nodeType": "VariableDeclaration", + "scope": 1360, + "src": "1494:19:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1345, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1494:7:12", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1348, + "name": "tokenAmount", + "nodeType": "VariableDeclaration", + "scope": 1360, + "src": "1515:19:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1347, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1515:7:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1493:42:12" + }, + "returnParameters": { + "id": 1350, + "nodeType": "ParameterList", + "parameters": [], + "src": "1545:0:12" + }, + "scope": 1361, + "src": "1470:156:12", + "stateMutability": "nonpayable", + "superFunction": 938, + "visibility": "internal" + } + ], + "scope": 1362, + "src": "347:1281:12" + } + ], + "src": "0:1629:12" + }, + "legacyAST": { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/crowdsale/emission/AllowanceCrowdsale.sol", + "exportedSymbols": { + "AllowanceCrowdsale": [ + 1361 + ] + }, + "id": 1362, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 1280, + "literals": [ + "solidity", + "^", + "0.5", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "0:23:12" + }, + { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/crowdsale/Crowdsale.sol", + "file": "../Crowdsale.sol", + "id": 1281, + "nodeType": "ImportDirective", + "scope": 1362, + "sourceUnit": 985, + "src": "25:26:12", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/token/ERC20/IERC20.sol", + "file": "../../token/ERC20/IERC20.sol", + "id": 1282, + "nodeType": "ImportDirective", + "scope": 1362, + "sourceUnit": 5053, + "src": "52:38:12", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol", + "file": "../../token/ERC20/SafeERC20.sol", + "id": 1283, + "nodeType": "ImportDirective", + "scope": 1362, + "sourceUnit": 5197, + "src": "91:41:12", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/math/SafeMath.sol", + "file": "../../math/SafeMath.sol", + "id": 1284, + "nodeType": "ImportDirective", + "scope": 1362, + "sourceUnit": 3483, + "src": "133:33:12", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/math/Math.sol", + "file": "../../math/Math.sol", + "id": 1285, + "nodeType": "ImportDirective", + "scope": 1362, + "sourceUnit": 3355, + "src": "167:29:12", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 1286, + "name": "Crowdsale", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 984, + "src": "378:9:12", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Crowdsale_$984", + "typeString": "contract Crowdsale" + } + }, + "id": 1287, + "nodeType": "InheritanceSpecifier", + "src": "378:9:12" + } + ], + "contractDependencies": [ + 984, + 6830 + ], + "contractKind": "contract", + "documentation": "@title AllowanceCrowdsale\n@dev Extension of Crowdsale where tokens are held by a wallet, which approves an allowance to the crowdsale.", + "fullyImplemented": false, + "id": 1361, + "linearizedBaseContracts": [ + 1361, + 984, + 6830 + ], + "name": "AllowanceCrowdsale", + "nodeType": "ContractDefinition", + "nodes": [ + { + "id": 1290, + "libraryName": { + "contractScope": null, + "id": 1288, + "name": "SafeMath", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 3482, + "src": "400:8:12", + "typeDescriptions": { + "typeIdentifier": "t_contract$_SafeMath_$3482", + "typeString": "library SafeMath" + } + }, + "nodeType": "UsingForDirective", + "src": "394:27:12", + "typeName": { + "id": 1289, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "413:7:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + { + "id": 1293, + "libraryName": { + "contractScope": null, + "id": 1291, + "name": "SafeERC20", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 5196, + "src": "432:9:12", + "typeDescriptions": { + "typeIdentifier": "t_contract$_SafeERC20_$5196", + "typeString": "library SafeERC20" + } + }, + "nodeType": "UsingForDirective", + "src": "426:27:12", + "typeName": { + "contractScope": null, + "id": 1292, + "name": "IERC20", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 5052, + "src": "446:6:12", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$5052", + "typeString": "contract IERC20" + } + } + }, + { + "constant": false, + "id": 1295, + "name": "_tokenWallet", + "nodeType": "VariableDeclaration", + "scope": 1361, + "src": "459:28:12", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1294, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "459:7:12", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "private" + }, + { + "body": { + "id": 1312, + "nodeType": "Block", + "src": "704:87:12", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 1305, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1301, + "name": "tokenWallet", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1297, + "src": "722:11:12", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 1303, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "745:1:12", + "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": 1302, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "737:7:12", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 1304, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "737:10:12", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "722:25:12", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 1300, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6848, + 6849 + ], + "referencedDeclaration": 6848, + "src": "714:7:12", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 1306, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "714:34:12", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1307, + "nodeType": "ExpressionStatement", + "src": "714:34:12" + }, + { + "expression": { + "argumentTypes": null, + "id": 1310, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 1308, + "name": "_tokenWallet", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1295, + "src": "758:12:12", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 1309, + "name": "tokenWallet", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1297, + "src": "773:11:12", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "758:26:12", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 1311, + "nodeType": "ExpressionStatement", + "src": "758:26:12" + } + ] + }, + "documentation": "@dev Constructor, takes token wallet address.\n@param tokenWallet Address holding the tokens, which has approved allowance to the crowdsale", + "id": 1313, + "implemented": true, + "kind": "constructor", + "modifiers": [], + "name": "", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1298, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1297, + "name": "tokenWallet", + "nodeType": "VariableDeclaration", + "scope": 1313, + "src": "676:19:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1296, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "676:7:12", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "675:21:12" + }, + "returnParameters": { + "id": 1299, + "nodeType": "ParameterList", + "parameters": [], + "src": "704:0:12" + }, + "scope": 1361, + "src": "663:128:12", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 1320, + "nodeType": "Block", + "src": "934:36:12", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 1318, + "name": "_tokenWallet", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1295, + "src": "951:12:12", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "functionReturnParameters": 1317, + "id": 1319, + "nodeType": "Return", + "src": "944:19:12" + } + ] + }, + "documentation": "@return the address of the wallet that will hold the tokens.", + "id": 1321, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "tokenWallet", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1314, + "nodeType": "ParameterList", + "parameters": [], + "src": "901:2:12" + }, + "returnParameters": { + "id": 1317, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1316, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 1321, + "src": "925:7:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1315, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "925:7:12", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "924:9:12" + }, + "scope": 1361, + "src": "881:89:12", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 1343, + "nodeType": "Block", + "src": "1166:113:12", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1331, + "name": "_tokenWallet", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1295, + "src": "1210:12:12", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 1328, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 812, + "src": "1192:5:12", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_IERC20_$5052_$", + "typeString": "function () view returns (contract IERC20)" + } + }, + "id": 1329, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1192:7:12", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$5052", + "typeString": "contract IERC20" + } + }, + "id": 1330, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "balanceOf", + "nodeType": "MemberAccess", + "referencedDeclaration": 5026, + "src": "1192:17:12", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$", + "typeString": "function (address) view external returns (uint256)" + } + }, + "id": 1332, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1192:31:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1336, + "name": "_tokenWallet", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1295, + "src": "1243:12:12", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1338, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6902, + "src": "1265:4:12", + "typeDescriptions": { + "typeIdentifier": "t_contract$_AllowanceCrowdsale_$1361", + "typeString": "contract AllowanceCrowdsale" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_AllowanceCrowdsale_$1361", + "typeString": "contract AllowanceCrowdsale" + } + ], + "id": 1337, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "1257:7:12", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 1339, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1257:13:12", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 1333, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 812, + "src": "1225:5:12", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_IERC20_$5052_$", + "typeString": "function () view returns (contract IERC20)" + } + }, + "id": 1334, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1225:7:12", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$5052", + "typeString": "contract IERC20" + } + }, + "id": 1335, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "allowance", + "nodeType": "MemberAccess", + "referencedDeclaration": 5035, + "src": "1225:17:12", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$", + "typeString": "function (address,address) view external returns (uint256)" + } + }, + "id": 1340, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1225:46:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 1326, + "name": "Math", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3354, + "src": "1183:4:12", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Math_$3354_$", + "typeString": "type(library Math)" + } + }, + "id": 1327, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "min", + "nodeType": "MemberAccess", + "referencedDeclaration": 3321, + "src": "1183:8:12", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 1341, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1183:89:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 1325, + "id": 1342, + "nodeType": "Return", + "src": "1176:96:12" + } + ] + }, + "documentation": "@dev Checks the amount of tokens left in the allowance.\n@return Amount of tokens left in the allowance", + "id": 1344, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "remainingTokens", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1322, + "nodeType": "ParameterList", + "parameters": [], + "src": "1133:2:12" + }, + "returnParameters": { + "id": 1325, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1324, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 1344, + "src": "1157:7:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1323, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1157:7:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1156:9:12" + }, + "scope": 1361, + "src": "1109:170:12", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 1359, + "nodeType": "Block", + "src": "1545:81:12", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1354, + "name": "_tokenWallet", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1295, + "src": "1580:12:12", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1355, + "name": "beneficiary", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1346, + "src": "1594:11:12", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1356, + "name": "tokenAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1348, + "src": "1607:11:12", + "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, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 1351, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 812, + "src": "1555:5:12", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_IERC20_$5052_$", + "typeString": "function () view returns (contract IERC20)" + } + }, + "id": 1352, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1555:7:12", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$5052", + "typeString": "contract IERC20" + } + }, + "id": 1353, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "safeTransferFrom", + "nodeType": "MemberAccess", + "referencedDeclaration": 5098, + "src": "1555:24:12", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$5052_$_t_address_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$5052_$", + "typeString": "function (contract IERC20,address,address,uint256)" + } + }, + "id": 1357, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1555:64:12", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1358, + "nodeType": "ExpressionStatement", + "src": "1555:64:12" + } + ] + }, + "documentation": "@dev Overrides parent behavior by transferring tokens from wallet.\n@param beneficiary Token purchaser\n@param tokenAmount Amount of tokens purchased", + "id": 1360, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_deliverTokens", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1349, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1346, + "name": "beneficiary", + "nodeType": "VariableDeclaration", + "scope": 1360, + "src": "1494:19:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1345, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1494:7:12", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1348, + "name": "tokenAmount", + "nodeType": "VariableDeclaration", + "scope": 1360, + "src": "1515:19:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1347, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1515:7:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1493:42:12" + }, + "returnParameters": { + "id": 1350, + "nodeType": "ParameterList", + "parameters": [], + "src": "1545:0:12" + }, + "scope": 1361, + "src": "1470:156:12", + "stateMutability": "nonpayable", + "superFunction": 938, + "visibility": "internal" + } + ], + "scope": 1362, + "src": "347:1281:12" + } + ], + "src": "0:1629:12" + }, + "compiler": { + "name": "solc", + "version": "0.5.0+commit.1d4f565a.Emscripten.clang" + }, + "networks": {}, + "schemaVersion": "3.0.0", + "updatedAt": "2019-01-04T21:44:02.872Z", + "devdoc": { + "details": "Extension of Crowdsale where tokens are held by a wallet, which approves an allowance to the crowdsale.", + "methods": { + "buyTokens(address)": { + "details": "low level token purchase ***DO NOT OVERRIDE*** This function has a non-reentrancy guard, so it shouldn't be called by another `nonReentrant` function.", + "params": { + "beneficiary": "Recipient of the token purchase" + } + }, + "constructor": { + "details": "Constructor, takes token wallet address.", + "params": { + "tokenWallet": "Address holding the tokens, which has approved allowance to the crowdsale" + } + }, + "rate()": { + "return": "the number of token units a buyer gets per wei." + }, + "remainingTokens()": { + "details": "Checks the amount of tokens left in the allowance.", + "return": "Amount of tokens left in the allowance" + }, + "token()": { + "return": "the token being sold." + }, + "tokenWallet()": { + "return": "the address of the wallet that will hold the tokens." + }, + "wallet()": { + "return": "the address where funds are collected." + }, + "weiRaised()": { + "return": "the amount of wei raised." + } + }, + "title": "AllowanceCrowdsale" + }, + "userdoc": { + "methods": {} + } +} \ No newline at end of file diff --git a/node_modules/openzeppelin-solidity/build/contracts/Arrays.json b/node_modules/openzeppelin-solidity/build/contracts/Arrays.json new file mode 100644 index 0000000..4b6afb2 --- /dev/null +++ b/node_modules/openzeppelin-solidity/build/contracts/Arrays.json @@ -0,0 +1,2153 @@ +{ + "contractName": "Arrays", + "abi": [], + "bytecode": "0x604c602c600b82828239805160001a60731460008114601c57601e565bfe5b5030600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea165627a7a72305820a5d986f02c874544bf2395c7b75829ce57f26df94a0db7b4c3cee95ccb3ffee70029", + "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea165627a7a72305820a5d986f02c874544bf2395c7b75829ce57f26df94a0db7b4c3cee95ccb3ffee70029", + "sourceMap": "129:1598:65:-;;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", + "deployedSourceMap": "129:1598:65:-;;;;;;;;", + "source": "pragma solidity ^0.5.0;\n\nimport \"../math/Math.sol\";\n\n\n/**\n * @title Arrays\n * @dev Utility library of inline array functions\n */\nlibrary Arrays {\n /**\n * @dev Upper bound search function which is kind of binary search algoritm. It searches sorted\n * array to find index of the element value. If element is found then returns it's index otherwise\n * it returns index of first element which is grater than searched value. If searched element is\n * bigger than any array element function then returns first index after last element (i.e. all\n * values inside the array are smaller than the target). Complexity O(log n).\n * @param array The array sorted in ascending order.\n * @param element The element's value to be find.\n * @return The calculated index value. Returns 0 for empty array.\n */\n function findUpperBound(uint256[] storage array, uint256 element) internal view returns (uint256) {\n if (array.length == 0) {\n return 0;\n }\n\n uint256 low = 0;\n uint256 high = array.length;\n\n while (low < high) {\n uint256 mid = Math.average(low, high);\n\n // Note that mid will always be strictly less than high (i.e. it will be a valid array index)\n // because Math.average rounds down (it does integer division with truncation).\n if (array[mid] > element) {\n high = mid;\n } else {\n low = mid + 1;\n }\n }\n\n // At this point `low` is the exclusive upper bound. We will return the inclusive upper bound.\n if (low > 0 && array[low - 1] == element) {\n return low - 1;\n } else {\n return low;\n }\n }\n}\n", + "sourcePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/utils/Arrays.sol", + "ast": { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/utils/Arrays.sol", + "exportedSymbols": { + "Arrays": [ + 6799 + ] + }, + "id": 6800, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 6718, + "literals": [ + "solidity", + "^", + "0.5", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "0:23:65" + }, + { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/math/Math.sol", + "file": "../math/Math.sol", + "id": 6719, + "nodeType": "ImportDirective", + "scope": 6800, + "sourceUnit": 3355, + "src": "25:26:65", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [], + "contractDependencies": [], + "contractKind": "library", + "documentation": "@title Arrays\n@dev Utility library of inline array functions", + "fullyImplemented": true, + "id": 6799, + "linearizedBaseContracts": [ + 6799 + ], + "name": "Arrays", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": { + "id": 6797, + "nodeType": "Block", + "src": "931:794:65", + "statements": [ + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6732, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 6729, + "name": "array", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6722, + "src": "945:5:65", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[] storage pointer" + } + }, + "id": 6730, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "945:12:65", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 6731, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "961:1:65", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "945:17:65", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 6736, + "nodeType": "IfStatement", + "src": "941:56:65", + "trueBody": { + "id": 6735, + "nodeType": "Block", + "src": "964:33:65", + "statements": [ + { + "expression": { + "argumentTypes": null, + "hexValue": "30", + "id": 6733, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "985:1:65", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "functionReturnParameters": 6728, + "id": 6734, + "nodeType": "Return", + "src": "978:8:65" + } + ] + } + }, + { + "assignments": [ + 6738 + ], + "declarations": [ + { + "constant": false, + "id": 6738, + "name": "low", + "nodeType": "VariableDeclaration", + "scope": 6797, + "src": "1007:11:65", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6737, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1007:7:65", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 6740, + "initialValue": { + "argumentTypes": null, + "hexValue": "30", + "id": 6739, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1021:1:65", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "1007:15:65" + }, + { + "assignments": [ + 6742 + ], + "declarations": [ + { + "constant": false, + "id": 6742, + "name": "high", + "nodeType": "VariableDeclaration", + "scope": 6797, + "src": "1032:12:65", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6741, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1032:7:65", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 6745, + "initialValue": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 6743, + "name": "array", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6722, + "src": "1047:5:65", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[] storage pointer" + } + }, + "id": 6744, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "1047:12:65", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "1032:27:65" + }, + { + "body": { + "id": 6775, + "nodeType": "Block", + "src": "1089:395:65", + "statements": [ + { + "assignments": [ + 6750 + ], + "declarations": [ + { + "constant": false, + "id": 6750, + "name": "mid", + "nodeType": "VariableDeclaration", + "scope": 6775, + "src": "1103:11:65", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6749, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1103:7:65", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 6756, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 6753, + "name": "low", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6738, + "src": "1130:3:65", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 6754, + "name": "high", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6742, + "src": "1135:4:65", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 6751, + "name": "Math", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3354, + "src": "1117:4:65", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Math_$3354_$", + "typeString": "type(library Math)" + } + }, + "id": 6752, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "average", + "nodeType": "MemberAccess", + "referencedDeclaration": 3353, + "src": "1117:12:65", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 6755, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1117:23:65", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "1103:37:65" + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6761, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 6757, + "name": "array", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6722, + "src": "1357:5:65", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[] storage pointer" + } + }, + "id": 6759, + "indexExpression": { + "argumentTypes": null, + "id": 6758, + "name": "mid", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6750, + "src": "1363:3:65", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "1357:10:65", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "id": 6760, + "name": "element", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6724, + "src": "1370:7:65", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1357:20:65", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 6773, + "nodeType": "Block", + "src": "1428:46:65", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 6771, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 6767, + "name": "low", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6738, + "src": "1446:3:65", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6770, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 6768, + "name": "mid", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6750, + "src": "1452:3:65", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "argumentTypes": null, + "hexValue": "31", + "id": 6769, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1458:1:65", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "1452:7:65", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1446:13:65", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 6772, + "nodeType": "ExpressionStatement", + "src": "1446:13:65" + } + ] + }, + "id": 6774, + "nodeType": "IfStatement", + "src": "1353:121:65", + "trueBody": { + "id": 6766, + "nodeType": "Block", + "src": "1379:43:65", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 6764, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 6762, + "name": "high", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6742, + "src": "1397:4:65", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 6763, + "name": "mid", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6750, + "src": "1404:3:65", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1397:10:65", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 6765, + "nodeType": "ExpressionStatement", + "src": "1397:10:65" + } + ] + } + } + ] + }, + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6748, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 6746, + "name": "low", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6738, + "src": "1077:3:65", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "argumentTypes": null, + "id": 6747, + "name": "high", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6742, + "src": "1083:4:65", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1077:10:65", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 6776, + "nodeType": "WhileStatement", + "src": "1070:414:65" + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 6787, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6779, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 6777, + "name": "low", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6738, + "src": "1601:3:65", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 6778, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1607:1:65", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "1601:7:65", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6786, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 6780, + "name": "array", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6722, + "src": "1612:5:65", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[] storage pointer" + } + }, + "id": 6784, + "indexExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6783, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 6781, + "name": "low", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6738, + "src": "1618:3:65", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "argumentTypes": null, + "hexValue": "31", + "id": 6782, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1624:1:65", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "1618:7:65", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "1612:14:65", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 6785, + "name": "element", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6724, + "src": "1630:7:65", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1612:25:65", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "1601:36:65", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 6795, + "nodeType": "Block", + "src": "1684:35:65", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 6793, + "name": "low", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6738, + "src": "1705:3:65", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 6728, + "id": 6794, + "nodeType": "Return", + "src": "1698:10:65" + } + ] + }, + "id": 6796, + "nodeType": "IfStatement", + "src": "1597:122:65", + "trueBody": { + "id": 6792, + "nodeType": "Block", + "src": "1639:39:65", + "statements": [ + { + "expression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6790, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 6788, + "name": "low", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6738, + "src": "1660:3:65", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "argumentTypes": null, + "hexValue": "31", + "id": 6789, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1666:1:65", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "1660:7:65", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 6728, + "id": 6791, + "nodeType": "Return", + "src": "1653:14:65" + } + ] + } + } + ] + }, + "documentation": "@dev Upper bound search function which is kind of binary search algoritm. It searches sorted\narray to find index of the element value. If element is found then returns it's index otherwise\nit returns index of first element which is grater than searched value. If searched element is\nbigger than any array element function then returns first index after last element (i.e. all\nvalues inside the array are smaller than the target). Complexity O(log n).\n@param array The array sorted in ascending order.\n@param element The element's value to be find.\n@return The calculated index value. Returns 0 for empty array.", + "id": 6798, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "findUpperBound", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6725, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6722, + "name": "array", + "nodeType": "VariableDeclaration", + "scope": 6798, + "src": "857:23:65", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 6720, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "857:7:65", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 6721, + "length": null, + "nodeType": "ArrayTypeName", + "src": "857:9:65", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 6724, + "name": "element", + "nodeType": "VariableDeclaration", + "scope": 6798, + "src": "882:15:65", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6723, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "882:7:65", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "856:42:65" + }, + "returnParameters": { + "id": 6728, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6727, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 6798, + "src": "922:7:65", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6726, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "922:7:65", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "921:9:65" + }, + "scope": 6799, + "src": "833:892:65", + "stateMutability": "view", + "superFunction": null, + "visibility": "internal" + } + ], + "scope": 6800, + "src": "129:1598:65" + } + ], + "src": "0:1728:65" + }, + "legacyAST": { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/utils/Arrays.sol", + "exportedSymbols": { + "Arrays": [ + 6799 + ] + }, + "id": 6800, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 6718, + "literals": [ + "solidity", + "^", + "0.5", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "0:23:65" + }, + { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/math/Math.sol", + "file": "../math/Math.sol", + "id": 6719, + "nodeType": "ImportDirective", + "scope": 6800, + "sourceUnit": 3355, + "src": "25:26:65", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [], + "contractDependencies": [], + "contractKind": "library", + "documentation": "@title Arrays\n@dev Utility library of inline array functions", + "fullyImplemented": true, + "id": 6799, + "linearizedBaseContracts": [ + 6799 + ], + "name": "Arrays", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": { + "id": 6797, + "nodeType": "Block", + "src": "931:794:65", + "statements": [ + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6732, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 6729, + "name": "array", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6722, + "src": "945:5:65", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[] storage pointer" + } + }, + "id": 6730, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "945:12:65", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 6731, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "961:1:65", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "945:17:65", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 6736, + "nodeType": "IfStatement", + "src": "941:56:65", + "trueBody": { + "id": 6735, + "nodeType": "Block", + "src": "964:33:65", + "statements": [ + { + "expression": { + "argumentTypes": null, + "hexValue": "30", + "id": 6733, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "985:1:65", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "functionReturnParameters": 6728, + "id": 6734, + "nodeType": "Return", + "src": "978:8:65" + } + ] + } + }, + { + "assignments": [ + 6738 + ], + "declarations": [ + { + "constant": false, + "id": 6738, + "name": "low", + "nodeType": "VariableDeclaration", + "scope": 6797, + "src": "1007:11:65", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6737, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1007:7:65", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 6740, + "initialValue": { + "argumentTypes": null, + "hexValue": "30", + "id": 6739, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1021:1:65", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "1007:15:65" + }, + { + "assignments": [ + 6742 + ], + "declarations": [ + { + "constant": false, + "id": 6742, + "name": "high", + "nodeType": "VariableDeclaration", + "scope": 6797, + "src": "1032:12:65", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6741, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1032:7:65", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 6745, + "initialValue": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 6743, + "name": "array", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6722, + "src": "1047:5:65", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[] storage pointer" + } + }, + "id": 6744, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "1047:12:65", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "1032:27:65" + }, + { + "body": { + "id": 6775, + "nodeType": "Block", + "src": "1089:395:65", + "statements": [ + { + "assignments": [ + 6750 + ], + "declarations": [ + { + "constant": false, + "id": 6750, + "name": "mid", + "nodeType": "VariableDeclaration", + "scope": 6775, + "src": "1103:11:65", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6749, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1103:7:65", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 6756, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 6753, + "name": "low", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6738, + "src": "1130:3:65", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 6754, + "name": "high", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6742, + "src": "1135:4:65", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 6751, + "name": "Math", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3354, + "src": "1117:4:65", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Math_$3354_$", + "typeString": "type(library Math)" + } + }, + "id": 6752, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "average", + "nodeType": "MemberAccess", + "referencedDeclaration": 3353, + "src": "1117:12:65", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 6755, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1117:23:65", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "1103:37:65" + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6761, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 6757, + "name": "array", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6722, + "src": "1357:5:65", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[] storage pointer" + } + }, + "id": 6759, + "indexExpression": { + "argumentTypes": null, + "id": 6758, + "name": "mid", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6750, + "src": "1363:3:65", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "1357:10:65", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "id": 6760, + "name": "element", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6724, + "src": "1370:7:65", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1357:20:65", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 6773, + "nodeType": "Block", + "src": "1428:46:65", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 6771, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 6767, + "name": "low", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6738, + "src": "1446:3:65", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6770, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 6768, + "name": "mid", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6750, + "src": "1452:3:65", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "argumentTypes": null, + "hexValue": "31", + "id": 6769, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1458:1:65", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "1452:7:65", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1446:13:65", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 6772, + "nodeType": "ExpressionStatement", + "src": "1446:13:65" + } + ] + }, + "id": 6774, + "nodeType": "IfStatement", + "src": "1353:121:65", + "trueBody": { + "id": 6766, + "nodeType": "Block", + "src": "1379:43:65", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 6764, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 6762, + "name": "high", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6742, + "src": "1397:4:65", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 6763, + "name": "mid", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6750, + "src": "1404:3:65", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1397:10:65", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 6765, + "nodeType": "ExpressionStatement", + "src": "1397:10:65" + } + ] + } + } + ] + }, + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6748, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 6746, + "name": "low", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6738, + "src": "1077:3:65", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "argumentTypes": null, + "id": 6747, + "name": "high", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6742, + "src": "1083:4:65", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1077:10:65", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 6776, + "nodeType": "WhileStatement", + "src": "1070:414:65" + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 6787, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6779, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 6777, + "name": "low", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6738, + "src": "1601:3:65", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 6778, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1607:1:65", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "1601:7:65", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6786, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 6780, + "name": "array", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6722, + "src": "1612:5:65", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[] storage pointer" + } + }, + "id": 6784, + "indexExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6783, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 6781, + "name": "low", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6738, + "src": "1618:3:65", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "argumentTypes": null, + "hexValue": "31", + "id": 6782, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1624:1:65", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "1618:7:65", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "1612:14:65", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 6785, + "name": "element", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6724, + "src": "1630:7:65", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1612:25:65", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "1601:36:65", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 6795, + "nodeType": "Block", + "src": "1684:35:65", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 6793, + "name": "low", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6738, + "src": "1705:3:65", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 6728, + "id": 6794, + "nodeType": "Return", + "src": "1698:10:65" + } + ] + }, + "id": 6796, + "nodeType": "IfStatement", + "src": "1597:122:65", + "trueBody": { + "id": 6792, + "nodeType": "Block", + "src": "1639:39:65", + "statements": [ + { + "expression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6790, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 6788, + "name": "low", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6738, + "src": "1660:3:65", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "argumentTypes": null, + "hexValue": "31", + "id": 6789, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1666:1:65", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "1660:7:65", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 6728, + "id": 6791, + "nodeType": "Return", + "src": "1653:14:65" + } + ] + } + } + ] + }, + "documentation": "@dev Upper bound search function which is kind of binary search algoritm. It searches sorted\narray to find index of the element value. If element is found then returns it's index otherwise\nit returns index of first element which is grater than searched value. If searched element is\nbigger than any array element function then returns first index after last element (i.e. all\nvalues inside the array are smaller than the target). Complexity O(log n).\n@param array The array sorted in ascending order.\n@param element The element's value to be find.\n@return The calculated index value. Returns 0 for empty array.", + "id": 6798, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "findUpperBound", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6725, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6722, + "name": "array", + "nodeType": "VariableDeclaration", + "scope": 6798, + "src": "857:23:65", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 6720, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "857:7:65", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 6721, + "length": null, + "nodeType": "ArrayTypeName", + "src": "857:9:65", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 6724, + "name": "element", + "nodeType": "VariableDeclaration", + "scope": 6798, + "src": "882:15:65", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6723, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "882:7:65", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "856:42:65" + }, + "returnParameters": { + "id": 6728, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6727, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 6798, + "src": "922:7:65", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6726, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "922:7:65", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "921:9:65" + }, + "scope": 6799, + "src": "833:892:65", + "stateMutability": "view", + "superFunction": null, + "visibility": "internal" + } + ], + "scope": 6800, + "src": "129:1598:65" + } + ], + "src": "0:1728:65" + }, + "compiler": { + "name": "solc", + "version": "0.5.0+commit.1d4f565a.Emscripten.clang" + }, + "networks": {}, + "schemaVersion": "3.0.0", + "updatedAt": "2019-01-04T21:44:02.908Z", + "devdoc": { + "details": "Utility library of inline array functions", + "methods": {}, + "title": "Arrays" + }, + "userdoc": { + "methods": {} + } +} \ No newline at end of file diff --git a/node_modules/openzeppelin-solidity/build/contracts/CappedCrowdsale.json b/node_modules/openzeppelin-solidity/build/contracts/CappedCrowdsale.json new file mode 100644 index 0000000..7159b01 --- /dev/null +++ b/node_modules/openzeppelin-solidity/build/contracts/CappedCrowdsale.json @@ -0,0 +1,1957 @@ +{ + "contractName": "CappedCrowdsale", + "abi": [ + { + "constant": true, + "inputs": [], + "name": "rate", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "weiRaised", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "wallet", + "outputs": [ + { + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "beneficiary", + "type": "address" + } + ], + "name": "buyTokens", + "outputs": [], + "payable": true, + "stateMutability": "payable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "token", + "outputs": [ + { + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "name": "cap", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "payable": true, + "stateMutability": "payable", + "type": "fallback" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "purchaser", + "type": "address" + }, + { + "indexed": true, + "name": "beneficiary", + "type": "address" + }, + { + "indexed": false, + "name": "value", + "type": "uint256" + }, + { + "indexed": false, + "name": "amount", + "type": "uint256" + } + ], + "name": "TokensPurchased", + "type": "event" + }, + { + "constant": true, + "inputs": [], + "name": "cap", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "capReached", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "sourceMap": "", + "deployedSourceMap": "", + "source": "pragma solidity ^0.5.0;\n\nimport \"../../math/SafeMath.sol\";\nimport \"../Crowdsale.sol\";\n\n/**\n * @title CappedCrowdsale\n * @dev Crowdsale with a limit for total contributions.\n */\ncontract CappedCrowdsale is Crowdsale {\n using SafeMath for uint256;\n\n uint256 private _cap;\n\n /**\n * @dev Constructor, takes maximum amount of wei accepted in the crowdsale.\n * @param cap Max amount of wei to be contributed\n */\n constructor (uint256 cap) public {\n require(cap > 0);\n _cap = cap;\n }\n\n /**\n * @return the cap of the crowdsale.\n */\n function cap() public view returns (uint256) {\n return _cap;\n }\n\n /**\n * @dev Checks whether the cap has been reached.\n * @return Whether the cap was reached\n */\n function capReached() public view returns (bool) {\n return weiRaised() >= _cap;\n }\n\n /**\n * @dev Extend parent behavior requiring purchase to respect the funding cap.\n * @param beneficiary Token purchaser\n * @param weiAmount Amount of wei contributed\n */\n function _preValidatePurchase(address beneficiary, uint256 weiAmount) internal view {\n super._preValidatePurchase(beneficiary, weiAmount);\n require(weiRaised().add(weiAmount) <= _cap);\n }\n}\n", + "sourcePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/crowdsale/validation/CappedCrowdsale.sol", + "ast": { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/crowdsale/validation/CappedCrowdsale.sol", + "exportedSymbols": { + "CappedCrowdsale": [ + 1595 + ] + }, + "id": 1596, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 1525, + "literals": [ + "solidity", + "^", + "0.5", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "0:23:15" + }, + { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/math/SafeMath.sol", + "file": "../../math/SafeMath.sol", + "id": 1526, + "nodeType": "ImportDirective", + "scope": 1596, + "sourceUnit": 3483, + "src": "25:33:15", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/crowdsale/Crowdsale.sol", + "file": "../Crowdsale.sol", + "id": 1527, + "nodeType": "ImportDirective", + "scope": 1596, + "sourceUnit": 985, + "src": "59:26:15", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 1528, + "name": "Crowdsale", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 984, + "src": "205:9:15", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Crowdsale_$984", + "typeString": "contract Crowdsale" + } + }, + "id": 1529, + "nodeType": "InheritanceSpecifier", + "src": "205:9:15" + } + ], + "contractDependencies": [ + 984, + 6830 + ], + "contractKind": "contract", + "documentation": "@title CappedCrowdsale\n@dev Crowdsale with a limit for total contributions.", + "fullyImplemented": false, + "id": 1595, + "linearizedBaseContracts": [ + 1595, + 984, + 6830 + ], + "name": "CappedCrowdsale", + "nodeType": "ContractDefinition", + "nodes": [ + { + "id": 1532, + "libraryName": { + "contractScope": null, + "id": 1530, + "name": "SafeMath", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 3482, + "src": "227:8:15", + "typeDescriptions": { + "typeIdentifier": "t_contract$_SafeMath_$3482", + "typeString": "library SafeMath" + } + }, + "nodeType": "UsingForDirective", + "src": "221:27:15", + "typeName": { + "id": 1531, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "240:7:15", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + { + "constant": false, + "id": 1534, + "name": "_cap", + "nodeType": "VariableDeclaration", + "scope": 1595, + "src": "254:20:15", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1533, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "254:7:15", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "private" + }, + { + "body": { + "id": 1549, + "nodeType": "Block", + "src": "464:53:15", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1542, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1540, + "name": "cap", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1536, + "src": "482:3:15", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 1541, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "488:1:15", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "482:7:15", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 1539, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6848, + 6849 + ], + "referencedDeclaration": 6848, + "src": "474:7:15", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 1543, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "474:16:15", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1544, + "nodeType": "ExpressionStatement", + "src": "474:16:15" + }, + { + "expression": { + "argumentTypes": null, + "id": 1547, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 1545, + "name": "_cap", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1534, + "src": "500:4:15", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 1546, + "name": "cap", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1536, + "src": "507:3:15", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "500:10:15", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1548, + "nodeType": "ExpressionStatement", + "src": "500:10:15" + } + ] + }, + "documentation": "@dev Constructor, takes maximum amount of wei accepted in the crowdsale.\n@param cap Max amount of wei to be contributed", + "id": 1550, + "implemented": true, + "kind": "constructor", + "modifiers": [], + "name": "", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1537, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1536, + "name": "cap", + "nodeType": "VariableDeclaration", + "scope": 1550, + "src": "444:11:15", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1535, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "444:7:15", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "443:13:15" + }, + "returnParameters": { + "id": 1538, + "nodeType": "ParameterList", + "parameters": [], + "src": "464:0:15" + }, + "scope": 1595, + "src": "431:86:15", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 1557, + "nodeType": "Block", + "src": "625:28:15", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 1555, + "name": "_cap", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1534, + "src": "642:4:15", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 1554, + "id": 1556, + "nodeType": "Return", + "src": "635:11:15" + } + ] + }, + "documentation": "@return the cap of the crowdsale.", + "id": 1558, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "cap", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1551, + "nodeType": "ParameterList", + "parameters": [], + "src": "592:2:15" + }, + "returnParameters": { + "id": 1554, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1553, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 1558, + "src": "616:7:15", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1552, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "616:7:15", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "615:9:15" + }, + "scope": 1595, + "src": "580:73:15", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 1568, + "nodeType": "Block", + "src": "820:43:15", + "statements": [ + { + "expression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1566, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 1563, + "name": "weiRaised", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 836, + "src": "837:9:15", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$", + "typeString": "function () view returns (uint256)" + } + }, + "id": 1564, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "837:11:15", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "argumentTypes": null, + "id": 1565, + "name": "_cap", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1534, + "src": "852:4:15", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "837:19:15", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 1562, + "id": 1567, + "nodeType": "Return", + "src": "830:26:15" + } + ] + }, + "documentation": "@dev Checks whether the cap has been reached.\n@return Whether the cap was reached", + "id": 1569, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "capReached", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1559, + "nodeType": "ParameterList", + "parameters": [], + "src": "790:2:15" + }, + "returnParameters": { + "id": 1562, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1561, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 1569, + "src": "814:4:15", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 1560, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "814:4:15", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "813:6:15" + }, + "scope": 1595, + "src": "771:92:15", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 1593, + "nodeType": "Block", + "src": "1143:120:15", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1579, + "name": "beneficiary", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1571, + "src": "1180:11:15", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1580, + "name": "weiAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1573, + "src": "1193:9:15", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 1576, + "name": "super", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6913, + "src": "1153:5:15", + "typeDescriptions": { + "typeIdentifier": "t_super$_CappedCrowdsale_$1595", + "typeString": "contract super CappedCrowdsale" + } + }, + "id": 1578, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "_preValidatePurchase", + "nodeType": "MemberAccess", + "referencedDeclaration": 915, + "src": "1153:26:15", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256) view" + } + }, + "id": 1581, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1153:50:15", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1582, + "nodeType": "ExpressionStatement", + "src": "1153:50:15" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1590, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1587, + "name": "weiAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1573, + "src": "1237:9:15", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 1584, + "name": "weiRaised", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 836, + "src": "1221:9:15", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$", + "typeString": "function () view returns (uint256)" + } + }, + "id": 1585, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1221:11:15", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1586, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 3461, + "src": "1221:15:15", + "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": 1588, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1221:26:15", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<=", + "rightExpression": { + "argumentTypes": null, + "id": 1589, + "name": "_cap", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1534, + "src": "1251:4:15", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1221:34:15", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 1583, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6848, + 6849 + ], + "referencedDeclaration": 6848, + "src": "1213:7:15", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 1591, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1213:43:15", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1592, + "nodeType": "ExpressionStatement", + "src": "1213:43:15" + } + ] + }, + "documentation": "@dev Extend parent behavior requiring purchase to respect the funding cap.\n@param beneficiary Token purchaser\n@param weiAmount Amount of wei contributed", + "id": 1594, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_preValidatePurchase", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1574, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1571, + "name": "beneficiary", + "nodeType": "VariableDeclaration", + "scope": 1594, + "src": "1089:19:15", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1570, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1089:7:15", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1573, + "name": "weiAmount", + "nodeType": "VariableDeclaration", + "scope": 1594, + "src": "1110:17:15", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1572, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1110:7:15", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1088:40:15" + }, + "returnParameters": { + "id": 1575, + "nodeType": "ParameterList", + "parameters": [], + "src": "1143:0:15" + }, + "scope": 1595, + "src": "1059:204:15", + "stateMutability": "view", + "superFunction": 915, + "visibility": "internal" + } + ], + "scope": 1596, + "src": "177:1088:15" + } + ], + "src": "0:1266:15" + }, + "legacyAST": { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/crowdsale/validation/CappedCrowdsale.sol", + "exportedSymbols": { + "CappedCrowdsale": [ + 1595 + ] + }, + "id": 1596, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 1525, + "literals": [ + "solidity", + "^", + "0.5", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "0:23:15" + }, + { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/math/SafeMath.sol", + "file": "../../math/SafeMath.sol", + "id": 1526, + "nodeType": "ImportDirective", + "scope": 1596, + "sourceUnit": 3483, + "src": "25:33:15", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/crowdsale/Crowdsale.sol", + "file": "../Crowdsale.sol", + "id": 1527, + "nodeType": "ImportDirective", + "scope": 1596, + "sourceUnit": 985, + "src": "59:26:15", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 1528, + "name": "Crowdsale", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 984, + "src": "205:9:15", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Crowdsale_$984", + "typeString": "contract Crowdsale" + } + }, + "id": 1529, + "nodeType": "InheritanceSpecifier", + "src": "205:9:15" + } + ], + "contractDependencies": [ + 984, + 6830 + ], + "contractKind": "contract", + "documentation": "@title CappedCrowdsale\n@dev Crowdsale with a limit for total contributions.", + "fullyImplemented": false, + "id": 1595, + "linearizedBaseContracts": [ + 1595, + 984, + 6830 + ], + "name": "CappedCrowdsale", + "nodeType": "ContractDefinition", + "nodes": [ + { + "id": 1532, + "libraryName": { + "contractScope": null, + "id": 1530, + "name": "SafeMath", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 3482, + "src": "227:8:15", + "typeDescriptions": { + "typeIdentifier": "t_contract$_SafeMath_$3482", + "typeString": "library SafeMath" + } + }, + "nodeType": "UsingForDirective", + "src": "221:27:15", + "typeName": { + "id": 1531, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "240:7:15", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + { + "constant": false, + "id": 1534, + "name": "_cap", + "nodeType": "VariableDeclaration", + "scope": 1595, + "src": "254:20:15", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1533, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "254:7:15", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "private" + }, + { + "body": { + "id": 1549, + "nodeType": "Block", + "src": "464:53:15", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1542, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1540, + "name": "cap", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1536, + "src": "482:3:15", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 1541, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "488:1:15", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "482:7:15", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 1539, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6848, + 6849 + ], + "referencedDeclaration": 6848, + "src": "474:7:15", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 1543, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "474:16:15", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1544, + "nodeType": "ExpressionStatement", + "src": "474:16:15" + }, + { + "expression": { + "argumentTypes": null, + "id": 1547, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 1545, + "name": "_cap", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1534, + "src": "500:4:15", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 1546, + "name": "cap", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1536, + "src": "507:3:15", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "500:10:15", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1548, + "nodeType": "ExpressionStatement", + "src": "500:10:15" + } + ] + }, + "documentation": "@dev Constructor, takes maximum amount of wei accepted in the crowdsale.\n@param cap Max amount of wei to be contributed", + "id": 1550, + "implemented": true, + "kind": "constructor", + "modifiers": [], + "name": "", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1537, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1536, + "name": "cap", + "nodeType": "VariableDeclaration", + "scope": 1550, + "src": "444:11:15", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1535, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "444:7:15", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "443:13:15" + }, + "returnParameters": { + "id": 1538, + "nodeType": "ParameterList", + "parameters": [], + "src": "464:0:15" + }, + "scope": 1595, + "src": "431:86:15", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 1557, + "nodeType": "Block", + "src": "625:28:15", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 1555, + "name": "_cap", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1534, + "src": "642:4:15", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 1554, + "id": 1556, + "nodeType": "Return", + "src": "635:11:15" + } + ] + }, + "documentation": "@return the cap of the crowdsale.", + "id": 1558, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "cap", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1551, + "nodeType": "ParameterList", + "parameters": [], + "src": "592:2:15" + }, + "returnParameters": { + "id": 1554, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1553, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 1558, + "src": "616:7:15", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1552, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "616:7:15", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "615:9:15" + }, + "scope": 1595, + "src": "580:73:15", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 1568, + "nodeType": "Block", + "src": "820:43:15", + "statements": [ + { + "expression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1566, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 1563, + "name": "weiRaised", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 836, + "src": "837:9:15", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$", + "typeString": "function () view returns (uint256)" + } + }, + "id": 1564, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "837:11:15", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "argumentTypes": null, + "id": 1565, + "name": "_cap", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1534, + "src": "852:4:15", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "837:19:15", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 1562, + "id": 1567, + "nodeType": "Return", + "src": "830:26:15" + } + ] + }, + "documentation": "@dev Checks whether the cap has been reached.\n@return Whether the cap was reached", + "id": 1569, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "capReached", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1559, + "nodeType": "ParameterList", + "parameters": [], + "src": "790:2:15" + }, + "returnParameters": { + "id": 1562, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1561, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 1569, + "src": "814:4:15", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 1560, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "814:4:15", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "813:6:15" + }, + "scope": 1595, + "src": "771:92:15", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 1593, + "nodeType": "Block", + "src": "1143:120:15", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1579, + "name": "beneficiary", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1571, + "src": "1180:11:15", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1580, + "name": "weiAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1573, + "src": "1193:9:15", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 1576, + "name": "super", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6913, + "src": "1153:5:15", + "typeDescriptions": { + "typeIdentifier": "t_super$_CappedCrowdsale_$1595", + "typeString": "contract super CappedCrowdsale" + } + }, + "id": 1578, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "_preValidatePurchase", + "nodeType": "MemberAccess", + "referencedDeclaration": 915, + "src": "1153:26:15", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256) view" + } + }, + "id": 1581, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1153:50:15", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1582, + "nodeType": "ExpressionStatement", + "src": "1153:50:15" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1590, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1587, + "name": "weiAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1573, + "src": "1237:9:15", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 1584, + "name": "weiRaised", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 836, + "src": "1221:9:15", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$", + "typeString": "function () view returns (uint256)" + } + }, + "id": 1585, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1221:11:15", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1586, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 3461, + "src": "1221:15:15", + "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": 1588, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1221:26:15", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<=", + "rightExpression": { + "argumentTypes": null, + "id": 1589, + "name": "_cap", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1534, + "src": "1251:4:15", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1221:34:15", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 1583, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6848, + 6849 + ], + "referencedDeclaration": 6848, + "src": "1213:7:15", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 1591, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1213:43:15", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1592, + "nodeType": "ExpressionStatement", + "src": "1213:43:15" + } + ] + }, + "documentation": "@dev Extend parent behavior requiring purchase to respect the funding cap.\n@param beneficiary Token purchaser\n@param weiAmount Amount of wei contributed", + "id": 1594, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_preValidatePurchase", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1574, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1571, + "name": "beneficiary", + "nodeType": "VariableDeclaration", + "scope": 1594, + "src": "1089:19:15", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1570, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1089:7:15", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1573, + "name": "weiAmount", + "nodeType": "VariableDeclaration", + "scope": 1594, + "src": "1110:17:15", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1572, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1110:7:15", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1088:40:15" + }, + "returnParameters": { + "id": 1575, + "nodeType": "ParameterList", + "parameters": [], + "src": "1143:0:15" + }, + "scope": 1595, + "src": "1059:204:15", + "stateMutability": "view", + "superFunction": 915, + "visibility": "internal" + } + ], + "scope": 1596, + "src": "177:1088:15" + } + ], + "src": "0:1266:15" + }, + "compiler": { + "name": "solc", + "version": "0.5.0+commit.1d4f565a.Emscripten.clang" + }, + "networks": {}, + "schemaVersion": "3.0.0", + "updatedAt": "2019-01-04T21:44:02.873Z", + "devdoc": { + "details": "Crowdsale with a limit for total contributions.", + "methods": { + "buyTokens(address)": { + "details": "low level token purchase ***DO NOT OVERRIDE*** This function has a non-reentrancy guard, so it shouldn't be called by another `nonReentrant` function.", + "params": { + "beneficiary": "Recipient of the token purchase" + } + }, + "cap()": { + "return": "the cap of the crowdsale." + }, + "capReached()": { + "details": "Checks whether the cap has been reached.", + "return": "Whether the cap was reached" + }, + "constructor": { + "details": "Constructor, takes maximum amount of wei accepted in the crowdsale.", + "params": { + "cap": "Max amount of wei to be contributed" + } + }, + "rate()": { + "return": "the number of token units a buyer gets per wei." + }, + "token()": { + "return": "the token being sold." + }, + "wallet()": { + "return": "the address where funds are collected." + }, + "weiRaised()": { + "return": "the amount of wei raised." + } + }, + "title": "CappedCrowdsale" + }, + "userdoc": { + "methods": {} + } +} \ No newline at end of file diff --git a/node_modules/openzeppelin-solidity/build/contracts/CapperRole.json b/node_modules/openzeppelin-solidity/build/contracts/CapperRole.json new file mode 100644 index 0000000..577bc1b --- /dev/null +++ b/node_modules/openzeppelin-solidity/build/contracts/CapperRole.json @@ -0,0 +1,2496 @@ +{ + "contractName": "CapperRole", + "abi": [ + { + "inputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "account", + "type": "address" + } + ], + "name": "CapperAdded", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "account", + "type": "address" + } + ], + "name": "CapperRemoved", + "type": "event" + }, + { + "constant": true, + "inputs": [ + { + "name": "account", + "type": "address" + } + ], + "name": "isCapper", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "account", + "type": "address" + } + ], + "name": "addCapper", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [], + "name": "renounceCapper", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "sourceMap": "", + "deployedSourceMap": "", + "source": "pragma solidity ^0.5.0;\n\nimport \"../Roles.sol\";\n\ncontract CapperRole {\n using Roles for Roles.Role;\n\n event CapperAdded(address indexed account);\n event CapperRemoved(address indexed account);\n\n Roles.Role private _cappers;\n\n constructor () internal {\n _addCapper(msg.sender);\n }\n\n modifier onlyCapper() {\n require(isCapper(msg.sender));\n _;\n }\n\n function isCapper(address account) public view returns (bool) {\n return _cappers.has(account);\n }\n\n function addCapper(address account) public onlyCapper {\n _addCapper(account);\n }\n\n function renounceCapper() public {\n _removeCapper(msg.sender);\n }\n\n function _addCapper(address account) internal {\n _cappers.add(account);\n emit CapperAdded(account);\n }\n\n function _removeCapper(address account) internal {\n _cappers.remove(account);\n emit CapperRemoved(account);\n }\n}\n", + "sourcePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/access/roles/CapperRole.sol", + "ast": { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/access/roles/CapperRole.sol", + "exportedSymbols": { + "CapperRole": [ + 196 + ] + }, + "id": 197, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 95, + "literals": [ + "solidity", + "^", + "0.5", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "0:23:1" + }, + { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/access/Roles.sol", + "file": "../Roles.sol", + "id": 96, + "nodeType": "ImportDirective", + "scope": 197, + "sourceUnit": 94, + "src": "25:22:1", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [], + "contractDependencies": [], + "contractKind": "contract", + "documentation": null, + "fullyImplemented": true, + "id": 196, + "linearizedBaseContracts": [ + 196 + ], + "name": "CapperRole", + "nodeType": "ContractDefinition", + "nodes": [ + { + "id": 99, + "libraryName": { + "contractScope": null, + "id": 97, + "name": "Roles", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 93, + "src": "81:5:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Roles_$93", + "typeString": "library Roles" + } + }, + "nodeType": "UsingForDirective", + "src": "75:27:1", + "typeName": { + "contractScope": null, + "id": 98, + "name": "Roles.Role", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 6, + "src": "91:10:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$6_storage_ptr", + "typeString": "struct Roles.Role" + } + } + }, + { + "anonymous": false, + "documentation": null, + "id": 103, + "name": "CapperAdded", + "nodeType": "EventDefinition", + "parameters": { + "id": 102, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 101, + "indexed": true, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 103, + "src": "126:23:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 100, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "126:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "125:25:1" + }, + "src": "108:43:1" + }, + { + "anonymous": false, + "documentation": null, + "id": 107, + "name": "CapperRemoved", + "nodeType": "EventDefinition", + "parameters": { + "id": 106, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 105, + "indexed": true, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 107, + "src": "176:23:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 104, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "176:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "175:25:1" + }, + "src": "156:45:1" + }, + { + "constant": false, + "id": 109, + "name": "_cappers", + "nodeType": "VariableDeclaration", + "scope": 196, + "src": "207:27:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$6_storage", + "typeString": "struct Roles.Role" + }, + "typeName": { + "contractScope": null, + "id": 108, + "name": "Roles.Role", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 6, + "src": "207:10:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$6_storage_ptr", + "typeString": "struct Roles.Role" + } + }, + "value": null, + "visibility": "private" + }, + { + "body": { + "id": 117, + "nodeType": "Block", + "src": "265:39:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 113, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6845, + "src": "286:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 114, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "286:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "id": 112, + "name": "_addCapper", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 179, + "src": "275:10:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 115, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "275:22:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 116, + "nodeType": "ExpressionStatement", + "src": "275:22:1" + } + ] + }, + "documentation": null, + "id": 118, + "implemented": true, + "kind": "constructor", + "modifiers": [], + "name": "", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 110, + "nodeType": "ParameterList", + "parameters": [], + "src": "253:2:1" + }, + "returnParameters": { + "id": 111, + "nodeType": "ParameterList", + "parameters": [], + "src": "265:0:1" + }, + "scope": 196, + "src": "241:63:1", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 128, + "nodeType": "Block", + "src": "332:57:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 122, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6845, + "src": "359:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 123, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "359:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "id": 121, + "name": "isCapper", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 142, + "src": "350:8:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$", + "typeString": "function (address) view returns (bool)" + } + }, + "id": 124, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "350:20:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 120, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6848, + 6849 + ], + "referencedDeclaration": 6848, + "src": "342:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 125, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "342:29:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 126, + "nodeType": "ExpressionStatement", + "src": "342:29:1" + }, + { + "id": 127, + "nodeType": "PlaceholderStatement", + "src": "381:1:1" + } + ] + }, + "documentation": null, + "id": 129, + "name": "onlyCapper", + "nodeType": "ModifierDefinition", + "parameters": { + "id": 119, + "nodeType": "ParameterList", + "parameters": [], + "src": "329:2:1" + }, + "src": "310:79:1", + "visibility": "internal" + }, + { + "body": { + "id": 141, + "nodeType": "Block", + "src": "457:45:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 138, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 131, + "src": "487:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 136, + "name": "_cappers", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 109, + "src": "474:8:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$6_storage", + "typeString": "struct Roles.Role storage ref" + } + }, + "id": 137, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "has", + "nodeType": "MemberAccess", + "referencedDeclaration": 92, + "src": "474:12:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_Role_$6_storage_ptr_$_t_address_$returns$_t_bool_$bound_to$_t_struct$_Role_$6_storage_ptr_$", + "typeString": "function (struct Roles.Role storage pointer,address) view returns (bool)" + } + }, + "id": 139, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "474:21:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 135, + "id": 140, + "nodeType": "Return", + "src": "467:28:1" + } + ] + }, + "documentation": null, + "id": 142, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "isCapper", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 132, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 131, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 142, + "src": "413:15:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 130, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "413:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "412:17:1" + }, + "returnParameters": { + "id": 135, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 134, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 142, + "src": "451:4:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 133, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "451:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "450:6:1" + }, + "scope": 196, + "src": "395:107:1", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 153, + "nodeType": "Block", + "src": "562:36:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 150, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 144, + "src": "583:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 149, + "name": "_addCapper", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 179, + "src": "572:10:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 151, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "572:19:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 152, + "nodeType": "ExpressionStatement", + "src": "572:19:1" + } + ] + }, + "documentation": null, + "id": 154, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": null, + "id": 147, + "modifierName": { + "argumentTypes": null, + "id": 146, + "name": "onlyCapper", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 129, + "src": "551:10:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "551:10:1" + } + ], + "name": "addCapper", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 145, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 144, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 154, + "src": "527:15:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 143, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "527:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "526:17:1" + }, + "returnParameters": { + "id": 148, + "nodeType": "ParameterList", + "parameters": [], + "src": "562:0:1" + }, + "scope": 196, + "src": "508:90:1", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 162, + "nodeType": "Block", + "src": "637:42:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 158, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6845, + "src": "661:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 159, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "661:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "id": 157, + "name": "_removeCapper", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 195, + "src": "647:13:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 160, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "647:25:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 161, + "nodeType": "ExpressionStatement", + "src": "647:25:1" + } + ] + }, + "documentation": null, + "id": 163, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "renounceCapper", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 155, + "nodeType": "ParameterList", + "parameters": [], + "src": "627:2:1" + }, + "returnParameters": { + "id": 156, + "nodeType": "ParameterList", + "parameters": [], + "src": "637:0:1" + }, + "scope": 196, + "src": "604:75:1", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 178, + "nodeType": "Block", + "src": "731:73:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 171, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 165, + "src": "754:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 168, + "name": "_cappers", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 109, + "src": "741:8:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$6_storage", + "typeString": "struct Roles.Role storage ref" + } + }, + "id": 170, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 38, + "src": "741:12:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Role_$6_storage_ptr_$_t_address_$returns$__$bound_to$_t_struct$_Role_$6_storage_ptr_$", + "typeString": "function (struct Roles.Role storage pointer,address)" + } + }, + "id": 172, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "741:21:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 173, + "nodeType": "ExpressionStatement", + "src": "741:21:1" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 175, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 165, + "src": "789:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 174, + "name": "CapperAdded", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 103, + "src": "777:11:1", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 176, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "777:20:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 177, + "nodeType": "EmitStatement", + "src": "772:25:1" + } + ] + }, + "documentation": null, + "id": 179, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_addCapper", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 166, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 165, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 179, + "src": "705:15:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 164, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "705:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "704:17:1" + }, + "returnParameters": { + "id": 167, + "nodeType": "ParameterList", + "parameters": [], + "src": "731:0:1" + }, + "scope": 196, + "src": "685:119:1", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 194, + "nodeType": "Block", + "src": "859:78:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 187, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 181, + "src": "885:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 184, + "name": "_cappers", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 109, + "src": "869:8:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$6_storage", + "typeString": "struct Roles.Role storage ref" + } + }, + "id": 186, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "remove", + "nodeType": "MemberAccess", + "referencedDeclaration": 69, + "src": "869:15:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Role_$6_storage_ptr_$_t_address_$returns$__$bound_to$_t_struct$_Role_$6_storage_ptr_$", + "typeString": "function (struct Roles.Role storage pointer,address)" + } + }, + "id": 188, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "869:24:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 189, + "nodeType": "ExpressionStatement", + "src": "869:24:1" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 191, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 181, + "src": "922:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 190, + "name": "CapperRemoved", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 107, + "src": "908:13:1", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 192, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "908:22:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 193, + "nodeType": "EmitStatement", + "src": "903:27:1" + } + ] + }, + "documentation": null, + "id": 195, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_removeCapper", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 182, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 181, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 195, + "src": "833:15:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 180, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "833:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "832:17:1" + }, + "returnParameters": { + "id": 183, + "nodeType": "ParameterList", + "parameters": [], + "src": "859:0:1" + }, + "scope": 196, + "src": "810:127:1", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + } + ], + "scope": 197, + "src": "49:890:1" + } + ], + "src": "0:940:1" + }, + "legacyAST": { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/access/roles/CapperRole.sol", + "exportedSymbols": { + "CapperRole": [ + 196 + ] + }, + "id": 197, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 95, + "literals": [ + "solidity", + "^", + "0.5", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "0:23:1" + }, + { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/access/Roles.sol", + "file": "../Roles.sol", + "id": 96, + "nodeType": "ImportDirective", + "scope": 197, + "sourceUnit": 94, + "src": "25:22:1", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [], + "contractDependencies": [], + "contractKind": "contract", + "documentation": null, + "fullyImplemented": true, + "id": 196, + "linearizedBaseContracts": [ + 196 + ], + "name": "CapperRole", + "nodeType": "ContractDefinition", + "nodes": [ + { + "id": 99, + "libraryName": { + "contractScope": null, + "id": 97, + "name": "Roles", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 93, + "src": "81:5:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Roles_$93", + "typeString": "library Roles" + } + }, + "nodeType": "UsingForDirective", + "src": "75:27:1", + "typeName": { + "contractScope": null, + "id": 98, + "name": "Roles.Role", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 6, + "src": "91:10:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$6_storage_ptr", + "typeString": "struct Roles.Role" + } + } + }, + { + "anonymous": false, + "documentation": null, + "id": 103, + "name": "CapperAdded", + "nodeType": "EventDefinition", + "parameters": { + "id": 102, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 101, + "indexed": true, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 103, + "src": "126:23:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 100, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "126:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "125:25:1" + }, + "src": "108:43:1" + }, + { + "anonymous": false, + "documentation": null, + "id": 107, + "name": "CapperRemoved", + "nodeType": "EventDefinition", + "parameters": { + "id": 106, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 105, + "indexed": true, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 107, + "src": "176:23:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 104, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "176:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "175:25:1" + }, + "src": "156:45:1" + }, + { + "constant": false, + "id": 109, + "name": "_cappers", + "nodeType": "VariableDeclaration", + "scope": 196, + "src": "207:27:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$6_storage", + "typeString": "struct Roles.Role" + }, + "typeName": { + "contractScope": null, + "id": 108, + "name": "Roles.Role", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 6, + "src": "207:10:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$6_storage_ptr", + "typeString": "struct Roles.Role" + } + }, + "value": null, + "visibility": "private" + }, + { + "body": { + "id": 117, + "nodeType": "Block", + "src": "265:39:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 113, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6845, + "src": "286:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 114, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "286:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "id": 112, + "name": "_addCapper", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 179, + "src": "275:10:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 115, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "275:22:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 116, + "nodeType": "ExpressionStatement", + "src": "275:22:1" + } + ] + }, + "documentation": null, + "id": 118, + "implemented": true, + "kind": "constructor", + "modifiers": [], + "name": "", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 110, + "nodeType": "ParameterList", + "parameters": [], + "src": "253:2:1" + }, + "returnParameters": { + "id": 111, + "nodeType": "ParameterList", + "parameters": [], + "src": "265:0:1" + }, + "scope": 196, + "src": "241:63:1", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 128, + "nodeType": "Block", + "src": "332:57:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 122, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6845, + "src": "359:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 123, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "359:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "id": 121, + "name": "isCapper", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 142, + "src": "350:8:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$", + "typeString": "function (address) view returns (bool)" + } + }, + "id": 124, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "350:20:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 120, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6848, + 6849 + ], + "referencedDeclaration": 6848, + "src": "342:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 125, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "342:29:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 126, + "nodeType": "ExpressionStatement", + "src": "342:29:1" + }, + { + "id": 127, + "nodeType": "PlaceholderStatement", + "src": "381:1:1" + } + ] + }, + "documentation": null, + "id": 129, + "name": "onlyCapper", + "nodeType": "ModifierDefinition", + "parameters": { + "id": 119, + "nodeType": "ParameterList", + "parameters": [], + "src": "329:2:1" + }, + "src": "310:79:1", + "visibility": "internal" + }, + { + "body": { + "id": 141, + "nodeType": "Block", + "src": "457:45:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 138, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 131, + "src": "487:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 136, + "name": "_cappers", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 109, + "src": "474:8:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$6_storage", + "typeString": "struct Roles.Role storage ref" + } + }, + "id": 137, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "has", + "nodeType": "MemberAccess", + "referencedDeclaration": 92, + "src": "474:12:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_Role_$6_storage_ptr_$_t_address_$returns$_t_bool_$bound_to$_t_struct$_Role_$6_storage_ptr_$", + "typeString": "function (struct Roles.Role storage pointer,address) view returns (bool)" + } + }, + "id": 139, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "474:21:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 135, + "id": 140, + "nodeType": "Return", + "src": "467:28:1" + } + ] + }, + "documentation": null, + "id": 142, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "isCapper", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 132, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 131, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 142, + "src": "413:15:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 130, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "413:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "412:17:1" + }, + "returnParameters": { + "id": 135, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 134, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 142, + "src": "451:4:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 133, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "451:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "450:6:1" + }, + "scope": 196, + "src": "395:107:1", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 153, + "nodeType": "Block", + "src": "562:36:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 150, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 144, + "src": "583:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 149, + "name": "_addCapper", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 179, + "src": "572:10:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 151, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "572:19:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 152, + "nodeType": "ExpressionStatement", + "src": "572:19:1" + } + ] + }, + "documentation": null, + "id": 154, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": null, + "id": 147, + "modifierName": { + "argumentTypes": null, + "id": 146, + "name": "onlyCapper", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 129, + "src": "551:10:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "551:10:1" + } + ], + "name": "addCapper", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 145, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 144, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 154, + "src": "527:15:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 143, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "527:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "526:17:1" + }, + "returnParameters": { + "id": 148, + "nodeType": "ParameterList", + "parameters": [], + "src": "562:0:1" + }, + "scope": 196, + "src": "508:90:1", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 162, + "nodeType": "Block", + "src": "637:42:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 158, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6845, + "src": "661:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 159, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "661:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "id": 157, + "name": "_removeCapper", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 195, + "src": "647:13:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 160, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "647:25:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 161, + "nodeType": "ExpressionStatement", + "src": "647:25:1" + } + ] + }, + "documentation": null, + "id": 163, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "renounceCapper", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 155, + "nodeType": "ParameterList", + "parameters": [], + "src": "627:2:1" + }, + "returnParameters": { + "id": 156, + "nodeType": "ParameterList", + "parameters": [], + "src": "637:0:1" + }, + "scope": 196, + "src": "604:75:1", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 178, + "nodeType": "Block", + "src": "731:73:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 171, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 165, + "src": "754:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 168, + "name": "_cappers", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 109, + "src": "741:8:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$6_storage", + "typeString": "struct Roles.Role storage ref" + } + }, + "id": 170, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 38, + "src": "741:12:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Role_$6_storage_ptr_$_t_address_$returns$__$bound_to$_t_struct$_Role_$6_storage_ptr_$", + "typeString": "function (struct Roles.Role storage pointer,address)" + } + }, + "id": 172, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "741:21:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 173, + "nodeType": "ExpressionStatement", + "src": "741:21:1" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 175, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 165, + "src": "789:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 174, + "name": "CapperAdded", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 103, + "src": "777:11:1", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 176, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "777:20:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 177, + "nodeType": "EmitStatement", + "src": "772:25:1" + } + ] + }, + "documentation": null, + "id": 179, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_addCapper", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 166, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 165, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 179, + "src": "705:15:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 164, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "705:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "704:17:1" + }, + "returnParameters": { + "id": 167, + "nodeType": "ParameterList", + "parameters": [], + "src": "731:0:1" + }, + "scope": 196, + "src": "685:119:1", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 194, + "nodeType": "Block", + "src": "859:78:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 187, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 181, + "src": "885:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 184, + "name": "_cappers", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 109, + "src": "869:8:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$6_storage", + "typeString": "struct Roles.Role storage ref" + } + }, + "id": 186, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "remove", + "nodeType": "MemberAccess", + "referencedDeclaration": 69, + "src": "869:15:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Role_$6_storage_ptr_$_t_address_$returns$__$bound_to$_t_struct$_Role_$6_storage_ptr_$", + "typeString": "function (struct Roles.Role storage pointer,address)" + } + }, + "id": 188, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "869:24:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 189, + "nodeType": "ExpressionStatement", + "src": "869:24:1" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 191, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 181, + "src": "922:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 190, + "name": "CapperRemoved", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 107, + "src": "908:13:1", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 192, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "908:22:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 193, + "nodeType": "EmitStatement", + "src": "903:27:1" + } + ] + }, + "documentation": null, + "id": 195, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_removeCapper", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 182, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 181, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 195, + "src": "833:15:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 180, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "833:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "832:17:1" + }, + "returnParameters": { + "id": 183, + "nodeType": "ParameterList", + "parameters": [], + "src": "859:0:1" + }, + "scope": 196, + "src": "810:127:1", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + } + ], + "scope": 197, + "src": "49:890:1" + } + ], + "src": "0:940:1" + }, + "compiler": { + "name": "solc", + "version": "0.5.0+commit.1d4f565a.Emscripten.clang" + }, + "networks": {}, + "schemaVersion": "3.0.0", + "updatedAt": "2019-01-04T21:44:02.867Z", + "devdoc": { + "methods": {} + }, + "userdoc": { + "methods": {} + } +} \ No newline at end of file diff --git a/node_modules/openzeppelin-solidity/build/contracts/ConditionalEscrow.json b/node_modules/openzeppelin-solidity/build/contracts/ConditionalEscrow.json new file mode 100644 index 0000000..d15ebab --- /dev/null +++ b/node_modules/openzeppelin-solidity/build/contracts/ConditionalEscrow.json @@ -0,0 +1,952 @@ +{ + "contractName": "ConditionalEscrow", + "abi": [ + { + "constant": false, + "inputs": [ + { + "name": "recipient", + "type": "address" + } + ], + "name": "transferPrimary", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "primary", + "outputs": [ + { + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "payee", + "type": "address" + } + ], + "name": "depositsOf", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "payee", + "type": "address" + } + ], + "name": "deposit", + "outputs": [], + "payable": true, + "stateMutability": "payable", + "type": "function" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "payee", + "type": "address" + }, + { + "indexed": false, + "name": "weiAmount", + "type": "uint256" + } + ], + "name": "Deposited", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "payee", + "type": "address" + }, + { + "indexed": false, + "name": "weiAmount", + "type": "uint256" + } + ], + "name": "Withdrawn", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "name": "recipient", + "type": "address" + } + ], + "name": "PrimaryTransferred", + "type": "event" + }, + { + "constant": true, + "inputs": [ + { + "name": "payee", + "type": "address" + } + ], + "name": "withdrawalAllowed", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "payee", + "type": "address" + } + ], + "name": "withdraw", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "sourceMap": "", + "deployedSourceMap": "", + "source": "pragma solidity ^0.5.0;\n\nimport \"./Escrow.sol\";\n\n/**\n * @title ConditionalEscrow\n * @dev Base abstract escrow to only allow withdrawal if a condition is met.\n * @dev Intended usage: See Escrow.sol. Same usage guidelines apply here.\n */\ncontract ConditionalEscrow is Escrow {\n /**\n * @dev Returns whether an address is allowed to withdraw their funds. To be\n * implemented by derived contracts.\n * @param payee The destination address of the funds.\n */\n function withdrawalAllowed(address payee) public view returns (bool);\n\n function withdraw(address payable payee) public {\n require(withdrawalAllowed(payee));\n super.withdraw(payee);\n }\n}\n", + "sourcePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/payment/escrow/ConditionalEscrow.sol", + "ast": { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/payment/escrow/ConditionalEscrow.sol", + "exportedSymbols": { + "ConditionalEscrow": [ + 4026 + ] + }, + "id": 4027, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 3997, + "literals": [ + "solidity", + "^", + "0.5", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "0:23:38" + }, + { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/payment/escrow/Escrow.sol", + "file": "./Escrow.sol", + "id": 3998, + "nodeType": "ImportDirective", + "scope": 4027, + "sourceUnit": 4125, + "src": "25:22:38", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 3999, + "name": "Escrow", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 4124, + "src": "266:6:38", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Escrow_$4124", + "typeString": "contract Escrow" + } + }, + "id": 4000, + "nodeType": "InheritanceSpecifier", + "src": "266:6:38" + } + ], + "contractDependencies": [ + 3656, + 4124 + ], + "contractKind": "contract", + "documentation": "@title ConditionalEscrow\n@dev Base abstract escrow to only allow withdrawal if a condition is met.\n@dev Intended usage: See Escrow.sol. Same usage guidelines apply here.", + "fullyImplemented": false, + "id": 4026, + "linearizedBaseContracts": [ + 4026, + 4124, + 3656 + ], + "name": "ConditionalEscrow", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": null, + "documentation": "@dev Returns whether an address is allowed to withdraw their funds. To be\nimplemented by derived contracts.\n@param payee The destination address of the funds.", + "id": 4007, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "withdrawalAllowed", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4003, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4002, + "name": "payee", + "nodeType": "VariableDeclaration", + "scope": 4007, + "src": "498:13:38", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4001, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "498:7:38", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "497:15:38" + }, + "returnParameters": { + "id": 4006, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4005, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 4007, + "src": "534:4:38", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 4004, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "534:4:38", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "533:6:38" + }, + "scope": 4026, + "src": "471:69:38", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 4024, + "nodeType": "Block", + "src": "594:81:38", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 4014, + "name": "payee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4009, + "src": "630:5:38", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "id": 4013, + "name": "withdrawalAllowed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4007, + "src": "612:17:38", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$", + "typeString": "function (address) view returns (bool)" + } + }, + "id": 4015, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "612:24:38", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 4012, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6848, + 6849 + ], + "referencedDeclaration": 6848, + "src": "604:7:38", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 4016, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "604:33:38", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4017, + "nodeType": "ExpressionStatement", + "src": "604:33:38" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 4021, + "name": "payee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4009, + "src": "662:5:38", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "expression": { + "argumentTypes": null, + "id": 4018, + "name": "super", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6893, + "src": "647:5:38", + "typeDescriptions": { + "typeIdentifier": "t_super$_ConditionalEscrow_$4026", + "typeString": "contract super ConditionalEscrow" + } + }, + "id": 4020, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "withdraw", + "nodeType": "MemberAccess", + "referencedDeclaration": 4123, + "src": "647:14:38", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_payable_$returns$__$", + "typeString": "function (address payable)" + } + }, + "id": 4022, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "647:21:38", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4023, + "nodeType": "ExpressionStatement", + "src": "647:21:38" + } + ] + }, + "documentation": null, + "id": 4025, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "withdraw", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4010, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4009, + "name": "payee", + "nodeType": "VariableDeclaration", + "scope": 4025, + "src": "564:21:38", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + "typeName": { + "id": 4008, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "564:15:38", + "stateMutability": "payable", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "563:23:38" + }, + "returnParameters": { + "id": 4011, + "nodeType": "ParameterList", + "parameters": [], + "src": "594:0:38" + }, + "scope": 4026, + "src": "546:129:38", + "stateMutability": "nonpayable", + "superFunction": 4123, + "visibility": "public" + } + ], + "scope": 4027, + "src": "236:441:38" + } + ], + "src": "0:678:38" + }, + "legacyAST": { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/payment/escrow/ConditionalEscrow.sol", + "exportedSymbols": { + "ConditionalEscrow": [ + 4026 + ] + }, + "id": 4027, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 3997, + "literals": [ + "solidity", + "^", + "0.5", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "0:23:38" + }, + { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/payment/escrow/Escrow.sol", + "file": "./Escrow.sol", + "id": 3998, + "nodeType": "ImportDirective", + "scope": 4027, + "sourceUnit": 4125, + "src": "25:22:38", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 3999, + "name": "Escrow", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 4124, + "src": "266:6:38", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Escrow_$4124", + "typeString": "contract Escrow" + } + }, + "id": 4000, + "nodeType": "InheritanceSpecifier", + "src": "266:6:38" + } + ], + "contractDependencies": [ + 3656, + 4124 + ], + "contractKind": "contract", + "documentation": "@title ConditionalEscrow\n@dev Base abstract escrow to only allow withdrawal if a condition is met.\n@dev Intended usage: See Escrow.sol. Same usage guidelines apply here.", + "fullyImplemented": false, + "id": 4026, + "linearizedBaseContracts": [ + 4026, + 4124, + 3656 + ], + "name": "ConditionalEscrow", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": null, + "documentation": "@dev Returns whether an address is allowed to withdraw their funds. To be\nimplemented by derived contracts.\n@param payee The destination address of the funds.", + "id": 4007, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "withdrawalAllowed", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4003, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4002, + "name": "payee", + "nodeType": "VariableDeclaration", + "scope": 4007, + "src": "498:13:38", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4001, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "498:7:38", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "497:15:38" + }, + "returnParameters": { + "id": 4006, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4005, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 4007, + "src": "534:4:38", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 4004, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "534:4:38", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "533:6:38" + }, + "scope": 4026, + "src": "471:69:38", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 4024, + "nodeType": "Block", + "src": "594:81:38", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 4014, + "name": "payee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4009, + "src": "630:5:38", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "id": 4013, + "name": "withdrawalAllowed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4007, + "src": "612:17:38", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$", + "typeString": "function (address) view returns (bool)" + } + }, + "id": 4015, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "612:24:38", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 4012, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6848, + 6849 + ], + "referencedDeclaration": 6848, + "src": "604:7:38", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 4016, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "604:33:38", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4017, + "nodeType": "ExpressionStatement", + "src": "604:33:38" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 4021, + "name": "payee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4009, + "src": "662:5:38", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "expression": { + "argumentTypes": null, + "id": 4018, + "name": "super", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6893, + "src": "647:5:38", + "typeDescriptions": { + "typeIdentifier": "t_super$_ConditionalEscrow_$4026", + "typeString": "contract super ConditionalEscrow" + } + }, + "id": 4020, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "withdraw", + "nodeType": "MemberAccess", + "referencedDeclaration": 4123, + "src": "647:14:38", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_payable_$returns$__$", + "typeString": "function (address payable)" + } + }, + "id": 4022, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "647:21:38", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4023, + "nodeType": "ExpressionStatement", + "src": "647:21:38" + } + ] + }, + "documentation": null, + "id": 4025, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "withdraw", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4010, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4009, + "name": "payee", + "nodeType": "VariableDeclaration", + "scope": 4025, + "src": "564:21:38", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + "typeName": { + "id": 4008, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "564:15:38", + "stateMutability": "payable", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "563:23:38" + }, + "returnParameters": { + "id": 4011, + "nodeType": "ParameterList", + "parameters": [], + "src": "594:0:38" + }, + "scope": 4026, + "src": "546:129:38", + "stateMutability": "nonpayable", + "superFunction": 4123, + "visibility": "public" + } + ], + "scope": 4027, + "src": "236:441:38" + } + ], + "src": "0:678:38" + }, + "compiler": { + "name": "solc", + "version": "0.5.0+commit.1d4f565a.Emscripten.clang" + }, + "networks": {}, + "schemaVersion": "3.0.0", + "updatedAt": "2019-01-04T21:44:02.888Z", + "devdoc": { + "details": "Base abstract escrow to only allow withdrawal if a condition is met.Intended usage: See Escrow.sol. Same usage guidelines apply here.", + "methods": { + "deposit(address)": { + "details": "Stores the sent amount as credit to be withdrawn.", + "params": { + "payee": "The destination address of the funds." + } + }, + "primary()": { + "return": "the address of the primary." + }, + "transferPrimary(address)": { + "details": "Transfers contract to a new primary.", + "params": { + "recipient": "The address of new primary." + } + }, + "withdrawalAllowed(address)": { + "details": "Returns whether an address is allowed to withdraw their funds. To be implemented by derived contracts.", + "params": { + "payee": "The destination address of the funds." + } + } + }, + "title": "ConditionalEscrow" + }, + "userdoc": { + "methods": {} + } +} \ No newline at end of file diff --git a/node_modules/openzeppelin-solidity/build/contracts/Counter.json b/node_modules/openzeppelin-solidity/build/contracts/Counter.json new file mode 100644 index 0000000..3dee12b --- /dev/null +++ b/node_modules/openzeppelin-solidity/build/contracts/Counter.json @@ -0,0 +1,565 @@ +{ + "contractName": "Counter", + "abi": [], + "bytecode": "0x604c602c600b82828239805160001a60731460008114601c57601e565bfe5b5030600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea165627a7a72305820e4d7c370f9c88333bf0c6e8b8f065446db6c0bc52a348ed5e2bdde054825fc790029", + "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea165627a7a72305820e4d7c370f9c88333bf0c6e8b8f065446db6c0bc52a348ed5e2bdde054825fc790029", + "sourceMap": "652:220:22:-;;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", + "deployedSourceMap": "652:220:22:-;;;;;;;;", + "source": "pragma solidity ^0.5.0;\n\n/**\n * @title Counter\n * @author Matt Condon (@shrugs)\n * @dev Provides an incrementing uint256 id acquired by the `Counter#next` getter.\n * Use this for issuing ERC721 ids or keeping track of request ids, anything you want, really.\n *\n * Include with `using Counter for Counter.Counter;`\n * @notice Does not allow an Id of 0, which is popularly used to signify a null state in solidity.\n * Does not protect from overflows, but if you have 2^256 ids, you have other problems.\n * (But actually, it's generally impossible to increment a counter this many times, energy wise\n * so it's not something you have to worry about.)\n */\nlibrary Counter {\n struct Counter {\n uint256 current; // default: 0\n }\n\n function next(Counter storage index) internal returns (uint256) {\n index.current += 1;\n return index.current;\n }\n}\n", + "sourcePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/drafts/Counter.sol", + "ast": { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/drafts/Counter.sol", + "exportedSymbols": { + "Counter": [ + 2050 + ] + }, + "id": 2051, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 2029, + "literals": [ + "solidity", + "^", + "0.5", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "0:23:22" + }, + { + "baseContracts": [], + "contractDependencies": [], + "contractKind": "library", + "documentation": "@title Counter\n@author Matt Condon (@shrugs)\n@dev Provides an incrementing uint256 id acquired by the `Counter#next` getter.\nUse this for issuing ERC721 ids or keeping track of request ids, anything you want, really.\n * Include with `using Counter for Counter.Counter;`\n@notice Does not allow an Id of 0, which is popularly used to signify a null state in solidity.\nDoes not protect from overflows, but if you have 2^256 ids, you have other problems.\n(But actually, it's generally impossible to increment a counter this many times, energy wise\nso it's not something you have to worry about.)", + "fullyImplemented": true, + "id": 2050, + "linearizedBaseContracts": [ + 2050 + ], + "name": "Counter", + "nodeType": "ContractDefinition", + "nodes": [ + { + "canonicalName": "Counter.Counter", + "id": 2032, + "members": [ + { + "constant": false, + "id": 2031, + "name": "current", + "nodeType": "VariableDeclaration", + "scope": 2032, + "src": "699:15:22", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2030, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "699:7:22", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "name": "Counter", + "nodeType": "StructDefinition", + "scope": 2050, + "src": "674:61:22", + "visibility": "public" + }, + { + "body": { + "id": 2048, + "nodeType": "Block", + "src": "805:65:22", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 2043, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 2039, + "name": "index", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2034, + "src": "815:5:22", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Counter_$2032_storage_ptr", + "typeString": "struct Counter.Counter storage pointer" + } + }, + "id": 2041, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "current", + "nodeType": "MemberAccess", + "referencedDeclaration": 2031, + "src": "815:13:22", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "+=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "31", + "id": 2042, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "832:1:22", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "815:18:22", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2044, + "nodeType": "ExpressionStatement", + "src": "815:18:22" + }, + { + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 2045, + "name": "index", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2034, + "src": "850:5:22", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Counter_$2032_storage_ptr", + "typeString": "struct Counter.Counter storage pointer" + } + }, + "id": 2046, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "current", + "nodeType": "MemberAccess", + "referencedDeclaration": 2031, + "src": "850:13:22", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 2038, + "id": 2047, + "nodeType": "Return", + "src": "843:20:22" + } + ] + }, + "documentation": null, + "id": 2049, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "next", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2035, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2034, + "name": "index", + "nodeType": "VariableDeclaration", + "scope": 2049, + "src": "755:21:22", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Counter_$2032_storage_ptr", + "typeString": "struct Counter.Counter" + }, + "typeName": { + "contractScope": null, + "id": 2033, + "name": "Counter", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 2032, + "src": "755:7:22", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Counter_$2032_storage_ptr", + "typeString": "struct Counter.Counter" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "754:23:22" + }, + "returnParameters": { + "id": 2038, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2037, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 2049, + "src": "796:7:22", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2036, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "796:7:22", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "795:9:22" + }, + "scope": 2050, + "src": "741:129:22", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + } + ], + "scope": 2051, + "src": "652:220:22" + } + ], + "src": "0:873:22" + }, + "legacyAST": { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/drafts/Counter.sol", + "exportedSymbols": { + "Counter": [ + 2050 + ] + }, + "id": 2051, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 2029, + "literals": [ + "solidity", + "^", + "0.5", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "0:23:22" + }, + { + "baseContracts": [], + "contractDependencies": [], + "contractKind": "library", + "documentation": "@title Counter\n@author Matt Condon (@shrugs)\n@dev Provides an incrementing uint256 id acquired by the `Counter#next` getter.\nUse this for issuing ERC721 ids or keeping track of request ids, anything you want, really.\n * Include with `using Counter for Counter.Counter;`\n@notice Does not allow an Id of 0, which is popularly used to signify a null state in solidity.\nDoes not protect from overflows, but if you have 2^256 ids, you have other problems.\n(But actually, it's generally impossible to increment a counter this many times, energy wise\nso it's not something you have to worry about.)", + "fullyImplemented": true, + "id": 2050, + "linearizedBaseContracts": [ + 2050 + ], + "name": "Counter", + "nodeType": "ContractDefinition", + "nodes": [ + { + "canonicalName": "Counter.Counter", + "id": 2032, + "members": [ + { + "constant": false, + "id": 2031, + "name": "current", + "nodeType": "VariableDeclaration", + "scope": 2032, + "src": "699:15:22", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2030, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "699:7:22", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "name": "Counter", + "nodeType": "StructDefinition", + "scope": 2050, + "src": "674:61:22", + "visibility": "public" + }, + { + "body": { + "id": 2048, + "nodeType": "Block", + "src": "805:65:22", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 2043, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 2039, + "name": "index", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2034, + "src": "815:5:22", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Counter_$2032_storage_ptr", + "typeString": "struct Counter.Counter storage pointer" + } + }, + "id": 2041, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "current", + "nodeType": "MemberAccess", + "referencedDeclaration": 2031, + "src": "815:13:22", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "+=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "31", + "id": 2042, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "832:1:22", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "815:18:22", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2044, + "nodeType": "ExpressionStatement", + "src": "815:18:22" + }, + { + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 2045, + "name": "index", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2034, + "src": "850:5:22", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Counter_$2032_storage_ptr", + "typeString": "struct Counter.Counter storage pointer" + } + }, + "id": 2046, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "current", + "nodeType": "MemberAccess", + "referencedDeclaration": 2031, + "src": "850:13:22", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 2038, + "id": 2047, + "nodeType": "Return", + "src": "843:20:22" + } + ] + }, + "documentation": null, + "id": 2049, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "next", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2035, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2034, + "name": "index", + "nodeType": "VariableDeclaration", + "scope": 2049, + "src": "755:21:22", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Counter_$2032_storage_ptr", + "typeString": "struct Counter.Counter" + }, + "typeName": { + "contractScope": null, + "id": 2033, + "name": "Counter", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 2032, + "src": "755:7:22", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Counter_$2032_storage_ptr", + "typeString": "struct Counter.Counter" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "754:23:22" + }, + "returnParameters": { + "id": 2038, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2037, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 2049, + "src": "796:7:22", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2036, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "796:7:22", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "795:9:22" + }, + "scope": 2050, + "src": "741:129:22", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + } + ], + "scope": 2051, + "src": "652:220:22" + } + ], + "src": "0:873:22" + }, + "compiler": { + "name": "solc", + "version": "0.5.0+commit.1d4f565a.Emscripten.clang" + }, + "networks": {}, + "schemaVersion": "3.0.0", + "updatedAt": "2019-01-04T21:44:02.875Z", + "devdoc": { + "author": "Matt Condon (@shrugs)", + "details": "Provides an incrementing uint256 id acquired by the `Counter#next` getter. Use this for issuing ERC721 ids or keeping track of request ids, anything you want, really. * Include with `using Counter for Counter.Counter;`", + "methods": {}, + "title": "Counter" + }, + "userdoc": { + "methods": {}, + "notice": "Does not allow an Id of 0, which is popularly used to signify a null state in solidity. Does not protect from overflows, but if you have 2^256 ids, you have other problems. (But actually, it's generally impossible to increment a counter this many times, energy wise so it's not something you have to worry about.)" + } +} \ No newline at end of file diff --git a/node_modules/openzeppelin-solidity/build/contracts/Crowdsale.json b/node_modules/openzeppelin-solidity/build/contracts/Crowdsale.json new file mode 100644 index 0000000..2e5907e --- /dev/null +++ b/node_modules/openzeppelin-solidity/build/contracts/Crowdsale.json @@ -0,0 +1,6832 @@ +{ + "contractName": "Crowdsale", + "abi": [ + { + "inputs": [ + { + "name": "rate", + "type": "uint256" + }, + { + "name": "wallet", + "type": "address" + }, + { + "name": "token", + "type": "address" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "payable": true, + "stateMutability": "payable", + "type": "fallback" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "purchaser", + "type": "address" + }, + { + "indexed": true, + "name": "beneficiary", + "type": "address" + }, + { + "indexed": false, + "name": "value", + "type": "uint256" + }, + { + "indexed": false, + "name": "amount", + "type": "uint256" + } + ], + "name": "TokensPurchased", + "type": "event" + }, + { + "constant": true, + "inputs": [], + "name": "token", + "outputs": [ + { + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "wallet", + "outputs": [ + { + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "rate", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "weiRaised", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "beneficiary", + "type": "address" + } + ], + "name": "buyTokens", + "outputs": [], + "payable": true, + "stateMutability": "payable", + "type": "function" + } + ], + "bytecode": "0x608060405234801561001057600080fd5b506040516060806107568339810180604052606081101561003057600080fd5b81019080805190602001909291908051906020019092919080519060200190929190505050600160008190555060008311151561006c57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141515156100a857600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515156100e457600080fd5b8260038190555081600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050506105d78061017f6000396000f3fe60806040526004361061006d576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680632c4e722e146100785780634042b66f146100a3578063521eb273146100ce578063ec8ac4d814610125578063fc0c546a14610169575b610076336101c0565b005b34801561008457600080fd5b5061008d6102b6565b6040518082815260200191505060405180910390f35b3480156100af57600080fd5b506100b86102c0565b6040518082815260200191505060405180910390f35b3480156100da57600080fd5b506100e36102ca565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6101676004803603602081101561013b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506101c0565b005b34801561017557600080fd5b5061017e6102f4565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6001600080828254019250508190555060008054905060003490506101e5838261031e565b60006101f08261036e565b90506102078260045461038c90919063ffffffff16565b60048190555061021784826103ad565b8373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f6faf93231a456e552dbc9961f58d9713ee4f2e69d15f1975b050ef0911053a7b8484604051808381526020018281526020019250505060405180910390a361028e84836103bb565b6102966103bf565b6102a0848361042a565b5050600054811415156102b257600080fd5b5050565b6000600354905090565b6000600454905090565b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415151561035a57600080fd5b6000811415151561036a57600080fd5b5050565b60006103856003548361042e90919063ffffffff16565b9050919050565b60008082840190508381101515156103a357600080fd5b8091505092915050565b6103b7828261046c565b5050565b5050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f19350505050158015610427573d6000803e3d6000fd5b50565b5050565b6000808314156104415760009050610466565b6000828402905082848281151561045457fe5b0414151561046157600080fd5b809150505b92915050565b6104b98282600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166104bd9092919063ffffffff16565b5050565b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561056057600080fd5b505af1158015610574573d6000803e3d6000fd5b505050506040513d602081101561058a57600080fd5b810190808051906020019092919050505015156105a657600080fd5b50505056fea165627a7a723058201bc99e1cba74af3a1f061e4f0afdd8fe288c018fbe108218a13c48f66ba187eb0029", + "deployedBytecode": "0x60806040526004361061006d576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680632c4e722e146100785780634042b66f146100a3578063521eb273146100ce578063ec8ac4d814610125578063fc0c546a14610169575b610076336101c0565b005b34801561008457600080fd5b5061008d6102b6565b6040518082815260200191505060405180910390f35b3480156100af57600080fd5b506100b86102c0565b6040518082815260200191505060405180910390f35b3480156100da57600080fd5b506100e36102ca565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6101676004803603602081101561013b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506101c0565b005b34801561017557600080fd5b5061017e6102f4565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6001600080828254019250508190555060008054905060003490506101e5838261031e565b60006101f08261036e565b90506102078260045461038c90919063ffffffff16565b60048190555061021784826103ad565b8373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f6faf93231a456e552dbc9961f58d9713ee4f2e69d15f1975b050ef0911053a7b8484604051808381526020018281526020019250505060405180910390a361028e84836103bb565b6102966103bf565b6102a0848361042a565b5050600054811415156102b257600080fd5b5050565b6000600354905090565b6000600454905090565b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415151561035a57600080fd5b6000811415151561036a57600080fd5b5050565b60006103856003548361042e90919063ffffffff16565b9050919050565b60008082840190508381101515156103a357600080fd5b8091505092915050565b6103b7828261046c565b5050565b5050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f19350505050158015610427573d6000803e3d6000fd5b50565b5050565b6000808314156104415760009050610466565b6000828402905082848281151561045457fe5b0414151561046157600080fd5b809150505b92915050565b6104b98282600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166104bd9092919063ffffffff16565b5050565b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561056057600080fd5b505af1158015610574573d6000803e3d6000fd5b505050506040513d602081101561058a57600080fd5b810190808051906020019092919050505015156105a657600080fd5b50505056fea165627a7a723058201bc99e1cba74af3a1f061e4f0afdd8fe288c018fbe108218a13c48f66ba187eb0029", + "sourceMap": "869:6422:7:-;;;2283:265;8:9:-1;5:2;;;30:1;27;20:12;5:2;2283:265:7;;;;;;;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2283:265:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;576:1:66;560:13;:17;;;;2380:1:7;2373:4;:8;2365:17;;;;;;;;2418:1;2400:20;;:6;:20;;;;2392:29;;;;;;;;2465:1;2439:28;;2447:5;2439:28;;;;2431:37;;;;;;;;2487:4;2479:5;:12;;;;2511:6;2501:7;;:16;;;;;;;;;;;;;;;;;;2536:5;2527:6;;:14;;;;;;;;;;;;;;;;;;2283:265;;;869:6422;;;;;;", + "deployedSourceMap": "869:6422:7:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2875:21;2885:10;2875:9;:21::i;:::-;869:6422;3286:75;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3286:75:7;;;;;;;;;;;;;;;;;;;;;;;3424:85;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3424:85:7;;;;;;;;;;;;;;;;;;;;;;;3114:87;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3114:87:7;;;;;;;;;;;;;;;;;;;;;;;;;;;3766:603;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3766:603:7;;;;;;;;;;;;;;;;;;;;;;2962:76;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2962:76:7;;;;;;;;;;;;;;;;;;;;;;;;;;;3766:603;1010:1:66;993:13;;:18;;;;;;;;;;;1021:20;1044:13;;1021:36;;3844:17:7;3864:9;3844:29;;3883:44;3904:11;3917:9;3883:20;:44::i;:::-;3986:14;4003:26;4019:9;4003:15;:26::i;:::-;3986:43;;4077:25;4092:9;4077:10;;:14;;:25;;;;:::i;:::-;4064:10;:38;;;;4113:37;4130:11;4143:6;4113:16;:37::i;:::-;4193:11;4165:59;;4181:10;4165:59;;;4206:9;4217:6;4165:59;;;;;;;;;;;;;;;;;;;;;;;;4235:46;4258:11;4271:9;4235:22;:46::i;:::-;4292:15;:13;:15::i;:::-;4317:45;4339:11;4352:9;4317:21;:45::i;:::-;1067:1:66;;1102:13;;1086:12;:29;1078:38;;;;;;;;3766:603:7;;:::o;3286:75::-;3323:7;3349:5;;3342:12;;3286:75;:::o;3424:85::-;3466:7;3492:10;;3485:17;;3424:85;:::o;3114:87::-;3153:15;3187:7;;;;;;;;;;;3180:14;;3114:87;:::o;2962:76::-;3000:6;3025;;;;;;;;;;;3018:13;;2962:76;:::o;4911:168::-;5036:1;5013:25;;:11;:25;;;;5005:34;;;;;;;;5070:1;5057:9;:14;;5049:23;;;;;;;;4911:168;;:::o;7004:120::-;7071:7;7097:20;7111:5;;7097:9;:13;;:20;;;;:::i;:::-;7090:27;;7004:120;;;:::o;1431:145:33:-;1489:7;1508:9;1524:1;1520;:5;1508:17;;1548:1;1543;:6;;1535:15;;;;;;;;1568:1;1561:8;;;1431:145;;;;:::o;6206:134:7:-;6293:40;6308:11;6321;6293:14;:40::i;:::-;6206:134;;:::o;6610:145::-;;;:::o;7211:78::-;7255:7;;;;;;;;;;;:16;;:27;7272:9;7255:27;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;7255:27:7;7211:78::o;5374:149::-;;;:::o;229:421:33:-;287:7;532:1;527;:6;523:45;;;556:1;549:8;;;;523:45;578:9;594:1;590;:5;578:17;;622:1;617;613;:5;;;;;;;;:10;605:19;;;;;;;;642:1;635:8;;;229:421;;;;;:::o;5803:137:7:-;5888:45;5908:11;5921;5888:6;;;;;;;;;;;:19;;;;:45;;;;;:::i;:::-;5803:137;;:::o;409:123:48:-;499:5;:14;;;514:2;518:5;499:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;499:25:48;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;499:25:48;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;499:25:48;;;;;;;;;;;;;;;;491:34;;;;;;;;409:123;;;:::o", + "source": "pragma solidity ^0.5.0;\n\nimport \"../token/ERC20/IERC20.sol\";\nimport \"../math/SafeMath.sol\";\nimport \"../token/ERC20/SafeERC20.sol\";\nimport \"../utils/ReentrancyGuard.sol\";\n\n/**\n * @title Crowdsale\n * @dev Crowdsale is a base contract for managing a token crowdsale,\n * allowing investors to purchase tokens with ether. This contract implements\n * such functionality in its most fundamental form and can be extended to provide additional\n * functionality and/or custom behavior.\n * The external interface represents the basic interface for purchasing tokens, and conform\n * the base architecture for crowdsales. They are *not* intended to be modified / overridden.\n * The internal interface conforms the extensible and modifiable surface of crowdsales. Override\n * the methods to add functionality. Consider using 'super' where appropriate to concatenate\n * behavior.\n */\ncontract Crowdsale is ReentrancyGuard {\n using SafeMath for uint256;\n using SafeERC20 for IERC20;\n\n // The token being sold\n IERC20 private _token;\n\n // Address where funds are collected\n address payable private _wallet;\n\n // How many token units a buyer gets per wei.\n // The rate is the conversion between wei and the smallest and indivisible token unit.\n // So, if you are using a rate of 1 with a ERC20Detailed token with 3 decimals called TOK\n // 1 wei will give you 1 unit, or 0.001 TOK.\n uint256 private _rate;\n\n // Amount of wei raised\n uint256 private _weiRaised;\n\n /**\n * Event for token purchase logging\n * @param purchaser who paid for the tokens\n * @param beneficiary who got the tokens\n * @param value weis paid for purchase\n * @param amount amount of tokens purchased\n */\n event TokensPurchased(address indexed purchaser, address indexed beneficiary, uint256 value, uint256 amount);\n\n /**\n * @param rate Number of token units a buyer gets per wei\n * @dev The rate is the conversion between wei and the smallest and indivisible\n * token unit. So, if you are using a rate of 1 with a ERC20Detailed token\n * with 3 decimals called TOK, 1 wei will give you 1 unit, or 0.001 TOK.\n * @param wallet Address where collected funds will be forwarded to\n * @param token Address of the token being sold\n */\n constructor (uint256 rate, address payable wallet, IERC20 token) public {\n require(rate > 0);\n require(wallet != address(0));\n require(address(token) != address(0));\n\n _rate = rate;\n _wallet = wallet;\n _token = token;\n }\n\n /**\n * @dev fallback function ***DO NOT OVERRIDE***\n * Note that other contracts will transfer fund with a base gas stipend\n * of 2300, which is not enough to call buyTokens. Consider calling\n * buyTokens directly when purchasing tokens from a contract.\n */\n function () external payable {\n buyTokens(msg.sender);\n }\n\n /**\n * @return the token being sold.\n */\n function token() public view returns (IERC20) {\n return _token;\n }\n\n /**\n * @return the address where funds are collected.\n */\n function wallet() public view returns (address payable) {\n return _wallet;\n }\n\n /**\n * @return the number of token units a buyer gets per wei.\n */\n function rate() public view returns (uint256) {\n return _rate;\n }\n\n /**\n * @return the amount of wei raised.\n */\n function weiRaised() public view returns (uint256) {\n return _weiRaised;\n }\n\n /**\n * @dev low level token purchase ***DO NOT OVERRIDE***\n * This function has a non-reentrancy guard, so it shouldn't be called by\n * another `nonReentrant` function.\n * @param beneficiary Recipient of the token purchase\n */\n function buyTokens(address beneficiary) public nonReentrant payable {\n uint256 weiAmount = msg.value;\n _preValidatePurchase(beneficiary, weiAmount);\n\n // calculate token amount to be created\n uint256 tokens = _getTokenAmount(weiAmount);\n\n // update state\n _weiRaised = _weiRaised.add(weiAmount);\n\n _processPurchase(beneficiary, tokens);\n emit TokensPurchased(msg.sender, beneficiary, weiAmount, tokens);\n\n _updatePurchasingState(beneficiary, weiAmount);\n\n _forwardFunds();\n _postValidatePurchase(beneficiary, weiAmount);\n }\n\n /**\n * @dev Validation of an incoming purchase. Use require statements to revert state when conditions are not met.\n * Use `super` in contracts that inherit from Crowdsale to extend their validations.\n * Example from CappedCrowdsale.sol's _preValidatePurchase method:\n * super._preValidatePurchase(beneficiary, weiAmount);\n * require(weiRaised().add(weiAmount) <= cap);\n * @param beneficiary Address performing the token purchase\n * @param weiAmount Value in wei involved in the purchase\n */\n function _preValidatePurchase(address beneficiary, uint256 weiAmount) internal view {\n require(beneficiary != address(0));\n require(weiAmount != 0);\n }\n\n /**\n * @dev Validation of an executed purchase. Observe state and use revert statements to undo rollback when valid\n * conditions are not met.\n * @param beneficiary Address performing the token purchase\n * @param weiAmount Value in wei involved in the purchase\n */\n function _postValidatePurchase(address beneficiary, uint256 weiAmount) internal view {\n // solhint-disable-previous-line no-empty-blocks\n }\n\n /**\n * @dev Source of tokens. Override this method to modify the way in which the crowdsale ultimately gets and sends\n * its tokens.\n * @param beneficiary Address performing the token purchase\n * @param tokenAmount Number of tokens to be emitted\n */\n function _deliverTokens(address beneficiary, uint256 tokenAmount) internal {\n _token.safeTransfer(beneficiary, tokenAmount);\n }\n\n /**\n * @dev Executed when a purchase has been validated and is ready to be executed. Doesn't necessarily emit/send\n * tokens.\n * @param beneficiary Address receiving the tokens\n * @param tokenAmount Number of tokens to be purchased\n */\n function _processPurchase(address beneficiary, uint256 tokenAmount) internal {\n _deliverTokens(beneficiary, tokenAmount);\n }\n\n /**\n * @dev Override for extensions that require an internal state to check for validity (current user contributions,\n * etc.)\n * @param beneficiary Address receiving the tokens\n * @param weiAmount Value in wei involved in the purchase\n */\n function _updatePurchasingState(address beneficiary, uint256 weiAmount) internal {\n // solhint-disable-previous-line no-empty-blocks\n }\n\n /**\n * @dev Override to extend the way in which ether is converted to tokens.\n * @param weiAmount Value in wei to be converted into tokens\n * @return Number of tokens that can be purchased with the specified _weiAmount\n */\n function _getTokenAmount(uint256 weiAmount) internal view returns (uint256) {\n return weiAmount.mul(_rate);\n }\n\n /**\n * @dev Determines how ETH is stored/forwarded on purchases.\n */\n function _forwardFunds() internal {\n _wallet.transfer(msg.value);\n }\n}\n", + "sourcePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/crowdsale/Crowdsale.sol", + "ast": { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/crowdsale/Crowdsale.sol", + "exportedSymbols": { + "Crowdsale": [ + 984 + ] + }, + "id": 985, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 719, + "literals": [ + "solidity", + "^", + "0.5", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "0:23:7" + }, + { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/token/ERC20/IERC20.sol", + "file": "../token/ERC20/IERC20.sol", + "id": 720, + "nodeType": "ImportDirective", + "scope": 985, + "sourceUnit": 5053, + "src": "25:35:7", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/math/SafeMath.sol", + "file": "../math/SafeMath.sol", + "id": 721, + "nodeType": "ImportDirective", + "scope": 985, + "sourceUnit": 3483, + "src": "61:30:7", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol", + "file": "../token/ERC20/SafeERC20.sol", + "id": 722, + "nodeType": "ImportDirective", + "scope": 985, + "sourceUnit": 5197, + "src": "92:38:7", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/utils/ReentrancyGuard.sol", + "file": "../utils/ReentrancyGuard.sol", + "id": 723, + "nodeType": "ImportDirective", + "scope": 985, + "sourceUnit": 6831, + "src": "131:38:7", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 724, + "name": "ReentrancyGuard", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 6830, + "src": "891:15:7", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ReentrancyGuard_$6830", + "typeString": "contract ReentrancyGuard" + } + }, + "id": 725, + "nodeType": "InheritanceSpecifier", + "src": "891:15:7" + } + ], + "contractDependencies": [ + 6830 + ], + "contractKind": "contract", + "documentation": "@title Crowdsale\n@dev Crowdsale is a base contract for managing a token crowdsale,\nallowing investors to purchase tokens with ether. This contract implements\nsuch functionality in its most fundamental form and can be extended to provide additional\nfunctionality and/or custom behavior.\nThe external interface represents the basic interface for purchasing tokens, and conform\nthe base architecture for crowdsales. They are *not* intended to be modified / overridden.\nThe internal interface conforms the extensible and modifiable surface of crowdsales. Override\nthe methods to add functionality. Consider using 'super' where appropriate to concatenate\nbehavior.", + "fullyImplemented": true, + "id": 984, + "linearizedBaseContracts": [ + 984, + 6830 + ], + "name": "Crowdsale", + "nodeType": "ContractDefinition", + "nodes": [ + { + "id": 728, + "libraryName": { + "contractScope": null, + "id": 726, + "name": "SafeMath", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 3482, + "src": "919:8:7", + "typeDescriptions": { + "typeIdentifier": "t_contract$_SafeMath_$3482", + "typeString": "library SafeMath" + } + }, + "nodeType": "UsingForDirective", + "src": "913:27:7", + "typeName": { + "id": 727, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "932:7:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + { + "id": 731, + "libraryName": { + "contractScope": null, + "id": 729, + "name": "SafeERC20", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 5196, + "src": "951:9:7", + "typeDescriptions": { + "typeIdentifier": "t_contract$_SafeERC20_$5196", + "typeString": "library SafeERC20" + } + }, + "nodeType": "UsingForDirective", + "src": "945:27:7", + "typeName": { + "contractScope": null, + "id": 730, + "name": "IERC20", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 5052, + "src": "965:6:7", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$5052", + "typeString": "contract IERC20" + } + } + }, + { + "constant": false, + "id": 733, + "name": "_token", + "nodeType": "VariableDeclaration", + "scope": 984, + "src": "1006:21:7", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$5052", + "typeString": "contract IERC20" + }, + "typeName": { + "contractScope": null, + "id": 732, + "name": "IERC20", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 5052, + "src": "1006:6:7", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$5052", + "typeString": "contract IERC20" + } + }, + "value": null, + "visibility": "private" + }, + { + "constant": false, + "id": 735, + "name": "_wallet", + "nodeType": "VariableDeclaration", + "scope": 984, + "src": "1075:31:7", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + "typeName": { + "id": 734, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1075:15:7", + "stateMutability": "payable", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "value": null, + "visibility": "private" + }, + { + "constant": false, + "id": 737, + "name": "_rate", + "nodeType": "VariableDeclaration", + "scope": 984, + "src": "1397:21:7", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 736, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1397:7:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "private" + }, + { + "constant": false, + "id": 739, + "name": "_weiRaised", + "nodeType": "VariableDeclaration", + "scope": 984, + "src": "1453:26:7", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 738, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1453:7:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "private" + }, + { + "anonymous": false, + "documentation": "Event for token purchase logging\n@param purchaser who paid for the tokens\n@param beneficiary who got the tokens\n@param value weis paid for purchase\n@param amount amount of tokens purchased", + "id": 749, + "name": "TokensPurchased", + "nodeType": "EventDefinition", + "parameters": { + "id": 748, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 741, + "indexed": true, + "name": "purchaser", + "nodeType": "VariableDeclaration", + "scope": 749, + "src": "1748:25:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 740, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1748:7:7", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 743, + "indexed": true, + "name": "beneficiary", + "nodeType": "VariableDeclaration", + "scope": 749, + "src": "1775:27:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 742, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1775:7:7", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 745, + "indexed": false, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 749, + "src": "1804:13:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 744, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1804:7:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 747, + "indexed": false, + "name": "amount", + "nodeType": "VariableDeclaration", + "scope": 749, + "src": "1819:14:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 746, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1819:7:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1747:87:7" + }, + "src": "1726:109:7" + }, + { + "body": { + "id": 794, + "nodeType": "Block", + "src": "2355:193:7", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 761, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 759, + "name": "rate", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 751, + "src": "2373:4:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 760, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2380:1:7", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "2373:8:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 758, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6848, + 6849 + ], + "referencedDeclaration": 6848, + "src": "2365:7:7", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 762, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2365:17:7", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 763, + "nodeType": "ExpressionStatement", + "src": "2365:17:7" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + "id": 769, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 765, + "name": "wallet", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 753, + "src": "2400:6:7", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 767, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2418:1:7", + "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": 766, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2410:7:7", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 768, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2410:10:7", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "2400:20:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 764, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6848, + 6849 + ], + "referencedDeclaration": 6848, + "src": "2392:7:7", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 770, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2392:29:7", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 771, + "nodeType": "ExpressionStatement", + "src": "2392:29:7" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 779, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 774, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 755, + "src": "2447:5:7", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$5052", + "typeString": "contract IERC20" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IERC20_$5052", + "typeString": "contract IERC20" + } + ], + "id": 773, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2439:7:7", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 775, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2439:14:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 777, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2465:1:7", + "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": 776, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2457:7:7", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 778, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2457:10:7", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "2439:28:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 772, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6848, + 6849 + ], + "referencedDeclaration": 6848, + "src": "2431:7:7", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 780, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2431:37:7", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 781, + "nodeType": "ExpressionStatement", + "src": "2431:37:7" + }, + { + "expression": { + "argumentTypes": null, + "id": 784, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 782, + "name": "_rate", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 737, + "src": "2479:5:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 783, + "name": "rate", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 751, + "src": "2487:4:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2479:12:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 785, + "nodeType": "ExpressionStatement", + "src": "2479:12:7" + }, + { + "expression": { + "argumentTypes": null, + "id": 788, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 786, + "name": "_wallet", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 735, + "src": "2501:7:7", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 787, + "name": "wallet", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 753, + "src": "2511:6:7", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "2501:16:7", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "id": 789, + "nodeType": "ExpressionStatement", + "src": "2501:16:7" + }, + { + "expression": { + "argumentTypes": null, + "id": 792, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 790, + "name": "_token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 733, + "src": "2527:6:7", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$5052", + "typeString": "contract IERC20" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 791, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 755, + "src": "2536:5:7", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$5052", + "typeString": "contract IERC20" + } + }, + "src": "2527:14:7", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$5052", + "typeString": "contract IERC20" + } + }, + "id": 793, + "nodeType": "ExpressionStatement", + "src": "2527:14:7" + } + ] + }, + "documentation": "@param rate Number of token units a buyer gets per wei\n@dev The rate is the conversion between wei and the smallest and indivisible\ntoken unit. So, if you are using a rate of 1 with a ERC20Detailed token\nwith 3 decimals called TOK, 1 wei will give you 1 unit, or 0.001 TOK.\n@param wallet Address where collected funds will be forwarded to\n@param token Address of the token being sold", + "id": 795, + "implemented": true, + "kind": "constructor", + "modifiers": [], + "name": "", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 756, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 751, + "name": "rate", + "nodeType": "VariableDeclaration", + "scope": 795, + "src": "2296:12:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 750, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2296:7:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 753, + "name": "wallet", + "nodeType": "VariableDeclaration", + "scope": 795, + "src": "2310:22:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + "typeName": { + "id": 752, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2310:15:7", + "stateMutability": "payable", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 755, + "name": "token", + "nodeType": "VariableDeclaration", + "scope": 795, + "src": "2334:12:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$5052", + "typeString": "contract IERC20" + }, + "typeName": { + "contractScope": null, + "id": 754, + "name": "IERC20", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 5052, + "src": "2334:6:7", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$5052", + "typeString": "contract IERC20" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2295:52:7" + }, + "returnParameters": { + "id": 757, + "nodeType": "ParameterList", + "parameters": [], + "src": "2355:0:7" + }, + "scope": 984, + "src": "2283:265:7", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 803, + "nodeType": "Block", + "src": "2865:38:7", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 799, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6845, + "src": "2885:3:7", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 800, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2885:10:7", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "id": 798, + "name": "buyTokens", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 893, + "src": "2875:9:7", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 801, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2875:21:7", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 802, + "nodeType": "ExpressionStatement", + "src": "2875:21:7" + } + ] + }, + "documentation": "@dev fallback function ***DO NOT OVERRIDE***\nNote that other contracts will transfer fund with a base gas stipend\nof 2300, which is not enough to call buyTokens. Consider calling\nbuyTokens directly when purchasing tokens from a contract.", + "id": 804, + "implemented": true, + "kind": "fallback", + "modifiers": [], + "name": "", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 796, + "nodeType": "ParameterList", + "parameters": [], + "src": "2845:2:7" + }, + "returnParameters": { + "id": 797, + "nodeType": "ParameterList", + "parameters": [], + "src": "2865:0:7" + }, + "scope": 984, + "src": "2836:67:7", + "stateMutability": "payable", + "superFunction": null, + "visibility": "external" + }, + { + "body": { + "id": 811, + "nodeType": "Block", + "src": "3008:30:7", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 809, + "name": "_token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 733, + "src": "3025:6:7", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$5052", + "typeString": "contract IERC20" + } + }, + "functionReturnParameters": 808, + "id": 810, + "nodeType": "Return", + "src": "3018:13:7" + } + ] + }, + "documentation": "@return the token being sold.", + "id": 812, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "token", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 805, + "nodeType": "ParameterList", + "parameters": [], + "src": "2976:2:7" + }, + "returnParameters": { + "id": 808, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 807, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 812, + "src": "3000:6:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$5052", + "typeString": "contract IERC20" + }, + "typeName": { + "contractScope": null, + "id": 806, + "name": "IERC20", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 5052, + "src": "3000:6:7", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$5052", + "typeString": "contract IERC20" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2999:8:7" + }, + "scope": 984, + "src": "2962:76:7", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 819, + "nodeType": "Block", + "src": "3170:31:7", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 817, + "name": "_wallet", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 735, + "src": "3187:7:7", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "functionReturnParameters": 816, + "id": 818, + "nodeType": "Return", + "src": "3180:14:7" + } + ] + }, + "documentation": "@return the address where funds are collected.", + "id": 820, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "wallet", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 813, + "nodeType": "ParameterList", + "parameters": [], + "src": "3129:2:7" + }, + "returnParameters": { + "id": 816, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 815, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 820, + "src": "3153:15:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + "typeName": { + "id": 814, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3153:15:7", + "stateMutability": "payable", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3152:17:7" + }, + "scope": 984, + "src": "3114:87:7", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 827, + "nodeType": "Block", + "src": "3332:29:7", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 825, + "name": "_rate", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 737, + "src": "3349:5:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 824, + "id": 826, + "nodeType": "Return", + "src": "3342:12:7" + } + ] + }, + "documentation": "@return the number of token units a buyer gets per wei.", + "id": 828, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "rate", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 821, + "nodeType": "ParameterList", + "parameters": [], + "src": "3299:2:7" + }, + "returnParameters": { + "id": 824, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 823, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 828, + "src": "3323:7:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 822, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3323:7:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3322:9:7" + }, + "scope": 984, + "src": "3286:75:7", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 835, + "nodeType": "Block", + "src": "3475:34:7", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 833, + "name": "_weiRaised", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 739, + "src": "3492:10:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 832, + "id": 834, + "nodeType": "Return", + "src": "3485:17:7" + } + ] + }, + "documentation": "@return the amount of wei raised.", + "id": 836, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "weiRaised", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 829, + "nodeType": "ParameterList", + "parameters": [], + "src": "3442:2:7" + }, + "returnParameters": { + "id": 832, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 831, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 836, + "src": "3466:7:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 830, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3466:7:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3465:9:7" + }, + "scope": 984, + "src": "3424:85:7", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 892, + "nodeType": "Block", + "src": "3834:535:7", + "statements": [ + { + "assignments": [ + 844 + ], + "declarations": [ + { + "constant": false, + "id": 844, + "name": "weiAmount", + "nodeType": "VariableDeclaration", + "scope": 892, + "src": "3844:17:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 843, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3844:7:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 847, + "initialValue": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 845, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6845, + "src": "3864:3:7", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 846, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "value", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "3864:9:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "3844:29:7" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 849, + "name": "beneficiary", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 838, + "src": "3904:11:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 850, + "name": "weiAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 844, + "src": "3917:9:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 848, + "name": "_preValidatePurchase", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 915, + "src": "3883:20:7", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256) view" + } + }, + "id": 851, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3883:44:7", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 852, + "nodeType": "ExpressionStatement", + "src": "3883:44:7" + }, + { + "assignments": [ + 854 + ], + "declarations": [ + { + "constant": false, + "id": 854, + "name": "tokens", + "nodeType": "VariableDeclaration", + "scope": 892, + "src": "3986:14:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 853, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3986:7:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 858, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 856, + "name": "weiAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 844, + "src": "4019:9:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 855, + "name": "_getTokenAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 972, + "src": "4003:15:7", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256) view returns (uint256)" + } + }, + "id": 857, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4003:26:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "3986:43:7" + }, + { + "expression": { + "argumentTypes": null, + "id": 864, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 859, + "name": "_weiRaised", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 739, + "src": "4064:10:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 862, + "name": "weiAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 844, + "src": "4092:9:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 860, + "name": "_weiRaised", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 739, + "src": "4077:10:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 861, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 3461, + "src": "4077:14: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": 863, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4077:25:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4064:38:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 865, + "nodeType": "ExpressionStatement", + "src": "4064:38:7" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 867, + "name": "beneficiary", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 838, + "src": "4130:11:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 868, + "name": "tokens", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 854, + "src": "4143:6:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 866, + "name": "_processPurchase", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 951, + "src": "4113:16:7", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 869, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4113:37:7", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 870, + "nodeType": "ExpressionStatement", + "src": "4113:37:7" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 872, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6845, + "src": "4181:3:7", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 873, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "4181:10:7", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 874, + "name": "beneficiary", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 838, + "src": "4193:11:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 875, + "name": "weiAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 844, + "src": "4206:9:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 876, + "name": "tokens", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 854, + "src": "4217:6:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 871, + "name": "TokensPurchased", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 749, + "src": "4165:15:7", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256,uint256)" + } + }, + "id": 877, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4165:59:7", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 878, + "nodeType": "EmitStatement", + "src": "4160:64:7" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 880, + "name": "beneficiary", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 838, + "src": "4258:11:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 881, + "name": "weiAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 844, + "src": "4271:9:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 879, + "name": "_updatePurchasingState", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 959, + "src": "4235:22:7", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 882, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4235:46:7", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 883, + "nodeType": "ExpressionStatement", + "src": "4235:46:7" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 884, + "name": "_forwardFunds", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 983, + "src": "4292:13:7", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", + "typeString": "function ()" + } + }, + "id": 885, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4292:15:7", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 886, + "nodeType": "ExpressionStatement", + "src": "4292:15:7" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 888, + "name": "beneficiary", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 838, + "src": "4339:11:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 889, + "name": "weiAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 844, + "src": "4352:9:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 887, + "name": "_postValidatePurchase", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 923, + "src": "4317:21:7", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256) view" + } + }, + "id": 890, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4317:45:7", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 891, + "nodeType": "ExpressionStatement", + "src": "4317:45:7" + } + ] + }, + "documentation": "@dev low level token purchase ***DO NOT OVERRIDE***\nThis function has a non-reentrancy guard, so it shouldn't be called by\nanother `nonReentrant` function.\n@param beneficiary Recipient of the token purchase", + "id": 893, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": null, + "id": 841, + "modifierName": { + "argumentTypes": null, + "id": 840, + "name": "nonReentrant", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6829, + "src": "3813:12:7", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "3813:12:7" + } + ], + "name": "buyTokens", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 839, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 838, + "name": "beneficiary", + "nodeType": "VariableDeclaration", + "scope": 893, + "src": "3785:19:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 837, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3785:7:7", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3784:21:7" + }, + "returnParameters": { + "id": 842, + "nodeType": "ParameterList", + "parameters": [], + "src": "3834:0:7" + }, + "scope": 984, + "src": "3766:603:7", + "stateMutability": "payable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 914, + "nodeType": "Block", + "src": "4995:84:7", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 905, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 901, + "name": "beneficiary", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 895, + "src": "5013:11:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 903, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5036:1:7", + "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": 902, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "5028:7:7", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 904, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5028:10:7", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "5013:25:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 900, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6848, + 6849 + ], + "referencedDeclaration": 6848, + "src": "5005:7:7", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 906, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5005:34:7", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 907, + "nodeType": "ExpressionStatement", + "src": "5005:34:7" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 911, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 909, + "name": "weiAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 897, + "src": "5057:9:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 910, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5070:1:7", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "5057:14:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 908, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6848, + 6849 + ], + "referencedDeclaration": 6848, + "src": "5049:7:7", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 912, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5049:23:7", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 913, + "nodeType": "ExpressionStatement", + "src": "5049:23:7" + } + ] + }, + "documentation": "@dev Validation of an incoming purchase. Use require statements to revert state when conditions are not met.\nUse `super` in contracts that inherit from Crowdsale to extend their validations.\nExample from CappedCrowdsale.sol's _preValidatePurchase method:\n super._preValidatePurchase(beneficiary, weiAmount);\n require(weiRaised().add(weiAmount) <= cap);\n@param beneficiary Address performing the token purchase\n@param weiAmount Value in wei involved in the purchase", + "id": 915, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_preValidatePurchase", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 898, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 895, + "name": "beneficiary", + "nodeType": "VariableDeclaration", + "scope": 915, + "src": "4941:19:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 894, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4941:7:7", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 897, + "name": "weiAmount", + "nodeType": "VariableDeclaration", + "scope": 915, + "src": "4962:17:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 896, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4962:7:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4940:40:7" + }, + "returnParameters": { + "id": 899, + "nodeType": "ParameterList", + "parameters": [], + "src": "4995:0:7" + }, + "scope": 984, + "src": "4911:168:7", + "stateMutability": "view", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 922, + "nodeType": "Block", + "src": "5459:64:7", + "statements": [] + }, + "documentation": "@dev Validation of an executed purchase. Observe state and use revert statements to undo rollback when valid\nconditions are not met.\n@param beneficiary Address performing the token purchase\n@param weiAmount Value in wei involved in the purchase", + "id": 923, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_postValidatePurchase", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 920, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 917, + "name": "beneficiary", + "nodeType": "VariableDeclaration", + "scope": 923, + "src": "5405:19:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 916, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5405:7:7", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 919, + "name": "weiAmount", + "nodeType": "VariableDeclaration", + "scope": 923, + "src": "5426:17:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 918, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5426:7:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "5404:40:7" + }, + "returnParameters": { + "id": 921, + "nodeType": "ParameterList", + "parameters": [], + "src": "5459:0:7" + }, + "scope": 984, + "src": "5374:149:7", + "stateMutability": "view", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 937, + "nodeType": "Block", + "src": "5878:62:7", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 933, + "name": "beneficiary", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 925, + "src": "5908:11:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 934, + "name": "tokenAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 927, + "src": "5921:11:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 930, + "name": "_token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 733, + "src": "5888:6:7", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$5052", + "typeString": "contract IERC20" + } + }, + "id": 932, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "safeTransfer", + "nodeType": "MemberAccess", + "referencedDeclaration": 5077, + "src": "5888:19:7", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$5052_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$5052_$", + "typeString": "function (contract IERC20,address,uint256)" + } + }, + "id": 935, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5888:45:7", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 936, + "nodeType": "ExpressionStatement", + "src": "5888:45:7" + } + ] + }, + "documentation": "@dev Source of tokens. Override this method to modify the way in which the crowdsale ultimately gets and sends\nits tokens.\n@param beneficiary Address performing the token purchase\n@param tokenAmount Number of tokens to be emitted", + "id": 938, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_deliverTokens", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 928, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 925, + "name": "beneficiary", + "nodeType": "VariableDeclaration", + "scope": 938, + "src": "5827:19:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 924, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5827:7:7", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 927, + "name": "tokenAmount", + "nodeType": "VariableDeclaration", + "scope": 938, + "src": "5848:19:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 926, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5848:7:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "5826:42:7" + }, + "returnParameters": { + "id": 929, + "nodeType": "ParameterList", + "parameters": [], + "src": "5878:0:7" + }, + "scope": 984, + "src": "5803:137:7", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 950, + "nodeType": "Block", + "src": "6283:57:7", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 946, + "name": "beneficiary", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 940, + "src": "6308:11:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 947, + "name": "tokenAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 942, + "src": "6321:11:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 945, + "name": "_deliverTokens", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 938, + "src": "6293:14:7", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 948, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6293:40:7", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 949, + "nodeType": "ExpressionStatement", + "src": "6293:40:7" + } + ] + }, + "documentation": "@dev Executed when a purchase has been validated and is ready to be executed. Doesn't necessarily emit/send\ntokens.\n@param beneficiary Address receiving the tokens\n@param tokenAmount Number of tokens to be purchased", + "id": 951, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_processPurchase", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 943, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 940, + "name": "beneficiary", + "nodeType": "VariableDeclaration", + "scope": 951, + "src": "6232:19:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 939, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6232:7:7", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 942, + "name": "tokenAmount", + "nodeType": "VariableDeclaration", + "scope": 951, + "src": "6253:19:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 941, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6253:7:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "6231:42:7" + }, + "returnParameters": { + "id": 944, + "nodeType": "ParameterList", + "parameters": [], + "src": "6283:0:7" + }, + "scope": 984, + "src": "6206:134:7", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 958, + "nodeType": "Block", + "src": "6691:64:7", + "statements": [] + }, + "documentation": "@dev Override for extensions that require an internal state to check for validity (current user contributions,\netc.)\n@param beneficiary Address receiving the tokens\n@param weiAmount Value in wei involved in the purchase", + "id": 959, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_updatePurchasingState", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 956, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 953, + "name": "beneficiary", + "nodeType": "VariableDeclaration", + "scope": 959, + "src": "6642:19:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 952, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6642:7:7", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 955, + "name": "weiAmount", + "nodeType": "VariableDeclaration", + "scope": 959, + "src": "6663:17:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 954, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6663:7:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "6641:40:7" + }, + "returnParameters": { + "id": 957, + "nodeType": "ParameterList", + "parameters": [], + "src": "6691:0:7" + }, + "scope": 984, + "src": "6610:145:7", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 971, + "nodeType": "Block", + "src": "7080:44:7", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 968, + "name": "_rate", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 737, + "src": "7111:5:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 966, + "name": "weiAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 961, + "src": "7097:9:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 967, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "mul", + "nodeType": "MemberAccess", + "referencedDeclaration": 3389, + "src": "7097:13: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": 969, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7097:20:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 965, + "id": 970, + "nodeType": "Return", + "src": "7090:27:7" + } + ] + }, + "documentation": "@dev Override to extend the way in which ether is converted to tokens.\n@param weiAmount Value in wei to be converted into tokens\n@return Number of tokens that can be purchased with the specified _weiAmount", + "id": 972, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_getTokenAmount", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 962, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 961, + "name": "weiAmount", + "nodeType": "VariableDeclaration", + "scope": 972, + "src": "7029:17:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 960, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7029:7:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "7028:19:7" + }, + "returnParameters": { + "id": 965, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 964, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 972, + "src": "7071:7:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 963, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7071:7:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "7070:9:7" + }, + "scope": 984, + "src": "7004:120:7", + "stateMutability": "view", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 982, + "nodeType": "Block", + "src": "7245:44:7", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 978, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6845, + "src": "7272:3:7", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 979, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "value", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "7272:9:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 975, + "name": "_wallet", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 735, + "src": "7255:7:7", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "id": 977, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "transfer", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "7255:16:7", + "typeDescriptions": { + "typeIdentifier": "t_function_transfer_nonpayable$_t_uint256_$returns$__$", + "typeString": "function (uint256)" + } + }, + "id": 980, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7255:27:7", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 981, + "nodeType": "ExpressionStatement", + "src": "7255:27:7" + } + ] + }, + "documentation": "@dev Determines how ETH is stored/forwarded on purchases.", + "id": 983, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_forwardFunds", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 973, + "nodeType": "ParameterList", + "parameters": [], + "src": "7233:2:7" + }, + "returnParameters": { + "id": 974, + "nodeType": "ParameterList", + "parameters": [], + "src": "7245:0:7" + }, + "scope": 984, + "src": "7211:78:7", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + } + ], + "scope": 985, + "src": "869:6422:7" + } + ], + "src": "0:7292:7" + }, + "legacyAST": { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/crowdsale/Crowdsale.sol", + "exportedSymbols": { + "Crowdsale": [ + 984 + ] + }, + "id": 985, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 719, + "literals": [ + "solidity", + "^", + "0.5", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "0:23:7" + }, + { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/token/ERC20/IERC20.sol", + "file": "../token/ERC20/IERC20.sol", + "id": 720, + "nodeType": "ImportDirective", + "scope": 985, + "sourceUnit": 5053, + "src": "25:35:7", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/math/SafeMath.sol", + "file": "../math/SafeMath.sol", + "id": 721, + "nodeType": "ImportDirective", + "scope": 985, + "sourceUnit": 3483, + "src": "61:30:7", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol", + "file": "../token/ERC20/SafeERC20.sol", + "id": 722, + "nodeType": "ImportDirective", + "scope": 985, + "sourceUnit": 5197, + "src": "92:38:7", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/utils/ReentrancyGuard.sol", + "file": "../utils/ReentrancyGuard.sol", + "id": 723, + "nodeType": "ImportDirective", + "scope": 985, + "sourceUnit": 6831, + "src": "131:38:7", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 724, + "name": "ReentrancyGuard", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 6830, + "src": "891:15:7", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ReentrancyGuard_$6830", + "typeString": "contract ReentrancyGuard" + } + }, + "id": 725, + "nodeType": "InheritanceSpecifier", + "src": "891:15:7" + } + ], + "contractDependencies": [ + 6830 + ], + "contractKind": "contract", + "documentation": "@title Crowdsale\n@dev Crowdsale is a base contract for managing a token crowdsale,\nallowing investors to purchase tokens with ether. This contract implements\nsuch functionality in its most fundamental form and can be extended to provide additional\nfunctionality and/or custom behavior.\nThe external interface represents the basic interface for purchasing tokens, and conform\nthe base architecture for crowdsales. They are *not* intended to be modified / overridden.\nThe internal interface conforms the extensible and modifiable surface of crowdsales. Override\nthe methods to add functionality. Consider using 'super' where appropriate to concatenate\nbehavior.", + "fullyImplemented": true, + "id": 984, + "linearizedBaseContracts": [ + 984, + 6830 + ], + "name": "Crowdsale", + "nodeType": "ContractDefinition", + "nodes": [ + { + "id": 728, + "libraryName": { + "contractScope": null, + "id": 726, + "name": "SafeMath", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 3482, + "src": "919:8:7", + "typeDescriptions": { + "typeIdentifier": "t_contract$_SafeMath_$3482", + "typeString": "library SafeMath" + } + }, + "nodeType": "UsingForDirective", + "src": "913:27:7", + "typeName": { + "id": 727, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "932:7:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + { + "id": 731, + "libraryName": { + "contractScope": null, + "id": 729, + "name": "SafeERC20", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 5196, + "src": "951:9:7", + "typeDescriptions": { + "typeIdentifier": "t_contract$_SafeERC20_$5196", + "typeString": "library SafeERC20" + } + }, + "nodeType": "UsingForDirective", + "src": "945:27:7", + "typeName": { + "contractScope": null, + "id": 730, + "name": "IERC20", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 5052, + "src": "965:6:7", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$5052", + "typeString": "contract IERC20" + } + } + }, + { + "constant": false, + "id": 733, + "name": "_token", + "nodeType": "VariableDeclaration", + "scope": 984, + "src": "1006:21:7", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$5052", + "typeString": "contract IERC20" + }, + "typeName": { + "contractScope": null, + "id": 732, + "name": "IERC20", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 5052, + "src": "1006:6:7", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$5052", + "typeString": "contract IERC20" + } + }, + "value": null, + "visibility": "private" + }, + { + "constant": false, + "id": 735, + "name": "_wallet", + "nodeType": "VariableDeclaration", + "scope": 984, + "src": "1075:31:7", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + "typeName": { + "id": 734, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1075:15:7", + "stateMutability": "payable", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "value": null, + "visibility": "private" + }, + { + "constant": false, + "id": 737, + "name": "_rate", + "nodeType": "VariableDeclaration", + "scope": 984, + "src": "1397:21:7", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 736, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1397:7:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "private" + }, + { + "constant": false, + "id": 739, + "name": "_weiRaised", + "nodeType": "VariableDeclaration", + "scope": 984, + "src": "1453:26:7", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 738, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1453:7:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "private" + }, + { + "anonymous": false, + "documentation": "Event for token purchase logging\n@param purchaser who paid for the tokens\n@param beneficiary who got the tokens\n@param value weis paid for purchase\n@param amount amount of tokens purchased", + "id": 749, + "name": "TokensPurchased", + "nodeType": "EventDefinition", + "parameters": { + "id": 748, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 741, + "indexed": true, + "name": "purchaser", + "nodeType": "VariableDeclaration", + "scope": 749, + "src": "1748:25:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 740, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1748:7:7", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 743, + "indexed": true, + "name": "beneficiary", + "nodeType": "VariableDeclaration", + "scope": 749, + "src": "1775:27:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 742, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1775:7:7", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 745, + "indexed": false, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 749, + "src": "1804:13:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 744, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1804:7:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 747, + "indexed": false, + "name": "amount", + "nodeType": "VariableDeclaration", + "scope": 749, + "src": "1819:14:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 746, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1819:7:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1747:87:7" + }, + "src": "1726:109:7" + }, + { + "body": { + "id": 794, + "nodeType": "Block", + "src": "2355:193:7", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 761, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 759, + "name": "rate", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 751, + "src": "2373:4:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 760, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2380:1:7", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "2373:8:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 758, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6848, + 6849 + ], + "referencedDeclaration": 6848, + "src": "2365:7:7", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 762, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2365:17:7", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 763, + "nodeType": "ExpressionStatement", + "src": "2365:17:7" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + "id": 769, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 765, + "name": "wallet", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 753, + "src": "2400:6:7", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 767, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2418:1:7", + "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": 766, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2410:7:7", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 768, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2410:10:7", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "2400:20:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 764, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6848, + 6849 + ], + "referencedDeclaration": 6848, + "src": "2392:7:7", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 770, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2392:29:7", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 771, + "nodeType": "ExpressionStatement", + "src": "2392:29:7" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 779, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 774, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 755, + "src": "2447:5:7", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$5052", + "typeString": "contract IERC20" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IERC20_$5052", + "typeString": "contract IERC20" + } + ], + "id": 773, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2439:7:7", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 775, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2439:14:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 777, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2465:1:7", + "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": 776, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2457:7:7", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 778, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2457:10:7", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "2439:28:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 772, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6848, + 6849 + ], + "referencedDeclaration": 6848, + "src": "2431:7:7", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 780, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2431:37:7", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 781, + "nodeType": "ExpressionStatement", + "src": "2431:37:7" + }, + { + "expression": { + "argumentTypes": null, + "id": 784, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 782, + "name": "_rate", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 737, + "src": "2479:5:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 783, + "name": "rate", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 751, + "src": "2487:4:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2479:12:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 785, + "nodeType": "ExpressionStatement", + "src": "2479:12:7" + }, + { + "expression": { + "argumentTypes": null, + "id": 788, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 786, + "name": "_wallet", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 735, + "src": "2501:7:7", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 787, + "name": "wallet", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 753, + "src": "2511:6:7", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "2501:16:7", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "id": 789, + "nodeType": "ExpressionStatement", + "src": "2501:16:7" + }, + { + "expression": { + "argumentTypes": null, + "id": 792, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 790, + "name": "_token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 733, + "src": "2527:6:7", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$5052", + "typeString": "contract IERC20" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 791, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 755, + "src": "2536:5:7", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$5052", + "typeString": "contract IERC20" + } + }, + "src": "2527:14:7", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$5052", + "typeString": "contract IERC20" + } + }, + "id": 793, + "nodeType": "ExpressionStatement", + "src": "2527:14:7" + } + ] + }, + "documentation": "@param rate Number of token units a buyer gets per wei\n@dev The rate is the conversion between wei and the smallest and indivisible\ntoken unit. So, if you are using a rate of 1 with a ERC20Detailed token\nwith 3 decimals called TOK, 1 wei will give you 1 unit, or 0.001 TOK.\n@param wallet Address where collected funds will be forwarded to\n@param token Address of the token being sold", + "id": 795, + "implemented": true, + "kind": "constructor", + "modifiers": [], + "name": "", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 756, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 751, + "name": "rate", + "nodeType": "VariableDeclaration", + "scope": 795, + "src": "2296:12:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 750, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2296:7:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 753, + "name": "wallet", + "nodeType": "VariableDeclaration", + "scope": 795, + "src": "2310:22:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + "typeName": { + "id": 752, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2310:15:7", + "stateMutability": "payable", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 755, + "name": "token", + "nodeType": "VariableDeclaration", + "scope": 795, + "src": "2334:12:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$5052", + "typeString": "contract IERC20" + }, + "typeName": { + "contractScope": null, + "id": 754, + "name": "IERC20", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 5052, + "src": "2334:6:7", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$5052", + "typeString": "contract IERC20" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2295:52:7" + }, + "returnParameters": { + "id": 757, + "nodeType": "ParameterList", + "parameters": [], + "src": "2355:0:7" + }, + "scope": 984, + "src": "2283:265:7", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 803, + "nodeType": "Block", + "src": "2865:38:7", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 799, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6845, + "src": "2885:3:7", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 800, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2885:10:7", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "id": 798, + "name": "buyTokens", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 893, + "src": "2875:9:7", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 801, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2875:21:7", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 802, + "nodeType": "ExpressionStatement", + "src": "2875:21:7" + } + ] + }, + "documentation": "@dev fallback function ***DO NOT OVERRIDE***\nNote that other contracts will transfer fund with a base gas stipend\nof 2300, which is not enough to call buyTokens. Consider calling\nbuyTokens directly when purchasing tokens from a contract.", + "id": 804, + "implemented": true, + "kind": "fallback", + "modifiers": [], + "name": "", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 796, + "nodeType": "ParameterList", + "parameters": [], + "src": "2845:2:7" + }, + "returnParameters": { + "id": 797, + "nodeType": "ParameterList", + "parameters": [], + "src": "2865:0:7" + }, + "scope": 984, + "src": "2836:67:7", + "stateMutability": "payable", + "superFunction": null, + "visibility": "external" + }, + { + "body": { + "id": 811, + "nodeType": "Block", + "src": "3008:30:7", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 809, + "name": "_token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 733, + "src": "3025:6:7", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$5052", + "typeString": "contract IERC20" + } + }, + "functionReturnParameters": 808, + "id": 810, + "nodeType": "Return", + "src": "3018:13:7" + } + ] + }, + "documentation": "@return the token being sold.", + "id": 812, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "token", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 805, + "nodeType": "ParameterList", + "parameters": [], + "src": "2976:2:7" + }, + "returnParameters": { + "id": 808, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 807, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 812, + "src": "3000:6:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$5052", + "typeString": "contract IERC20" + }, + "typeName": { + "contractScope": null, + "id": 806, + "name": "IERC20", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 5052, + "src": "3000:6:7", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$5052", + "typeString": "contract IERC20" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2999:8:7" + }, + "scope": 984, + "src": "2962:76:7", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 819, + "nodeType": "Block", + "src": "3170:31:7", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 817, + "name": "_wallet", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 735, + "src": "3187:7:7", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "functionReturnParameters": 816, + "id": 818, + "nodeType": "Return", + "src": "3180:14:7" + } + ] + }, + "documentation": "@return the address where funds are collected.", + "id": 820, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "wallet", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 813, + "nodeType": "ParameterList", + "parameters": [], + "src": "3129:2:7" + }, + "returnParameters": { + "id": 816, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 815, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 820, + "src": "3153:15:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + "typeName": { + "id": 814, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3153:15:7", + "stateMutability": "payable", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3152:17:7" + }, + "scope": 984, + "src": "3114:87:7", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 827, + "nodeType": "Block", + "src": "3332:29:7", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 825, + "name": "_rate", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 737, + "src": "3349:5:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 824, + "id": 826, + "nodeType": "Return", + "src": "3342:12:7" + } + ] + }, + "documentation": "@return the number of token units a buyer gets per wei.", + "id": 828, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "rate", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 821, + "nodeType": "ParameterList", + "parameters": [], + "src": "3299:2:7" + }, + "returnParameters": { + "id": 824, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 823, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 828, + "src": "3323:7:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 822, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3323:7:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3322:9:7" + }, + "scope": 984, + "src": "3286:75:7", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 835, + "nodeType": "Block", + "src": "3475:34:7", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 833, + "name": "_weiRaised", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 739, + "src": "3492:10:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 832, + "id": 834, + "nodeType": "Return", + "src": "3485:17:7" + } + ] + }, + "documentation": "@return the amount of wei raised.", + "id": 836, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "weiRaised", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 829, + "nodeType": "ParameterList", + "parameters": [], + "src": "3442:2:7" + }, + "returnParameters": { + "id": 832, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 831, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 836, + "src": "3466:7:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 830, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3466:7:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3465:9:7" + }, + "scope": 984, + "src": "3424:85:7", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 892, + "nodeType": "Block", + "src": "3834:535:7", + "statements": [ + { + "assignments": [ + 844 + ], + "declarations": [ + { + "constant": false, + "id": 844, + "name": "weiAmount", + "nodeType": "VariableDeclaration", + "scope": 892, + "src": "3844:17:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 843, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3844:7:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 847, + "initialValue": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 845, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6845, + "src": "3864:3:7", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 846, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "value", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "3864:9:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "3844:29:7" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 849, + "name": "beneficiary", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 838, + "src": "3904:11:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 850, + "name": "weiAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 844, + "src": "3917:9:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 848, + "name": "_preValidatePurchase", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 915, + "src": "3883:20:7", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256) view" + } + }, + "id": 851, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3883:44:7", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 852, + "nodeType": "ExpressionStatement", + "src": "3883:44:7" + }, + { + "assignments": [ + 854 + ], + "declarations": [ + { + "constant": false, + "id": 854, + "name": "tokens", + "nodeType": "VariableDeclaration", + "scope": 892, + "src": "3986:14:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 853, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3986:7:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 858, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 856, + "name": "weiAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 844, + "src": "4019:9:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 855, + "name": "_getTokenAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 972, + "src": "4003:15:7", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256) view returns (uint256)" + } + }, + "id": 857, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4003:26:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "3986:43:7" + }, + { + "expression": { + "argumentTypes": null, + "id": 864, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 859, + "name": "_weiRaised", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 739, + "src": "4064:10:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 862, + "name": "weiAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 844, + "src": "4092:9:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 860, + "name": "_weiRaised", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 739, + "src": "4077:10:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 861, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 3461, + "src": "4077:14: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": 863, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4077:25:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4064:38:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 865, + "nodeType": "ExpressionStatement", + "src": "4064:38:7" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 867, + "name": "beneficiary", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 838, + "src": "4130:11:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 868, + "name": "tokens", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 854, + "src": "4143:6:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 866, + "name": "_processPurchase", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 951, + "src": "4113:16:7", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 869, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4113:37:7", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 870, + "nodeType": "ExpressionStatement", + "src": "4113:37:7" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 872, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6845, + "src": "4181:3:7", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 873, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "4181:10:7", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 874, + "name": "beneficiary", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 838, + "src": "4193:11:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 875, + "name": "weiAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 844, + "src": "4206:9:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 876, + "name": "tokens", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 854, + "src": "4217:6:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 871, + "name": "TokensPurchased", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 749, + "src": "4165:15:7", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256,uint256)" + } + }, + "id": 877, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4165:59:7", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 878, + "nodeType": "EmitStatement", + "src": "4160:64:7" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 880, + "name": "beneficiary", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 838, + "src": "4258:11:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 881, + "name": "weiAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 844, + "src": "4271:9:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 879, + "name": "_updatePurchasingState", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 959, + "src": "4235:22:7", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 882, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4235:46:7", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 883, + "nodeType": "ExpressionStatement", + "src": "4235:46:7" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 884, + "name": "_forwardFunds", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 983, + "src": "4292:13:7", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", + "typeString": "function ()" + } + }, + "id": 885, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4292:15:7", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 886, + "nodeType": "ExpressionStatement", + "src": "4292:15:7" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 888, + "name": "beneficiary", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 838, + "src": "4339:11:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 889, + "name": "weiAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 844, + "src": "4352:9:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 887, + "name": "_postValidatePurchase", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 923, + "src": "4317:21:7", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256) view" + } + }, + "id": 890, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4317:45:7", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 891, + "nodeType": "ExpressionStatement", + "src": "4317:45:7" + } + ] + }, + "documentation": "@dev low level token purchase ***DO NOT OVERRIDE***\nThis function has a non-reentrancy guard, so it shouldn't be called by\nanother `nonReentrant` function.\n@param beneficiary Recipient of the token purchase", + "id": 893, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": null, + "id": 841, + "modifierName": { + "argumentTypes": null, + "id": 840, + "name": "nonReentrant", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6829, + "src": "3813:12:7", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "3813:12:7" + } + ], + "name": "buyTokens", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 839, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 838, + "name": "beneficiary", + "nodeType": "VariableDeclaration", + "scope": 893, + "src": "3785:19:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 837, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3785:7:7", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3784:21:7" + }, + "returnParameters": { + "id": 842, + "nodeType": "ParameterList", + "parameters": [], + "src": "3834:0:7" + }, + "scope": 984, + "src": "3766:603:7", + "stateMutability": "payable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 914, + "nodeType": "Block", + "src": "4995:84:7", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 905, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 901, + "name": "beneficiary", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 895, + "src": "5013:11:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 903, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5036:1:7", + "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": 902, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "5028:7:7", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 904, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5028:10:7", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "5013:25:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 900, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6848, + 6849 + ], + "referencedDeclaration": 6848, + "src": "5005:7:7", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 906, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5005:34:7", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 907, + "nodeType": "ExpressionStatement", + "src": "5005:34:7" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 911, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 909, + "name": "weiAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 897, + "src": "5057:9:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 910, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5070:1:7", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "5057:14:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 908, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6848, + 6849 + ], + "referencedDeclaration": 6848, + "src": "5049:7:7", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 912, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5049:23:7", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 913, + "nodeType": "ExpressionStatement", + "src": "5049:23:7" + } + ] + }, + "documentation": "@dev Validation of an incoming purchase. Use require statements to revert state when conditions are not met.\nUse `super` in contracts that inherit from Crowdsale to extend their validations.\nExample from CappedCrowdsale.sol's _preValidatePurchase method:\n super._preValidatePurchase(beneficiary, weiAmount);\n require(weiRaised().add(weiAmount) <= cap);\n@param beneficiary Address performing the token purchase\n@param weiAmount Value in wei involved in the purchase", + "id": 915, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_preValidatePurchase", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 898, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 895, + "name": "beneficiary", + "nodeType": "VariableDeclaration", + "scope": 915, + "src": "4941:19:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 894, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4941:7:7", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 897, + "name": "weiAmount", + "nodeType": "VariableDeclaration", + "scope": 915, + "src": "4962:17:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 896, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4962:7:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4940:40:7" + }, + "returnParameters": { + "id": 899, + "nodeType": "ParameterList", + "parameters": [], + "src": "4995:0:7" + }, + "scope": 984, + "src": "4911:168:7", + "stateMutability": "view", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 922, + "nodeType": "Block", + "src": "5459:64:7", + "statements": [] + }, + "documentation": "@dev Validation of an executed purchase. Observe state and use revert statements to undo rollback when valid\nconditions are not met.\n@param beneficiary Address performing the token purchase\n@param weiAmount Value in wei involved in the purchase", + "id": 923, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_postValidatePurchase", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 920, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 917, + "name": "beneficiary", + "nodeType": "VariableDeclaration", + "scope": 923, + "src": "5405:19:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 916, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5405:7:7", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 919, + "name": "weiAmount", + "nodeType": "VariableDeclaration", + "scope": 923, + "src": "5426:17:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 918, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5426:7:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "5404:40:7" + }, + "returnParameters": { + "id": 921, + "nodeType": "ParameterList", + "parameters": [], + "src": "5459:0:7" + }, + "scope": 984, + "src": "5374:149:7", + "stateMutability": "view", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 937, + "nodeType": "Block", + "src": "5878:62:7", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 933, + "name": "beneficiary", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 925, + "src": "5908:11:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 934, + "name": "tokenAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 927, + "src": "5921:11:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 930, + "name": "_token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 733, + "src": "5888:6:7", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$5052", + "typeString": "contract IERC20" + } + }, + "id": 932, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "safeTransfer", + "nodeType": "MemberAccess", + "referencedDeclaration": 5077, + "src": "5888:19:7", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$5052_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$5052_$", + "typeString": "function (contract IERC20,address,uint256)" + } + }, + "id": 935, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5888:45:7", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 936, + "nodeType": "ExpressionStatement", + "src": "5888:45:7" + } + ] + }, + "documentation": "@dev Source of tokens. Override this method to modify the way in which the crowdsale ultimately gets and sends\nits tokens.\n@param beneficiary Address performing the token purchase\n@param tokenAmount Number of tokens to be emitted", + "id": 938, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_deliverTokens", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 928, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 925, + "name": "beneficiary", + "nodeType": "VariableDeclaration", + "scope": 938, + "src": "5827:19:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 924, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5827:7:7", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 927, + "name": "tokenAmount", + "nodeType": "VariableDeclaration", + "scope": 938, + "src": "5848:19:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 926, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5848:7:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "5826:42:7" + }, + "returnParameters": { + "id": 929, + "nodeType": "ParameterList", + "parameters": [], + "src": "5878:0:7" + }, + "scope": 984, + "src": "5803:137:7", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 950, + "nodeType": "Block", + "src": "6283:57:7", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 946, + "name": "beneficiary", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 940, + "src": "6308:11:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 947, + "name": "tokenAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 942, + "src": "6321:11:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 945, + "name": "_deliverTokens", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 938, + "src": "6293:14:7", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 948, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6293:40:7", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 949, + "nodeType": "ExpressionStatement", + "src": "6293:40:7" + } + ] + }, + "documentation": "@dev Executed when a purchase has been validated and is ready to be executed. Doesn't necessarily emit/send\ntokens.\n@param beneficiary Address receiving the tokens\n@param tokenAmount Number of tokens to be purchased", + "id": 951, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_processPurchase", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 943, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 940, + "name": "beneficiary", + "nodeType": "VariableDeclaration", + "scope": 951, + "src": "6232:19:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 939, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6232:7:7", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 942, + "name": "tokenAmount", + "nodeType": "VariableDeclaration", + "scope": 951, + "src": "6253:19:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 941, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6253:7:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "6231:42:7" + }, + "returnParameters": { + "id": 944, + "nodeType": "ParameterList", + "parameters": [], + "src": "6283:0:7" + }, + "scope": 984, + "src": "6206:134:7", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 958, + "nodeType": "Block", + "src": "6691:64:7", + "statements": [] + }, + "documentation": "@dev Override for extensions that require an internal state to check for validity (current user contributions,\netc.)\n@param beneficiary Address receiving the tokens\n@param weiAmount Value in wei involved in the purchase", + "id": 959, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_updatePurchasingState", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 956, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 953, + "name": "beneficiary", + "nodeType": "VariableDeclaration", + "scope": 959, + "src": "6642:19:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 952, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6642:7:7", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 955, + "name": "weiAmount", + "nodeType": "VariableDeclaration", + "scope": 959, + "src": "6663:17:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 954, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6663:7:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "6641:40:7" + }, + "returnParameters": { + "id": 957, + "nodeType": "ParameterList", + "parameters": [], + "src": "6691:0:7" + }, + "scope": 984, + "src": "6610:145:7", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 971, + "nodeType": "Block", + "src": "7080:44:7", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 968, + "name": "_rate", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 737, + "src": "7111:5:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 966, + "name": "weiAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 961, + "src": "7097:9:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 967, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "mul", + "nodeType": "MemberAccess", + "referencedDeclaration": 3389, + "src": "7097:13: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": 969, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7097:20:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 965, + "id": 970, + "nodeType": "Return", + "src": "7090:27:7" + } + ] + }, + "documentation": "@dev Override to extend the way in which ether is converted to tokens.\n@param weiAmount Value in wei to be converted into tokens\n@return Number of tokens that can be purchased with the specified _weiAmount", + "id": 972, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_getTokenAmount", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 962, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 961, + "name": "weiAmount", + "nodeType": "VariableDeclaration", + "scope": 972, + "src": "7029:17:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 960, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7029:7:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "7028:19:7" + }, + "returnParameters": { + "id": 965, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 964, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 972, + "src": "7071:7:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 963, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7071:7:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "7070:9:7" + }, + "scope": 984, + "src": "7004:120:7", + "stateMutability": "view", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 982, + "nodeType": "Block", + "src": "7245:44:7", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 978, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6845, + "src": "7272:3:7", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 979, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "value", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "7272:9:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 975, + "name": "_wallet", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 735, + "src": "7255:7:7", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "id": 977, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "transfer", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "7255:16:7", + "typeDescriptions": { + "typeIdentifier": "t_function_transfer_nonpayable$_t_uint256_$returns$__$", + "typeString": "function (uint256)" + } + }, + "id": 980, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7255:27:7", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 981, + "nodeType": "ExpressionStatement", + "src": "7255:27:7" + } + ] + }, + "documentation": "@dev Determines how ETH is stored/forwarded on purchases.", + "id": 983, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_forwardFunds", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 973, + "nodeType": "ParameterList", + "parameters": [], + "src": "7233:2:7" + }, + "returnParameters": { + "id": 974, + "nodeType": "ParameterList", + "parameters": [], + "src": "7245:0:7" + }, + "scope": 984, + "src": "7211:78:7", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + } + ], + "scope": 985, + "src": "869:6422:7" + } + ], + "src": "0:7292:7" + }, + "compiler": { + "name": "solc", + "version": "0.5.0+commit.1d4f565a.Emscripten.clang" + }, + "networks": {}, + "schemaVersion": "3.0.0", + "updatedAt": "2019-01-04T21:44:02.870Z", + "devdoc": { + "details": "Crowdsale is a base contract for managing a token crowdsale, allowing investors to purchase tokens with ether. This contract implements such functionality in its most fundamental form and can be extended to provide additional functionality and/or custom behavior. The external interface represents the basic interface for purchasing tokens, and conform the base architecture for crowdsales. They are *not* intended to be modified / overridden. The internal interface conforms the extensible and modifiable surface of crowdsales. Override the methods to add functionality. Consider using 'super' where appropriate to concatenate behavior.", + "methods": { + "buyTokens(address)": { + "details": "low level token purchase ***DO NOT OVERRIDE*** This function has a non-reentrancy guard, so it shouldn't be called by another `nonReentrant` function.", + "params": { + "beneficiary": "Recipient of the token purchase" + } + }, + "constructor": { + "details": "The rate is the conversion between wei and the smallest and indivisible token unit. So, if you are using a rate of 1 with a ERC20Detailed token with 3 decimals called TOK, 1 wei will give you 1 unit, or 0.001 TOK.", + "params": { + "rate": "Number of token units a buyer gets per wei", + "token": "Address of the token being sold", + "wallet": "Address where collected funds will be forwarded to" + } + }, + "rate()": { + "return": "the number of token units a buyer gets per wei." + }, + "token()": { + "return": "the token being sold." + }, + "wallet()": { + "return": "the address where funds are collected." + }, + "weiRaised()": { + "return": "the amount of wei raised." + } + }, + "title": "Crowdsale" + }, + "userdoc": { + "methods": {} + } +} \ No newline at end of file diff --git a/node_modules/openzeppelin-solidity/build/contracts/ECDSA.json b/node_modules/openzeppelin-solidity/build/contracts/ECDSA.json new file mode 100644 index 0000000..1571b6e --- /dev/null +++ b/node_modules/openzeppelin-solidity/build/contracts/ECDSA.json @@ -0,0 +1,2303 @@ +{ + "contractName": "ECDSA", + "abi": [], + "bytecode": "0x604c602c600b82828239805160001a60731460008114601c57601e565bfe5b5030600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea165627a7a72305820794de0a4a0068f53e8b7025e6c1639e94fd2d741cfe5117b81092d26466e60880029", + "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea165627a7a72305820794de0a4a0068f53e8b7025e6c1639e94fd2d741cfe5117b81092d26466e60880029", + "sourceMap": "299:1753:20:-;;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", + "deployedSourceMap": "299:1753:20:-;;;;;;;;", + "source": "pragma solidity ^0.5.0;\n\n/**\n * @title Elliptic curve signature operations\n * @dev Based on https://gist.github.com/axic/5b33912c6f61ae6fd96d6c4a47afde6d\n * TODO Remove this library once solidity supports passing a signature to ecrecover.\n * See https://github.com/ethereum/solidity/issues/864\n */\n\nlibrary ECDSA {\n /**\n * @dev Recover signer address from a message by using their signature\n * @param hash bytes32 message, the hash is the signed message. What is recovered is the signer address.\n * @param signature bytes signature, the signature is generated using web3.eth.sign()\n */\n function recover(bytes32 hash, bytes memory signature) internal pure returns (address) {\n bytes32 r;\n bytes32 s;\n uint8 v;\n\n // Check the signature length\n if (signature.length != 65) {\n return (address(0));\n }\n\n // Divide the signature in r, s and v variables\n // ecrecover takes the signature parameters, and the only way to get them\n // currently is to use assembly.\n // solhint-disable-next-line no-inline-assembly\n assembly {\n r := mload(add(signature, 0x20))\n s := mload(add(signature, 0x40))\n v := byte(0, mload(add(signature, 0x60)))\n }\n\n // Version of signature should be 27 or 28, but 0 and 1 are also possible versions\n if (v < 27) {\n v += 27;\n }\n\n // If the version is correct return the signer address\n if (v != 27 && v != 28) {\n return (address(0));\n } else {\n return ecrecover(hash, v, r, s);\n }\n }\n\n /**\n * toEthSignedMessageHash\n * @dev prefix a bytes32 value with \"\\x19Ethereum Signed Message:\"\n * and hash the result\n */\n function toEthSignedMessageHash(bytes32 hash) internal pure returns (bytes32) {\n // 32 is the length in bytes of hash,\n // enforced by the type signature above\n return keccak256(abi.encodePacked(\"\\x19Ethereum Signed Message:\\n32\", hash));\n }\n}\n", + "sourcePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/cryptography/ECDSA.sol", + "ast": { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/cryptography/ECDSA.sol", + "exportedSymbols": { + "ECDSA": [ + 1958 + ] + }, + "id": 1959, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 1879, + "literals": [ + "solidity", + "^", + "0.5", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "0:23:20" + }, + { + "baseContracts": [], + "contractDependencies": [], + "contractKind": "library", + "documentation": "@title Elliptic curve signature operations\n@dev Based on https://gist.github.com/axic/5b33912c6f61ae6fd96d6c4a47afde6d\nTODO Remove this library once solidity supports passing a signature to ecrecover.\nSee https://github.com/ethereum/solidity/issues/864", + "fullyImplemented": true, + "id": 1958, + "linearizedBaseContracts": [ + 1958 + ], + "name": "ECDSA", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": { + "id": 1940, + "nodeType": "Block", + "src": "696:939:20", + "statements": [ + { + "assignments": [ + 1889 + ], + "declarations": [ + { + "constant": false, + "id": 1889, + "name": "r", + "nodeType": "VariableDeclaration", + "scope": 1940, + "src": "706:9:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 1888, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "706:7:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1890, + "initialValue": null, + "nodeType": "VariableDeclarationStatement", + "src": "706:9:20" + }, + { + "assignments": [ + 1892 + ], + "declarations": [ + { + "constant": false, + "id": 1892, + "name": "s", + "nodeType": "VariableDeclaration", + "scope": 1940, + "src": "725:9:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 1891, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "725:7:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1893, + "initialValue": null, + "nodeType": "VariableDeclarationStatement", + "src": "725:9:20" + }, + { + "assignments": [ + 1895 + ], + "declarations": [ + { + "constant": false, + "id": 1895, + "name": "v", + "nodeType": "VariableDeclaration", + "scope": 1940, + "src": "744:7:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 1894, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "744:5:20", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1896, + "initialValue": null, + "nodeType": "VariableDeclarationStatement", + "src": "744:7:20" + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1900, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1897, + "name": "signature", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1883, + "src": "804:9:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 1898, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "804:16:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "3635", + "id": 1899, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "824:2:20", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_65_by_1", + "typeString": "int_const 65" + }, + "value": "65" + }, + "src": "804:22:20", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 1907, + "nodeType": "IfStatement", + "src": "800:72:20", + "trueBody": { + "id": 1906, + "nodeType": "Block", + "src": "828:44:20", + "statements": [ + { + "expression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 1902, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "858:1:20", + "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": 1901, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "850:7:20", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 1903, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "850:10:20", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "id": 1904, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "849:12:20", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "functionReturnParameters": 1887, + "id": 1905, + "nodeType": "Return", + "src": "842:19:20" + } + ] + } + }, + { + "externalReferences": [ + { + "r": { + "declaration": 1889, + "isOffset": false, + "isSlot": false, + "src": "1140:1:20", + "valueSize": 1 + } + }, + { + "v": { + "declaration": 1895, + "isOffset": false, + "isSlot": false, + "src": "1230:1:20", + "valueSize": 1 + } + }, + { + "signature": { + "declaration": 1883, + "isOffset": false, + "isSlot": false, + "src": "1155:9:20", + "valueSize": 1 + } + }, + { + "s": { + "declaration": 1892, + "isOffset": false, + "isSlot": false, + "src": "1185:1:20", + "valueSize": 1 + } + }, + { + "signature": { + "declaration": 1883, + "isOffset": false, + "isSlot": false, + "src": "1200:9:20", + "valueSize": 1 + } + }, + { + "signature": { + "declaration": 1883, + "isOffset": false, + "isSlot": false, + "src": "1253:9:20", + "valueSize": 1 + } + } + ], + "id": 1908, + "nodeType": "InlineAssembly", + "operations": "{\n r := mload(add(signature, 0x20))\n s := mload(add(signature, 0x40))\n v := byte(0, mload(add(signature, 0x60)))\n}", + "src": "1117:267:20" + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "id": 1911, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1909, + "name": "v", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1895, + "src": "1386:1:20", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "argumentTypes": null, + "hexValue": "3237", + "id": 1910, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1390:2:20", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_27_by_1", + "typeString": "int_const 27" + }, + "value": "27" + }, + "src": "1386:6:20", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 1917, + "nodeType": "IfStatement", + "src": "1382:44:20", + "trueBody": { + "id": 1916, + "nodeType": "Block", + "src": "1394:32:20", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 1914, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 1912, + "name": "v", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1895, + "src": "1408:1:20", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "Assignment", + "operator": "+=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "3237", + "id": 1913, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1413:2:20", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_27_by_1", + "typeString": "int_const 27" + }, + "value": "27" + }, + "src": "1408:7:20", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "id": 1915, + "nodeType": "ExpressionStatement", + "src": "1408:7:20" + } + ] + } + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 1924, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "id": 1920, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1918, + "name": "v", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1895, + "src": "1503:1:20", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "3237", + "id": 1919, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1508:2:20", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_27_by_1", + "typeString": "int_const 27" + }, + "value": "27" + }, + "src": "1503:7:20", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "id": 1923, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1921, + "name": "v", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1895, + "src": "1514:1:20", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "3238", + "id": 1922, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1519:2:20", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_28_by_1", + "typeString": "int_const 28" + }, + "value": "28" + }, + "src": "1514:7:20", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "1503:18:20", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 1938, + "nodeType": "Block", + "src": "1573:56:20", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1932, + "name": "hash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1881, + "src": "1604:4:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "id": 1933, + "name": "v", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1895, + "src": "1610:1:20", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + { + "argumentTypes": null, + "id": 1934, + "name": "r", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1889, + "src": "1613:1:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "id": 1935, + "name": "s", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1892, + "src": "1616:1:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 1931, + "name": "ecrecover", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6837, + "src": "1594:9:20", + "typeDescriptions": { + "typeIdentifier": "t_function_ecrecover_pure$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$_t_address_$", + "typeString": "function (bytes32,uint8,bytes32,bytes32) pure returns (address)" + } + }, + "id": 1936, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1594:24:20", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "functionReturnParameters": 1887, + "id": 1937, + "nodeType": "Return", + "src": "1587:31:20" + } + ] + }, + "id": 1939, + "nodeType": "IfStatement", + "src": "1499:130:20", + "trueBody": { + "id": 1930, + "nodeType": "Block", + "src": "1523:44:20", + "statements": [ + { + "expression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 1926, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1553:1:20", + "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": 1925, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "1545:7:20", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 1927, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1545:10:20", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "id": 1928, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "1544:12:20", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "functionReturnParameters": 1887, + "id": 1929, + "nodeType": "Return", + "src": "1537:19:20" + } + ] + } + } + ] + }, + "documentation": "@dev Recover signer address from a message by using their signature\n@param hash bytes32 message, the hash is the signed message. What is recovered is the signer address.\n@param signature bytes signature, the signature is generated using web3.eth.sign()", + "id": 1941, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "recover", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1884, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1881, + "name": "hash", + "nodeType": "VariableDeclaration", + "scope": 1941, + "src": "626:12:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 1880, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "626:7:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1883, + "name": "signature", + "nodeType": "VariableDeclaration", + "scope": 1941, + "src": "640:22:20", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 1882, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "640:5:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "625:38:20" + }, + "returnParameters": { + "id": 1887, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1886, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 1941, + "src": "687:7:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1885, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "687:7:20", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "686:9:20" + }, + "scope": 1958, + "src": "609:1026:20", + "stateMutability": "pure", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 1956, + "nodeType": "Block", + "src": "1863:187:20", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "19457468657265756d205369676e6564204d6573736167653a0a3332", + "id": 1951, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2001:34:20", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_178a2411ab6fbc1ba11064408972259c558d0e82fd48b0aba3ad81d14f065e73", + "typeString": "literal_string \"\u0019Ethereum Signed Message:\n32\"" + }, + "value": "\u0019Ethereum Signed Message:\n32" + }, + { + "argumentTypes": null, + "id": 1952, + "name": "hash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1943, + "src": "2037:4:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_178a2411ab6fbc1ba11064408972259c558d0e82fd48b0aba3ad81d14f065e73", + "typeString": "literal_string \"\u0019Ethereum Signed Message:\n32\"" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "expression": { + "argumentTypes": null, + "id": 1949, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6832, + "src": "1984:3:20", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 1950, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "encodePacked", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "1984:16:20", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$", + "typeString": "function () pure returns (bytes memory)" + } + }, + "id": 1953, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1984:58:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 1948, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6839, + "src": "1974:9:20", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 1954, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1974:69:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "functionReturnParameters": 1947, + "id": 1955, + "nodeType": "Return", + "src": "1967:76:20" + } + ] + }, + "documentation": "toEthSignedMessageHash\n@dev prefix a bytes32 value with \"\\x19Ethereum Signed Message:\"\nand hash the result", + "id": 1957, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "toEthSignedMessageHash", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1944, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1943, + "name": "hash", + "nodeType": "VariableDeclaration", + "scope": 1957, + "src": "1817:12:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 1942, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1817:7:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1816:14:20" + }, + "returnParameters": { + "id": 1947, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1946, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 1957, + "src": "1854:7:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 1945, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1854:7:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1853:9:20" + }, + "scope": 1958, + "src": "1785:265:20", + "stateMutability": "pure", + "superFunction": null, + "visibility": "internal" + } + ], + "scope": 1959, + "src": "299:1753:20" + } + ], + "src": "0:2053:20" + }, + "legacyAST": { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/cryptography/ECDSA.sol", + "exportedSymbols": { + "ECDSA": [ + 1958 + ] + }, + "id": 1959, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 1879, + "literals": [ + "solidity", + "^", + "0.5", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "0:23:20" + }, + { + "baseContracts": [], + "contractDependencies": [], + "contractKind": "library", + "documentation": "@title Elliptic curve signature operations\n@dev Based on https://gist.github.com/axic/5b33912c6f61ae6fd96d6c4a47afde6d\nTODO Remove this library once solidity supports passing a signature to ecrecover.\nSee https://github.com/ethereum/solidity/issues/864", + "fullyImplemented": true, + "id": 1958, + "linearizedBaseContracts": [ + 1958 + ], + "name": "ECDSA", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": { + "id": 1940, + "nodeType": "Block", + "src": "696:939:20", + "statements": [ + { + "assignments": [ + 1889 + ], + "declarations": [ + { + "constant": false, + "id": 1889, + "name": "r", + "nodeType": "VariableDeclaration", + "scope": 1940, + "src": "706:9:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 1888, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "706:7:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1890, + "initialValue": null, + "nodeType": "VariableDeclarationStatement", + "src": "706:9:20" + }, + { + "assignments": [ + 1892 + ], + "declarations": [ + { + "constant": false, + "id": 1892, + "name": "s", + "nodeType": "VariableDeclaration", + "scope": 1940, + "src": "725:9:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 1891, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "725:7:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1893, + "initialValue": null, + "nodeType": "VariableDeclarationStatement", + "src": "725:9:20" + }, + { + "assignments": [ + 1895 + ], + "declarations": [ + { + "constant": false, + "id": 1895, + "name": "v", + "nodeType": "VariableDeclaration", + "scope": 1940, + "src": "744:7:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 1894, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "744:5:20", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1896, + "initialValue": null, + "nodeType": "VariableDeclarationStatement", + "src": "744:7:20" + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1900, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1897, + "name": "signature", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1883, + "src": "804:9:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 1898, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "804:16:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "3635", + "id": 1899, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "824:2:20", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_65_by_1", + "typeString": "int_const 65" + }, + "value": "65" + }, + "src": "804:22:20", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 1907, + "nodeType": "IfStatement", + "src": "800:72:20", + "trueBody": { + "id": 1906, + "nodeType": "Block", + "src": "828:44:20", + "statements": [ + { + "expression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 1902, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "858:1:20", + "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": 1901, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "850:7:20", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 1903, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "850:10:20", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "id": 1904, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "849:12:20", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "functionReturnParameters": 1887, + "id": 1905, + "nodeType": "Return", + "src": "842:19:20" + } + ] + } + }, + { + "externalReferences": [ + { + "r": { + "declaration": 1889, + "isOffset": false, + "isSlot": false, + "src": "1140:1:20", + "valueSize": 1 + } + }, + { + "v": { + "declaration": 1895, + "isOffset": false, + "isSlot": false, + "src": "1230:1:20", + "valueSize": 1 + } + }, + { + "signature": { + "declaration": 1883, + "isOffset": false, + "isSlot": false, + "src": "1155:9:20", + "valueSize": 1 + } + }, + { + "s": { + "declaration": 1892, + "isOffset": false, + "isSlot": false, + "src": "1185:1:20", + "valueSize": 1 + } + }, + { + "signature": { + "declaration": 1883, + "isOffset": false, + "isSlot": false, + "src": "1200:9:20", + "valueSize": 1 + } + }, + { + "signature": { + "declaration": 1883, + "isOffset": false, + "isSlot": false, + "src": "1253:9:20", + "valueSize": 1 + } + } + ], + "id": 1908, + "nodeType": "InlineAssembly", + "operations": "{\n r := mload(add(signature, 0x20))\n s := mload(add(signature, 0x40))\n v := byte(0, mload(add(signature, 0x60)))\n}", + "src": "1117:267:20" + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "id": 1911, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1909, + "name": "v", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1895, + "src": "1386:1:20", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "argumentTypes": null, + "hexValue": "3237", + "id": 1910, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1390:2:20", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_27_by_1", + "typeString": "int_const 27" + }, + "value": "27" + }, + "src": "1386:6:20", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 1917, + "nodeType": "IfStatement", + "src": "1382:44:20", + "trueBody": { + "id": 1916, + "nodeType": "Block", + "src": "1394:32:20", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 1914, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 1912, + "name": "v", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1895, + "src": "1408:1:20", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "Assignment", + "operator": "+=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "3237", + "id": 1913, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1413:2:20", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_27_by_1", + "typeString": "int_const 27" + }, + "value": "27" + }, + "src": "1408:7:20", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "id": 1915, + "nodeType": "ExpressionStatement", + "src": "1408:7:20" + } + ] + } + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 1924, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "id": 1920, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1918, + "name": "v", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1895, + "src": "1503:1:20", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "3237", + "id": 1919, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1508:2:20", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_27_by_1", + "typeString": "int_const 27" + }, + "value": "27" + }, + "src": "1503:7:20", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "id": 1923, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1921, + "name": "v", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1895, + "src": "1514:1:20", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "3238", + "id": 1922, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1519:2:20", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_28_by_1", + "typeString": "int_const 28" + }, + "value": "28" + }, + "src": "1514:7:20", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "1503:18:20", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 1938, + "nodeType": "Block", + "src": "1573:56:20", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1932, + "name": "hash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1881, + "src": "1604:4:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "id": 1933, + "name": "v", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1895, + "src": "1610:1:20", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + { + "argumentTypes": null, + "id": 1934, + "name": "r", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1889, + "src": "1613:1:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "id": 1935, + "name": "s", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1892, + "src": "1616:1:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 1931, + "name": "ecrecover", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6837, + "src": "1594:9:20", + "typeDescriptions": { + "typeIdentifier": "t_function_ecrecover_pure$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$_t_address_$", + "typeString": "function (bytes32,uint8,bytes32,bytes32) pure returns (address)" + } + }, + "id": 1936, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1594:24:20", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "functionReturnParameters": 1887, + "id": 1937, + "nodeType": "Return", + "src": "1587:31:20" + } + ] + }, + "id": 1939, + "nodeType": "IfStatement", + "src": "1499:130:20", + "trueBody": { + "id": 1930, + "nodeType": "Block", + "src": "1523:44:20", + "statements": [ + { + "expression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 1926, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1553:1:20", + "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": 1925, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "1545:7:20", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 1927, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1545:10:20", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "id": 1928, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "1544:12:20", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "functionReturnParameters": 1887, + "id": 1929, + "nodeType": "Return", + "src": "1537:19:20" + } + ] + } + } + ] + }, + "documentation": "@dev Recover signer address from a message by using their signature\n@param hash bytes32 message, the hash is the signed message. What is recovered is the signer address.\n@param signature bytes signature, the signature is generated using web3.eth.sign()", + "id": 1941, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "recover", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1884, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1881, + "name": "hash", + "nodeType": "VariableDeclaration", + "scope": 1941, + "src": "626:12:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 1880, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "626:7:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1883, + "name": "signature", + "nodeType": "VariableDeclaration", + "scope": 1941, + "src": "640:22:20", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 1882, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "640:5:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "625:38:20" + }, + "returnParameters": { + "id": 1887, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1886, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 1941, + "src": "687:7:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1885, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "687:7:20", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "686:9:20" + }, + "scope": 1958, + "src": "609:1026:20", + "stateMutability": "pure", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 1956, + "nodeType": "Block", + "src": "1863:187:20", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "19457468657265756d205369676e6564204d6573736167653a0a3332", + "id": 1951, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2001:34:20", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_178a2411ab6fbc1ba11064408972259c558d0e82fd48b0aba3ad81d14f065e73", + "typeString": "literal_string \"\u0019Ethereum Signed Message:\n32\"" + }, + "value": "\u0019Ethereum Signed Message:\n32" + }, + { + "argumentTypes": null, + "id": 1952, + "name": "hash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1943, + "src": "2037:4:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_178a2411ab6fbc1ba11064408972259c558d0e82fd48b0aba3ad81d14f065e73", + "typeString": "literal_string \"\u0019Ethereum Signed Message:\n32\"" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "expression": { + "argumentTypes": null, + "id": 1949, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6832, + "src": "1984:3:20", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 1950, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "encodePacked", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "1984:16:20", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$", + "typeString": "function () pure returns (bytes memory)" + } + }, + "id": 1953, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1984:58:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 1948, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6839, + "src": "1974:9:20", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 1954, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1974:69:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "functionReturnParameters": 1947, + "id": 1955, + "nodeType": "Return", + "src": "1967:76:20" + } + ] + }, + "documentation": "toEthSignedMessageHash\n@dev prefix a bytes32 value with \"\\x19Ethereum Signed Message:\"\nand hash the result", + "id": 1957, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "toEthSignedMessageHash", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1944, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1943, + "name": "hash", + "nodeType": "VariableDeclaration", + "scope": 1957, + "src": "1817:12:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 1942, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1817:7:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1816:14:20" + }, + "returnParameters": { + "id": 1947, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1946, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 1957, + "src": "1854:7:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 1945, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1854:7:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1853:9:20" + }, + "scope": 1958, + "src": "1785:265:20", + "stateMutability": "pure", + "superFunction": null, + "visibility": "internal" + } + ], + "scope": 1959, + "src": "299:1753:20" + } + ], + "src": "0:2053:20" + }, + "compiler": { + "name": "solc", + "version": "0.5.0+commit.1d4f565a.Emscripten.clang" + }, + "networks": {}, + "schemaVersion": "3.0.0", + "updatedAt": "2019-01-04T21:44:02.875Z", + "devdoc": { + "details": "Based on https://gist.github.com/axic/5b33912c6f61ae6fd96d6c4a47afde6d TODO Remove this library once solidity supports passing a signature to ecrecover. See https://github.com/ethereum/solidity/issues/864", + "methods": {}, + "title": "Elliptic curve signature operations" + }, + "userdoc": { + "methods": {} + } +} \ No newline at end of file diff --git a/node_modules/openzeppelin-solidity/build/contracts/ERC165.json b/node_modules/openzeppelin-solidity/build/contracts/ERC165.json new file mode 100644 index 0000000..8e77552 --- /dev/null +++ b/node_modules/openzeppelin-solidity/build/contracts/ERC165.json @@ -0,0 +1,1287 @@ +{ + "contractName": "ERC165", + "abi": [ + { + "inputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "constant": true, + "inputs": [ + { + "name": "interfaceId", + "type": "bytes4" + } + ], + "name": "supportsInterface", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "sourceMap": "", + "deployedSourceMap": "", + "source": "pragma solidity ^0.5.0;\n\nimport \"./IERC165.sol\";\n\n/**\n * @title ERC165\n * @author Matt Condon (@shrugs)\n * @dev Implements ERC165 using a lookup table.\n */\ncontract ERC165 is IERC165 {\n bytes4 private constant _INTERFACE_ID_ERC165 = 0x01ffc9a7;\n /**\n * 0x01ffc9a7 ===\n * bytes4(keccak256('supportsInterface(bytes4)'))\n */\n\n /**\n * @dev a mapping of interface id to whether or not it's supported\n */\n mapping(bytes4 => bool) private _supportedInterfaces;\n\n /**\n * @dev A contract implementing SupportsInterfaceWithLookup\n * implement ERC165 itself\n */\n constructor () internal {\n _registerInterface(_INTERFACE_ID_ERC165);\n }\n\n /**\n * @dev implement supportsInterface(bytes4) using a lookup table\n */\n function supportsInterface(bytes4 interfaceId) external view returns (bool) {\n return _supportedInterfaces[interfaceId];\n }\n\n /**\n * @dev internal method for registering an interface\n */\n function _registerInterface(bytes4 interfaceId) internal {\n require(interfaceId != 0xffffffff);\n _supportedInterfaces[interfaceId] = true;\n }\n}\n", + "sourcePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/introspection/ERC165.sol", + "ast": { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/introspection/ERC165.sol", + "exportedSymbols": { + "ERC165": [ + 3055 + ] + }, + "id": 3056, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 3006, + "literals": [ + "solidity", + "^", + "0.5", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "0:23:28" + }, + { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/introspection/IERC165.sol", + "file": "./IERC165.sol", + "id": 3007, + "nodeType": "ImportDirective", + "scope": 3056, + "sourceUnit": 3203, + "src": "25:23:28", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 3008, + "name": "IERC165", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 3202, + "src": "175:7:28", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC165_$3202", + "typeString": "contract IERC165" + } + }, + "id": 3009, + "nodeType": "InheritanceSpecifier", + "src": "175:7:28" + } + ], + "contractDependencies": [ + 3202 + ], + "contractKind": "contract", + "documentation": "@title ERC165\n@author Matt Condon (@shrugs)\n@dev Implements ERC165 using a lookup table.", + "fullyImplemented": true, + "id": 3055, + "linearizedBaseContracts": [ + 3055, + 3202 + ], + "name": "ERC165", + "nodeType": "ContractDefinition", + "nodes": [ + { + "constant": true, + "id": 3012, + "name": "_INTERFACE_ID_ERC165", + "nodeType": "VariableDeclaration", + "scope": 3055, + "src": "189:57:28", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "typeName": { + "id": 3010, + "name": "bytes4", + "nodeType": "ElementaryTypeName", + "src": "189:6:28", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "value": { + "argumentTypes": null, + "hexValue": "30783031666663396137", + "id": 3011, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "236:10:28", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_33540519_by_1", + "typeString": "int_const 33540519" + }, + "value": "0x01ffc9a7" + }, + "visibility": "private" + }, + { + "constant": false, + "id": 3016, + "name": "_supportedInterfaces", + "nodeType": "VariableDeclaration", + "scope": 3055, + "src": "436:52:28", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes4_$_t_bool_$", + "typeString": "mapping(bytes4 => bool)" + }, + "typeName": { + "id": 3015, + "keyType": { + "id": 3013, + "name": "bytes4", + "nodeType": "ElementaryTypeName", + "src": "444:6:28", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "nodeType": "Mapping", + "src": "436:23:28", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes4_$_t_bool_$", + "typeString": "mapping(bytes4 => bool)" + }, + "valueType": { + "id": 3014, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "454:4:28", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + }, + "value": null, + "visibility": "private" + }, + { + "body": { + "id": 3023, + "nodeType": "Block", + "src": "630:57:28", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 3020, + "name": "_INTERFACE_ID_ERC165", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3012, + "src": "659:20:28", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + ], + "id": 3019, + "name": "_registerInterface", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3054, + "src": "640:18:28", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes4_$returns$__$", + "typeString": "function (bytes4)" + } + }, + "id": 3021, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "640:40:28", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3022, + "nodeType": "ExpressionStatement", + "src": "640:40:28" + } + ] + }, + "documentation": "@dev A contract implementing SupportsInterfaceWithLookup\nimplement ERC165 itself", + "id": 3024, + "implemented": true, + "kind": "constructor", + "modifiers": [], + "name": "", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3017, + "nodeType": "ParameterList", + "parameters": [], + "src": "618:2:28" + }, + "returnParameters": { + "id": 3018, + "nodeType": "ParameterList", + "parameters": [], + "src": "630:0:28" + }, + "scope": 3055, + "src": "606:81:28", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 3035, + "nodeType": "Block", + "src": "854:57:28", + "statements": [ + { + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 3031, + "name": "_supportedInterfaces", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3016, + "src": "871:20:28", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes4_$_t_bool_$", + "typeString": "mapping(bytes4 => bool)" + } + }, + "id": 3033, + "indexExpression": { + "argumentTypes": null, + "id": 3032, + "name": "interfaceId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3026, + "src": "892:11:28", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "871:33:28", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 3030, + "id": 3034, + "nodeType": "Return", + "src": "864:40:28" + } + ] + }, + "documentation": "@dev implement supportsInterface(bytes4) using a lookup table", + "id": 3036, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "supportsInterface", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3027, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3026, + "name": "interfaceId", + "nodeType": "VariableDeclaration", + "scope": 3036, + "src": "805:18:28", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "typeName": { + "id": 3025, + "name": "bytes4", + "nodeType": "ElementaryTypeName", + "src": "805:6:28", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "804:20:28" + }, + "returnParameters": { + "id": 3030, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3029, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 3036, + "src": "848:4:28", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 3028, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "848:4:28", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "847:6:28" + }, + "scope": 3055, + "src": "778:133:28", + "stateMutability": "view", + "superFunction": 3201, + "visibility": "external" + }, + { + "body": { + "id": 3053, + "nodeType": "Block", + "src": "1047:101:28", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "id": 3044, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 3042, + "name": "interfaceId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3038, + "src": "1065:11:28", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30786666666666666666", + "id": 3043, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1080:10:28", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_4294967295_by_1", + "typeString": "int_const 4294967295" + }, + "value": "0xffffffff" + }, + "src": "1065:25:28", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 3041, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6848, + 6849 + ], + "referencedDeclaration": 6848, + "src": "1057:7:28", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 3045, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1057:34:28", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3046, + "nodeType": "ExpressionStatement", + "src": "1057:34:28" + }, + { + "expression": { + "argumentTypes": null, + "id": 3051, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 3047, + "name": "_supportedInterfaces", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3016, + "src": "1101:20:28", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes4_$_t_bool_$", + "typeString": "mapping(bytes4 => bool)" + } + }, + "id": 3049, + "indexExpression": { + "argumentTypes": null, + "id": 3048, + "name": "interfaceId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3038, + "src": "1122:11:28", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "1101:33:28", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 3050, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1137:4:28", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "src": "1101:40:28", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 3052, + "nodeType": "ExpressionStatement", + "src": "1101:40:28" + } + ] + }, + "documentation": "@dev internal method for registering an interface", + "id": 3054, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_registerInterface", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3039, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3038, + "name": "interfaceId", + "nodeType": "VariableDeclaration", + "scope": 3054, + "src": "1018:18:28", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "typeName": { + "id": 3037, + "name": "bytes4", + "nodeType": "ElementaryTypeName", + "src": "1018:6:28", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1017:20:28" + }, + "returnParameters": { + "id": 3040, + "nodeType": "ParameterList", + "parameters": [], + "src": "1047:0:28" + }, + "scope": 3055, + "src": "990:158:28", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + } + ], + "scope": 3056, + "src": "156:994:28" + } + ], + "src": "0:1151:28" + }, + "legacyAST": { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/introspection/ERC165.sol", + "exportedSymbols": { + "ERC165": [ + 3055 + ] + }, + "id": 3056, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 3006, + "literals": [ + "solidity", + "^", + "0.5", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "0:23:28" + }, + { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/introspection/IERC165.sol", + "file": "./IERC165.sol", + "id": 3007, + "nodeType": "ImportDirective", + "scope": 3056, + "sourceUnit": 3203, + "src": "25:23:28", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 3008, + "name": "IERC165", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 3202, + "src": "175:7:28", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC165_$3202", + "typeString": "contract IERC165" + } + }, + "id": 3009, + "nodeType": "InheritanceSpecifier", + "src": "175:7:28" + } + ], + "contractDependencies": [ + 3202 + ], + "contractKind": "contract", + "documentation": "@title ERC165\n@author Matt Condon (@shrugs)\n@dev Implements ERC165 using a lookup table.", + "fullyImplemented": true, + "id": 3055, + "linearizedBaseContracts": [ + 3055, + 3202 + ], + "name": "ERC165", + "nodeType": "ContractDefinition", + "nodes": [ + { + "constant": true, + "id": 3012, + "name": "_INTERFACE_ID_ERC165", + "nodeType": "VariableDeclaration", + "scope": 3055, + "src": "189:57:28", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "typeName": { + "id": 3010, + "name": "bytes4", + "nodeType": "ElementaryTypeName", + "src": "189:6:28", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "value": { + "argumentTypes": null, + "hexValue": "30783031666663396137", + "id": 3011, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "236:10:28", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_33540519_by_1", + "typeString": "int_const 33540519" + }, + "value": "0x01ffc9a7" + }, + "visibility": "private" + }, + { + "constant": false, + "id": 3016, + "name": "_supportedInterfaces", + "nodeType": "VariableDeclaration", + "scope": 3055, + "src": "436:52:28", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes4_$_t_bool_$", + "typeString": "mapping(bytes4 => bool)" + }, + "typeName": { + "id": 3015, + "keyType": { + "id": 3013, + "name": "bytes4", + "nodeType": "ElementaryTypeName", + "src": "444:6:28", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "nodeType": "Mapping", + "src": "436:23:28", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes4_$_t_bool_$", + "typeString": "mapping(bytes4 => bool)" + }, + "valueType": { + "id": 3014, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "454:4:28", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + }, + "value": null, + "visibility": "private" + }, + { + "body": { + "id": 3023, + "nodeType": "Block", + "src": "630:57:28", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 3020, + "name": "_INTERFACE_ID_ERC165", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3012, + "src": "659:20:28", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + ], + "id": 3019, + "name": "_registerInterface", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3054, + "src": "640:18:28", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes4_$returns$__$", + "typeString": "function (bytes4)" + } + }, + "id": 3021, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "640:40:28", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3022, + "nodeType": "ExpressionStatement", + "src": "640:40:28" + } + ] + }, + "documentation": "@dev A contract implementing SupportsInterfaceWithLookup\nimplement ERC165 itself", + "id": 3024, + "implemented": true, + "kind": "constructor", + "modifiers": [], + "name": "", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3017, + "nodeType": "ParameterList", + "parameters": [], + "src": "618:2:28" + }, + "returnParameters": { + "id": 3018, + "nodeType": "ParameterList", + "parameters": [], + "src": "630:0:28" + }, + "scope": 3055, + "src": "606:81:28", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 3035, + "nodeType": "Block", + "src": "854:57:28", + "statements": [ + { + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 3031, + "name": "_supportedInterfaces", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3016, + "src": "871:20:28", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes4_$_t_bool_$", + "typeString": "mapping(bytes4 => bool)" + } + }, + "id": 3033, + "indexExpression": { + "argumentTypes": null, + "id": 3032, + "name": "interfaceId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3026, + "src": "892:11:28", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "871:33:28", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 3030, + "id": 3034, + "nodeType": "Return", + "src": "864:40:28" + } + ] + }, + "documentation": "@dev implement supportsInterface(bytes4) using a lookup table", + "id": 3036, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "supportsInterface", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3027, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3026, + "name": "interfaceId", + "nodeType": "VariableDeclaration", + "scope": 3036, + "src": "805:18:28", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "typeName": { + "id": 3025, + "name": "bytes4", + "nodeType": "ElementaryTypeName", + "src": "805:6:28", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "804:20:28" + }, + "returnParameters": { + "id": 3030, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3029, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 3036, + "src": "848:4:28", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 3028, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "848:4:28", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "847:6:28" + }, + "scope": 3055, + "src": "778:133:28", + "stateMutability": "view", + "superFunction": 3201, + "visibility": "external" + }, + { + "body": { + "id": 3053, + "nodeType": "Block", + "src": "1047:101:28", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "id": 3044, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 3042, + "name": "interfaceId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3038, + "src": "1065:11:28", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30786666666666666666", + "id": 3043, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1080:10:28", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_4294967295_by_1", + "typeString": "int_const 4294967295" + }, + "value": "0xffffffff" + }, + "src": "1065:25:28", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 3041, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6848, + 6849 + ], + "referencedDeclaration": 6848, + "src": "1057:7:28", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 3045, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1057:34:28", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3046, + "nodeType": "ExpressionStatement", + "src": "1057:34:28" + }, + { + "expression": { + "argumentTypes": null, + "id": 3051, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 3047, + "name": "_supportedInterfaces", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3016, + "src": "1101:20:28", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes4_$_t_bool_$", + "typeString": "mapping(bytes4 => bool)" + } + }, + "id": 3049, + "indexExpression": { + "argumentTypes": null, + "id": 3048, + "name": "interfaceId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3038, + "src": "1122:11:28", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "1101:33:28", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 3050, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1137:4:28", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "src": "1101:40:28", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 3052, + "nodeType": "ExpressionStatement", + "src": "1101:40:28" + } + ] + }, + "documentation": "@dev internal method for registering an interface", + "id": 3054, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_registerInterface", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3039, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3038, + "name": "interfaceId", + "nodeType": "VariableDeclaration", + "scope": 3054, + "src": "1018:18:28", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "typeName": { + "id": 3037, + "name": "bytes4", + "nodeType": "ElementaryTypeName", + "src": "1018:6:28", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1017:20:28" + }, + "returnParameters": { + "id": 3040, + "nodeType": "ParameterList", + "parameters": [], + "src": "1047:0:28" + }, + "scope": 3055, + "src": "990:158:28", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + } + ], + "scope": 3056, + "src": "156:994:28" + } + ], + "src": "0:1151:28" + }, + "compiler": { + "name": "solc", + "version": "0.5.0+commit.1d4f565a.Emscripten.clang" + }, + "networks": {}, + "schemaVersion": "3.0.0", + "updatedAt": "2019-01-04T21:44:02.884Z", + "devdoc": { + "author": "Matt Condon (@shrugs)", + "details": "Implements ERC165 using a lookup table.", + "methods": { + "constructor": { + "details": "A contract implementing SupportsInterfaceWithLookup implement ERC165 itself" + }, + "supportsInterface(bytes4)": { + "details": "implement supportsInterface(bytes4) using a lookup table" + } + }, + "title": "ERC165" + }, + "userdoc": { + "methods": {} + } +} \ No newline at end of file diff --git a/node_modules/openzeppelin-solidity/build/contracts/ERC165Checker.json b/node_modules/openzeppelin-solidity/build/contracts/ERC165Checker.json new file mode 100644 index 0000000..75726dd --- /dev/null +++ b/node_modules/openzeppelin-solidity/build/contracts/ERC165Checker.json @@ -0,0 +1,3667 @@ +{ + "contractName": "ERC165Checker", + "abi": [], + "bytecode": "0x604c602c600b82828239805160001a60731460008114601c57601e565bfe5b5030600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea165627a7a72305820f90f13e2844628d4ef5ede459797ae78b22bc8e4a288726d157e11201249381d0029", + "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea165627a7a72305820f90f13e2844628d4ef5ede459797ae78b22bc8e4a288726d157e11201249381d0029", + "sourceMap": "192:5324:29:-;;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", + "deployedSourceMap": "192:5324:29:-;;;;;;;;", + "source": "pragma solidity ^0.5.0;\n\n/**\n * @title ERC165Checker\n * @dev Use `using ERC165Checker for address`; to include this library\n * https://github.com/ethereum/EIPs/blob/master/EIPS/eip-165.md\n */\nlibrary ERC165Checker {\n // As per the EIP-165 spec, no interface should ever match 0xffffffff\n bytes4 private constant _INTERFACE_ID_INVALID = 0xffffffff;\n\n bytes4 private constant _INTERFACE_ID_ERC165 = 0x01ffc9a7;\n /**\n * 0x01ffc9a7 ===\n * bytes4(keccak256('supportsInterface(bytes4)'))\n */\n\n /**\n * @notice Query if a contract supports ERC165\n * @param account The address of the contract to query for support of ERC165\n * @return true if the contract at account implements ERC165\n */\n function _supportsERC165(address account) internal view returns (bool) {\n // Any contract that implements ERC165 must explicitly indicate support of\n // InterfaceId_ERC165 and explicitly indicate non-support of InterfaceId_Invalid\n return _supportsERC165Interface(account, _INTERFACE_ID_ERC165) &&\n !_supportsERC165Interface(account, _INTERFACE_ID_INVALID);\n }\n\n /**\n * @notice Query if a contract implements an interface, also checks support of ERC165\n * @param account The address of the contract to query for support of an interface\n * @param interfaceId The interface identifier, as specified in ERC-165\n * @return true if the contract at account indicates support of the interface with\n * identifier interfaceId, false otherwise\n * @dev Interface identification is specified in ERC-165.\n */\n function _supportsInterface(address account, bytes4 interfaceId) internal view returns (bool) {\n // query support of both ERC165 as per the spec and support of _interfaceId\n return _supportsERC165(account) &&\n _supportsERC165Interface(account, interfaceId);\n }\n\n /**\n * @notice Query if a contract implements interfaces, also checks support of ERC165\n * @param account The address of the contract to query for support of an interface\n * @param interfaceIds A list of interface identifiers, as specified in ERC-165\n * @return true if the contract at account indicates support all interfaces in the\n * interfaceIds list, false otherwise\n * @dev Interface identification is specified in ERC-165.\n */\n function _supportsAllInterfaces(address account, bytes4[] memory interfaceIds) internal view returns (bool) {\n // query support of ERC165 itself\n if (!_supportsERC165(account)) {\n return false;\n }\n\n // query support of each interface in _interfaceIds\n for (uint256 i = 0; i < interfaceIds.length; i++) {\n if (!_supportsERC165Interface(account, interfaceIds[i])) {\n return false;\n }\n }\n\n // all interfaces supported\n return true;\n }\n\n /**\n * @notice Query if a contract implements an interface, does not check ERC165 support\n * @param account The address of the contract to query for support of an interface\n * @param interfaceId The interface identifier, as specified in ERC-165\n * @return true if the contract at account indicates support of the interface with\n * identifier interfaceId, false otherwise\n * @dev Assumes that account contains a contract that supports ERC165, otherwise\n * the behavior of this method is undefined. This precondition can be checked\n * with the `supportsERC165` method in this library.\n * Interface identification is specified in ERC-165.\n */\n function _supportsERC165Interface(address account, bytes4 interfaceId) private view returns (bool) {\n // success determines whether the staticcall succeeded and result determines\n // whether the contract at account indicates support of _interfaceId\n (bool success, bool result) = _callERC165SupportsInterface(account, interfaceId);\n\n return (success && result);\n }\n\n /**\n * @notice Calls the function with selector 0x01ffc9a7 (ERC165) and suppresses throw\n * @param account The address of the contract to query for support of an interface\n * @param interfaceId The interface identifier, as specified in ERC-165\n * @return success true if the STATICCALL succeeded, false otherwise\n * @return result true if the STATICCALL succeeded and the contract at account\n * indicates support of the interface with identifier interfaceId, false otherwise\n */\n function _callERC165SupportsInterface(address account, bytes4 interfaceId)\n private\n view\n returns (bool success, bool result)\n {\n bytes memory encodedParams = abi.encodeWithSelector(_INTERFACE_ID_ERC165, interfaceId);\n\n // solhint-disable-next-line no-inline-assembly\n assembly {\n let encodedParams_data := add(0x20, encodedParams)\n let encodedParams_size := mload(encodedParams)\n\n let output := mload(0x40) // Find empty storage location using \"free memory pointer\"\n mstore(output, 0x0)\n\n success := staticcall(\n 30000, // 30k gas\n account, // To addr\n encodedParams_data,\n encodedParams_size,\n output,\n 0x20 // Outputs are 32 bytes long\n )\n\n result := mload(output) // Load the result\n }\n }\n}\n", + "sourcePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/introspection/ERC165Checker.sol", + "ast": { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/introspection/ERC165Checker.sol", + "exportedSymbols": { + "ERC165Checker": [ + 3192 + ] + }, + "id": 3193, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 3057, + "literals": [ + "solidity", + "^", + "0.5", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "0:23:29" + }, + { + "baseContracts": [], + "contractDependencies": [], + "contractKind": "library", + "documentation": "@title ERC165Checker\n@dev Use `using ERC165Checker for address`; to include this library\nhttps://github.com/ethereum/EIPs/blob/master/EIPS/eip-165.md", + "fullyImplemented": true, + "id": 3192, + "linearizedBaseContracts": [ + 3192 + ], + "name": "ERC165Checker", + "nodeType": "ContractDefinition", + "nodes": [ + { + "constant": true, + "id": 3060, + "name": "_INTERFACE_ID_INVALID", + "nodeType": "VariableDeclaration", + "scope": 3192, + "src": "294:58:29", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "typeName": { + "id": 3058, + "name": "bytes4", + "nodeType": "ElementaryTypeName", + "src": "294:6:29", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "value": { + "argumentTypes": null, + "hexValue": "30786666666666666666", + "id": 3059, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "342:10:29", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_4294967295_by_1", + "typeString": "int_const 4294967295" + }, + "value": "0xffffffff" + }, + "visibility": "private" + }, + { + "constant": true, + "id": 3063, + "name": "_INTERFACE_ID_ERC165", + "nodeType": "VariableDeclaration", + "scope": 3192, + "src": "359:57:29", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "typeName": { + "id": 3061, + "name": "bytes4", + "nodeType": "ElementaryTypeName", + "src": "359:6:29", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "value": { + "argumentTypes": null, + "hexValue": "30783031666663396137", + "id": 3062, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "406:10:29", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_33540519_by_1", + "typeString": "int_const 33540519" + }, + "value": "0x01ffc9a7" + }, + "visibility": "private" + }, + { + "body": { + "id": 3081, + "nodeType": "Block", + "src": "803:324:29", + "statements": [ + { + "expression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 3079, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 3071, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3065, + "src": "1017:7:29", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 3072, + "name": "_INTERFACE_ID_ERC165", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3063, + "src": "1026:20:29", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + ], + "id": 3070, + "name": "_supportsERC165Interface", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3170, + "src": "992:24:29", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$_t_bytes4_$returns$_t_bool_$", + "typeString": "function (address,bytes4) view returns (bool)" + } + }, + "id": 3073, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "992:55:29", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "argumentTypes": null, + "id": 3078, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "1063:57:29", + "subExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 3075, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3065, + "src": "1089:7:29", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 3076, + "name": "_INTERFACE_ID_INVALID", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3060, + "src": "1098:21:29", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + ], + "id": 3074, + "name": "_supportsERC165Interface", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3170, + "src": "1064:24:29", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$_t_bytes4_$returns$_t_bool_$", + "typeString": "function (address,bytes4) view returns (bool)" + } + }, + "id": 3077, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1064:56:29", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "992:128:29", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 3069, + "id": 3080, + "nodeType": "Return", + "src": "985:135:29" + } + ] + }, + "documentation": "@notice Query if a contract supports ERC165\n@param account The address of the contract to query for support of ERC165\n@return true if the contract at account implements ERC165", + "id": 3082, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_supportsERC165", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3066, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3065, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 3082, + "src": "757:15:29", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3064, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "757:7:29", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "756:17:29" + }, + "returnParameters": { + "id": 3069, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3068, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 3082, + "src": "797:4:29", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 3067, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "797:4:29", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "796:6:29" + }, + "scope": 3192, + "src": "732:395:29", + "stateMutability": "view", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 3100, + "nodeType": "Block", + "src": "1692:194:29", + "statements": [ + { + "expression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 3098, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 3092, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3084, + "src": "1809:7:29", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 3091, + "name": "_supportsERC165", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3082, + "src": "1793:15:29", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$", + "typeString": "function (address) view returns (bool)" + } + }, + "id": 3093, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1793:24:29", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 3095, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3084, + "src": "1858:7:29", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 3096, + "name": "interfaceId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3086, + "src": "1867:11:29", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + ], + "id": 3094, + "name": "_supportsERC165Interface", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3170, + "src": "1833:24:29", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$_t_bytes4_$returns$_t_bool_$", + "typeString": "function (address,bytes4) view returns (bool)" + } + }, + "id": 3097, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1833:46:29", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "1793:86:29", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 3090, + "id": 3099, + "nodeType": "Return", + "src": "1786:93:29" + } + ] + }, + "documentation": "@notice Query if a contract implements an interface, also checks support of ERC165\n@param account The address of the contract to query for support of an interface\n@param interfaceId The interface identifier, as specified in ERC-165\n@return true if the contract at account indicates support of the interface with\nidentifier interfaceId, false otherwise\n@dev Interface identification is specified in ERC-165.", + "id": 3101, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_supportsInterface", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3087, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3084, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 3101, + "src": "1626:15:29", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3083, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1626:7:29", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 3086, + "name": "interfaceId", + "nodeType": "VariableDeclaration", + "scope": 3101, + "src": "1643:18:29", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "typeName": { + "id": 3085, + "name": "bytes4", + "nodeType": "ElementaryTypeName", + "src": "1643:6:29", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1625:37:29" + }, + "returnParameters": { + "id": 3090, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3089, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 3101, + "src": "1686:4:29", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 3088, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1686:4:29", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1685:6:29" + }, + "scope": 3192, + "src": "1598:288:29", + "stateMutability": "view", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 3145, + "nodeType": "Block", + "src": "2466:430:29", + "statements": [ + { + "condition": { + "argumentTypes": null, + "id": 3114, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "2522:25:29", + "subExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 3112, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3103, + "src": "2539:7:29", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 3111, + "name": "_supportsERC165", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3082, + "src": "2523:15:29", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$", + "typeString": "function (address) view returns (bool)" + } + }, + "id": 3113, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2523:24:29", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 3118, + "nodeType": "IfStatement", + "src": "2518:68:29", + "trueBody": { + "id": 3117, + "nodeType": "Block", + "src": "2549:37:29", + "statements": [ + { + "expression": { + "argumentTypes": null, + "hexValue": "66616c7365", + "id": 3115, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2570:5:29", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "functionReturnParameters": 3110, + "id": 3116, + "nodeType": "Return", + "src": "2563:12:29" + } + ] + } + }, + { + "body": { + "id": 3141, + "nodeType": "Block", + "src": "2706:126:29", + "statements": [ + { + "condition": { + "argumentTypes": null, + "id": 3136, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "2724:51:29", + "subExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 3131, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3103, + "src": "2750:7:29", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 3132, + "name": "interfaceIds", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3106, + "src": "2759:12:29", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes4_$dyn_memory_ptr", + "typeString": "bytes4[] memory" + } + }, + "id": 3134, + "indexExpression": { + "argumentTypes": null, + "id": 3133, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3120, + "src": "2772:1:29", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2759:15:29", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + ], + "id": 3130, + "name": "_supportsERC165Interface", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3170, + "src": "2725:24:29", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$_t_bytes4_$returns$_t_bool_$", + "typeString": "function (address,bytes4) view returns (bool)" + } + }, + "id": 3135, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2725:50:29", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 3140, + "nodeType": "IfStatement", + "src": "2720:102:29", + "trueBody": { + "id": 3139, + "nodeType": "Block", + "src": "2777:45:29", + "statements": [ + { + "expression": { + "argumentTypes": null, + "hexValue": "66616c7365", + "id": 3137, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2802:5:29", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "functionReturnParameters": 3110, + "id": 3138, + "nodeType": "Return", + "src": "2795:12:29" + } + ] + } + } + ] + }, + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3126, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 3123, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3120, + "src": "2676:1:29", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 3124, + "name": "interfaceIds", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3106, + "src": "2680:12:29", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes4_$dyn_memory_ptr", + "typeString": "bytes4[] memory" + } + }, + "id": 3125, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2680:19:29", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2676:23:29", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 3142, + "initializationExpression": { + "assignments": [ + 3120 + ], + "declarations": [ + { + "constant": false, + "id": 3120, + "name": "i", + "nodeType": "VariableDeclaration", + "scope": 3142, + "src": "2661:9:29", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3119, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2661:7:29", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 3122, + "initialValue": { + "argumentTypes": null, + "hexValue": "30", + "id": 3121, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2673:1:29", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "2661:13:29" + }, + "loopExpression": { + "expression": { + "argumentTypes": null, + "id": 3128, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "2701:3:29", + "subExpression": { + "argumentTypes": null, + "id": 3127, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3120, + "src": "2701:1:29", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 3129, + "nodeType": "ExpressionStatement", + "src": "2701:3:29" + }, + "nodeType": "ForStatement", + "src": "2656:176:29" + }, + { + "expression": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 3143, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2885:4:29", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 3110, + "id": 3144, + "nodeType": "Return", + "src": "2878:11:29" + } + ] + }, + "documentation": "@notice Query if a contract implements interfaces, also checks support of ERC165\n@param account The address of the contract to query for support of an interface\n@param interfaceIds A list of interface identifiers, as specified in ERC-165\n@return true if the contract at account indicates support all interfaces in the\ninterfaceIds list, false otherwise\n@dev Interface identification is specified in ERC-165.", + "id": 3146, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_supportsAllInterfaces", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3107, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3103, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 3146, + "src": "2390:15:29", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3102, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2390:7:29", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 3106, + "name": "interfaceIds", + "nodeType": "VariableDeclaration", + "scope": 3146, + "src": "2407:28:29", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes4_$dyn_memory_ptr", + "typeString": "bytes4[]" + }, + "typeName": { + "baseType": { + "id": 3104, + "name": "bytes4", + "nodeType": "ElementaryTypeName", + "src": "2407:6:29", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "id": 3105, + "length": null, + "nodeType": "ArrayTypeName", + "src": "2407:8:29", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes4_$dyn_storage_ptr", + "typeString": "bytes4[]" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2389:47:29" + }, + "returnParameters": { + "id": 3110, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3109, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 3146, + "src": "2460:4:29", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 3108, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "2460:4:29", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2459:6:29" + }, + "scope": 3192, + "src": "2358:538:29", + "stateMutability": "view", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 3169, + "nodeType": "Block", + "src": "3685:296:29", + "statements": [ + { + "assignments": [ + 3156, + 3158 + ], + "declarations": [ + { + "constant": false, + "id": 3156, + "name": "success", + "nodeType": "VariableDeclaration", + "scope": 3169, + "src": "3858:12:29", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 3155, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "3858:4:29", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 3158, + "name": "result", + "nodeType": "VariableDeclaration", + "scope": 3169, + "src": "3872:11:29", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 3157, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "3872:4:29", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 3163, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 3160, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3148, + "src": "3916:7:29", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 3161, + "name": "interfaceId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3150, + "src": "3925:11:29", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + ], + "id": 3159, + "name": "_callERC165SupportsInterface", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3191, + "src": "3887:28:29", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$_t_bytes4_$returns$_t_bool_$_t_bool_$", + "typeString": "function (address,bytes4) view returns (bool,bool)" + } + }, + "id": 3162, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3887:50:29", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_bool_$_t_bool_$", + "typeString": "tuple(bool,bool)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "3857:80:29" + }, + { + "expression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 3166, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 3164, + "name": "success", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3156, + "src": "3956:7:29", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "argumentTypes": null, + "id": 3165, + "name": "result", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3158, + "src": "3967:6:29", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "3956:17:29", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "id": 3167, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "3955:19:29", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 3154, + "id": 3168, + "nodeType": "Return", + "src": "3948:26:29" + } + ] + }, + "documentation": "@notice Query if a contract implements an interface, does not check ERC165 support\n@param account The address of the contract to query for support of an interface\n@param interfaceId The interface identifier, as specified in ERC-165\n@return true if the contract at account indicates support of the interface with\nidentifier interfaceId, false otherwise\n@dev Assumes that account contains a contract that supports ERC165, otherwise\nthe behavior of this method is undefined. This precondition can be checked\nwith the `supportsERC165` method in this library.\nInterface identification is specified in ERC-165.", + "id": 3170, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_supportsERC165Interface", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3151, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3148, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 3170, + "src": "3620:15:29", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3147, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3620:7:29", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 3150, + "name": "interfaceId", + "nodeType": "VariableDeclaration", + "scope": 3170, + "src": "3637:18:29", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "typeName": { + "id": 3149, + "name": "bytes4", + "nodeType": "ElementaryTypeName", + "src": "3637:6:29", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3619:37:29" + }, + "returnParameters": { + "id": 3154, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3153, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 3170, + "src": "3679:4:29", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 3152, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "3679:4:29", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3678:6:29" + }, + "scope": 3192, + "src": "3586:395:29", + "stateMutability": "view", + "superFunction": null, + "visibility": "private" + }, + { + "body": { + "id": 3190, + "nodeType": "Block", + "src": "4650:864:29", + "statements": [ + { + "assignments": [ + 3182 + ], + "declarations": [ + { + "constant": false, + "id": 3182, + "name": "encodedParams", + "nodeType": "VariableDeclaration", + "scope": 3190, + "src": "4660:26:29", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 3181, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "4660:5:29", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 3188, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 3185, + "name": "_INTERFACE_ID_ERC165", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3063, + "src": "4712:20:29", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + { + "argumentTypes": null, + "id": 3186, + "name": "interfaceId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3174, + "src": "4734:11:29", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + ], + "expression": { + "argumentTypes": null, + "id": 3183, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6832, + "src": "4689:3:29", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 3184, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "encodeWithSelector", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "4689:22:29", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$", + "typeString": "function (bytes4) pure returns (bytes memory)" + } + }, + "id": 3187, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4689:57:29", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "4660:86:29" + }, + { + "externalReferences": [ + { + "encodedParams": { + "declaration": 3182, + "isOffset": false, + "isSlot": false, + "src": "4872:13:29", + "valueSize": 1 + } + }, + { + "encodedParams": { + "declaration": 3182, + "isOffset": false, + "isSlot": false, + "src": "4931:13:29", + "valueSize": 1 + } + }, + { + "success": { + "declaration": 3177, + "isOffset": false, + "isSlot": false, + "src": "5092:7:29", + "valueSize": 1 + } + }, + { + "result": { + "declaration": 3179, + "isOffset": false, + "isSlot": false, + "src": "5453:6:29", + "valueSize": 1 + } + }, + { + "account": { + "declaration": 3172, + "isOffset": false, + "isSlot": false, + "src": "5197:7:29", + "valueSize": 1 + } + } + ], + "id": 3189, + "nodeType": "InlineAssembly", + "operations": "{\n let encodedParams_data := add(0x20, encodedParams)\n let encodedParams_size := mload(encodedParams)\n let output := mload(0x40)\n mstore(output, 0x0)\n success := staticcall(30000, account, encodedParams_data, encodedParams_size, output, 0x20)\n result := mload(output)\n}", + "src": "4813:701:29" + } + ] + }, + "documentation": "@notice Calls the function with selector 0x01ffc9a7 (ERC165) and suppresses throw\n@param account The address of the contract to query for support of an interface\n@param interfaceId The interface identifier, as specified in ERC-165\n@return success true if the STATICCALL succeeded, false otherwise\n@return result true if the STATICCALL succeeded and the contract at account\nindicates support of the interface with identifier interfaceId, false otherwise", + "id": 3191, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_callERC165SupportsInterface", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3175, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3172, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 3191, + "src": "4536:15:29", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3171, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4536:7:29", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 3174, + "name": "interfaceId", + "nodeType": "VariableDeclaration", + "scope": 3191, + "src": "4553:18:29", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "typeName": { + "id": 3173, + "name": "bytes4", + "nodeType": "ElementaryTypeName", + "src": "4553:6:29", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4535:37:29" + }, + "returnParameters": { + "id": 3180, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3177, + "name": "success", + "nodeType": "VariableDeclaration", + "scope": 3191, + "src": "4619:12:29", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 3176, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "4619:4:29", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 3179, + "name": "result", + "nodeType": "VariableDeclaration", + "scope": 3191, + "src": "4633:11:29", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 3178, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "4633:4:29", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4618:27:29" + }, + "scope": 3192, + "src": "4498:1016:29", + "stateMutability": "view", + "superFunction": null, + "visibility": "private" + } + ], + "scope": 3193, + "src": "192:5324:29" + } + ], + "src": "0:5517:29" + }, + "legacyAST": { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/introspection/ERC165Checker.sol", + "exportedSymbols": { + "ERC165Checker": [ + 3192 + ] + }, + "id": 3193, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 3057, + "literals": [ + "solidity", + "^", + "0.5", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "0:23:29" + }, + { + "baseContracts": [], + "contractDependencies": [], + "contractKind": "library", + "documentation": "@title ERC165Checker\n@dev Use `using ERC165Checker for address`; to include this library\nhttps://github.com/ethereum/EIPs/blob/master/EIPS/eip-165.md", + "fullyImplemented": true, + "id": 3192, + "linearizedBaseContracts": [ + 3192 + ], + "name": "ERC165Checker", + "nodeType": "ContractDefinition", + "nodes": [ + { + "constant": true, + "id": 3060, + "name": "_INTERFACE_ID_INVALID", + "nodeType": "VariableDeclaration", + "scope": 3192, + "src": "294:58:29", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "typeName": { + "id": 3058, + "name": "bytes4", + "nodeType": "ElementaryTypeName", + "src": "294:6:29", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "value": { + "argumentTypes": null, + "hexValue": "30786666666666666666", + "id": 3059, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "342:10:29", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_4294967295_by_1", + "typeString": "int_const 4294967295" + }, + "value": "0xffffffff" + }, + "visibility": "private" + }, + { + "constant": true, + "id": 3063, + "name": "_INTERFACE_ID_ERC165", + "nodeType": "VariableDeclaration", + "scope": 3192, + "src": "359:57:29", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "typeName": { + "id": 3061, + "name": "bytes4", + "nodeType": "ElementaryTypeName", + "src": "359:6:29", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "value": { + "argumentTypes": null, + "hexValue": "30783031666663396137", + "id": 3062, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "406:10:29", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_33540519_by_1", + "typeString": "int_const 33540519" + }, + "value": "0x01ffc9a7" + }, + "visibility": "private" + }, + { + "body": { + "id": 3081, + "nodeType": "Block", + "src": "803:324:29", + "statements": [ + { + "expression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 3079, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 3071, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3065, + "src": "1017:7:29", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 3072, + "name": "_INTERFACE_ID_ERC165", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3063, + "src": "1026:20:29", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + ], + "id": 3070, + "name": "_supportsERC165Interface", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3170, + "src": "992:24:29", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$_t_bytes4_$returns$_t_bool_$", + "typeString": "function (address,bytes4) view returns (bool)" + } + }, + "id": 3073, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "992:55:29", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "argumentTypes": null, + "id": 3078, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "1063:57:29", + "subExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 3075, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3065, + "src": "1089:7:29", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 3076, + "name": "_INTERFACE_ID_INVALID", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3060, + "src": "1098:21:29", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + ], + "id": 3074, + "name": "_supportsERC165Interface", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3170, + "src": "1064:24:29", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$_t_bytes4_$returns$_t_bool_$", + "typeString": "function (address,bytes4) view returns (bool)" + } + }, + "id": 3077, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1064:56:29", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "992:128:29", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 3069, + "id": 3080, + "nodeType": "Return", + "src": "985:135:29" + } + ] + }, + "documentation": "@notice Query if a contract supports ERC165\n@param account The address of the contract to query for support of ERC165\n@return true if the contract at account implements ERC165", + "id": 3082, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_supportsERC165", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3066, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3065, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 3082, + "src": "757:15:29", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3064, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "757:7:29", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "756:17:29" + }, + "returnParameters": { + "id": 3069, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3068, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 3082, + "src": "797:4:29", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 3067, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "797:4:29", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "796:6:29" + }, + "scope": 3192, + "src": "732:395:29", + "stateMutability": "view", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 3100, + "nodeType": "Block", + "src": "1692:194:29", + "statements": [ + { + "expression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 3098, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 3092, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3084, + "src": "1809:7:29", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 3091, + "name": "_supportsERC165", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3082, + "src": "1793:15:29", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$", + "typeString": "function (address) view returns (bool)" + } + }, + "id": 3093, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1793:24:29", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 3095, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3084, + "src": "1858:7:29", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 3096, + "name": "interfaceId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3086, + "src": "1867:11:29", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + ], + "id": 3094, + "name": "_supportsERC165Interface", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3170, + "src": "1833:24:29", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$_t_bytes4_$returns$_t_bool_$", + "typeString": "function (address,bytes4) view returns (bool)" + } + }, + "id": 3097, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1833:46:29", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "1793:86:29", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 3090, + "id": 3099, + "nodeType": "Return", + "src": "1786:93:29" + } + ] + }, + "documentation": "@notice Query if a contract implements an interface, also checks support of ERC165\n@param account The address of the contract to query for support of an interface\n@param interfaceId The interface identifier, as specified in ERC-165\n@return true if the contract at account indicates support of the interface with\nidentifier interfaceId, false otherwise\n@dev Interface identification is specified in ERC-165.", + "id": 3101, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_supportsInterface", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3087, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3084, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 3101, + "src": "1626:15:29", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3083, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1626:7:29", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 3086, + "name": "interfaceId", + "nodeType": "VariableDeclaration", + "scope": 3101, + "src": "1643:18:29", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "typeName": { + "id": 3085, + "name": "bytes4", + "nodeType": "ElementaryTypeName", + "src": "1643:6:29", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1625:37:29" + }, + "returnParameters": { + "id": 3090, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3089, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 3101, + "src": "1686:4:29", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 3088, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1686:4:29", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1685:6:29" + }, + "scope": 3192, + "src": "1598:288:29", + "stateMutability": "view", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 3145, + "nodeType": "Block", + "src": "2466:430:29", + "statements": [ + { + "condition": { + "argumentTypes": null, + "id": 3114, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "2522:25:29", + "subExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 3112, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3103, + "src": "2539:7:29", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 3111, + "name": "_supportsERC165", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3082, + "src": "2523:15:29", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$", + "typeString": "function (address) view returns (bool)" + } + }, + "id": 3113, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2523:24:29", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 3118, + "nodeType": "IfStatement", + "src": "2518:68:29", + "trueBody": { + "id": 3117, + "nodeType": "Block", + "src": "2549:37:29", + "statements": [ + { + "expression": { + "argumentTypes": null, + "hexValue": "66616c7365", + "id": 3115, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2570:5:29", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "functionReturnParameters": 3110, + "id": 3116, + "nodeType": "Return", + "src": "2563:12:29" + } + ] + } + }, + { + "body": { + "id": 3141, + "nodeType": "Block", + "src": "2706:126:29", + "statements": [ + { + "condition": { + "argumentTypes": null, + "id": 3136, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "2724:51:29", + "subExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 3131, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3103, + "src": "2750:7:29", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 3132, + "name": "interfaceIds", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3106, + "src": "2759:12:29", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes4_$dyn_memory_ptr", + "typeString": "bytes4[] memory" + } + }, + "id": 3134, + "indexExpression": { + "argumentTypes": null, + "id": 3133, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3120, + "src": "2772:1:29", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2759:15:29", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + ], + "id": 3130, + "name": "_supportsERC165Interface", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3170, + "src": "2725:24:29", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$_t_bytes4_$returns$_t_bool_$", + "typeString": "function (address,bytes4) view returns (bool)" + } + }, + "id": 3135, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2725:50:29", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 3140, + "nodeType": "IfStatement", + "src": "2720:102:29", + "trueBody": { + "id": 3139, + "nodeType": "Block", + "src": "2777:45:29", + "statements": [ + { + "expression": { + "argumentTypes": null, + "hexValue": "66616c7365", + "id": 3137, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2802:5:29", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "functionReturnParameters": 3110, + "id": 3138, + "nodeType": "Return", + "src": "2795:12:29" + } + ] + } + } + ] + }, + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3126, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 3123, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3120, + "src": "2676:1:29", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 3124, + "name": "interfaceIds", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3106, + "src": "2680:12:29", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes4_$dyn_memory_ptr", + "typeString": "bytes4[] memory" + } + }, + "id": 3125, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2680:19:29", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2676:23:29", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 3142, + "initializationExpression": { + "assignments": [ + 3120 + ], + "declarations": [ + { + "constant": false, + "id": 3120, + "name": "i", + "nodeType": "VariableDeclaration", + "scope": 3142, + "src": "2661:9:29", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3119, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2661:7:29", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 3122, + "initialValue": { + "argumentTypes": null, + "hexValue": "30", + "id": 3121, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2673:1:29", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "2661:13:29" + }, + "loopExpression": { + "expression": { + "argumentTypes": null, + "id": 3128, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "2701:3:29", + "subExpression": { + "argumentTypes": null, + "id": 3127, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3120, + "src": "2701:1:29", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 3129, + "nodeType": "ExpressionStatement", + "src": "2701:3:29" + }, + "nodeType": "ForStatement", + "src": "2656:176:29" + }, + { + "expression": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 3143, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2885:4:29", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 3110, + "id": 3144, + "nodeType": "Return", + "src": "2878:11:29" + } + ] + }, + "documentation": "@notice Query if a contract implements interfaces, also checks support of ERC165\n@param account The address of the contract to query for support of an interface\n@param interfaceIds A list of interface identifiers, as specified in ERC-165\n@return true if the contract at account indicates support all interfaces in the\ninterfaceIds list, false otherwise\n@dev Interface identification is specified in ERC-165.", + "id": 3146, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_supportsAllInterfaces", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3107, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3103, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 3146, + "src": "2390:15:29", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3102, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2390:7:29", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 3106, + "name": "interfaceIds", + "nodeType": "VariableDeclaration", + "scope": 3146, + "src": "2407:28:29", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes4_$dyn_memory_ptr", + "typeString": "bytes4[]" + }, + "typeName": { + "baseType": { + "id": 3104, + "name": "bytes4", + "nodeType": "ElementaryTypeName", + "src": "2407:6:29", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "id": 3105, + "length": null, + "nodeType": "ArrayTypeName", + "src": "2407:8:29", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes4_$dyn_storage_ptr", + "typeString": "bytes4[]" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2389:47:29" + }, + "returnParameters": { + "id": 3110, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3109, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 3146, + "src": "2460:4:29", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 3108, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "2460:4:29", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2459:6:29" + }, + "scope": 3192, + "src": "2358:538:29", + "stateMutability": "view", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 3169, + "nodeType": "Block", + "src": "3685:296:29", + "statements": [ + { + "assignments": [ + 3156, + 3158 + ], + "declarations": [ + { + "constant": false, + "id": 3156, + "name": "success", + "nodeType": "VariableDeclaration", + "scope": 3169, + "src": "3858:12:29", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 3155, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "3858:4:29", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 3158, + "name": "result", + "nodeType": "VariableDeclaration", + "scope": 3169, + "src": "3872:11:29", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 3157, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "3872:4:29", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 3163, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 3160, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3148, + "src": "3916:7:29", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 3161, + "name": "interfaceId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3150, + "src": "3925:11:29", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + ], + "id": 3159, + "name": "_callERC165SupportsInterface", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3191, + "src": "3887:28:29", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$_t_bytes4_$returns$_t_bool_$_t_bool_$", + "typeString": "function (address,bytes4) view returns (bool,bool)" + } + }, + "id": 3162, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3887:50:29", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_bool_$_t_bool_$", + "typeString": "tuple(bool,bool)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "3857:80:29" + }, + { + "expression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 3166, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 3164, + "name": "success", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3156, + "src": "3956:7:29", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "argumentTypes": null, + "id": 3165, + "name": "result", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3158, + "src": "3967:6:29", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "3956:17:29", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "id": 3167, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "3955:19:29", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 3154, + "id": 3168, + "nodeType": "Return", + "src": "3948:26:29" + } + ] + }, + "documentation": "@notice Query if a contract implements an interface, does not check ERC165 support\n@param account The address of the contract to query for support of an interface\n@param interfaceId The interface identifier, as specified in ERC-165\n@return true if the contract at account indicates support of the interface with\nidentifier interfaceId, false otherwise\n@dev Assumes that account contains a contract that supports ERC165, otherwise\nthe behavior of this method is undefined. This precondition can be checked\nwith the `supportsERC165` method in this library.\nInterface identification is specified in ERC-165.", + "id": 3170, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_supportsERC165Interface", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3151, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3148, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 3170, + "src": "3620:15:29", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3147, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3620:7:29", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 3150, + "name": "interfaceId", + "nodeType": "VariableDeclaration", + "scope": 3170, + "src": "3637:18:29", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "typeName": { + "id": 3149, + "name": "bytes4", + "nodeType": "ElementaryTypeName", + "src": "3637:6:29", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3619:37:29" + }, + "returnParameters": { + "id": 3154, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3153, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 3170, + "src": "3679:4:29", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 3152, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "3679:4:29", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3678:6:29" + }, + "scope": 3192, + "src": "3586:395:29", + "stateMutability": "view", + "superFunction": null, + "visibility": "private" + }, + { + "body": { + "id": 3190, + "nodeType": "Block", + "src": "4650:864:29", + "statements": [ + { + "assignments": [ + 3182 + ], + "declarations": [ + { + "constant": false, + "id": 3182, + "name": "encodedParams", + "nodeType": "VariableDeclaration", + "scope": 3190, + "src": "4660:26:29", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 3181, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "4660:5:29", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 3188, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 3185, + "name": "_INTERFACE_ID_ERC165", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3063, + "src": "4712:20:29", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + { + "argumentTypes": null, + "id": 3186, + "name": "interfaceId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3174, + "src": "4734:11:29", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + ], + "expression": { + "argumentTypes": null, + "id": 3183, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6832, + "src": "4689:3:29", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 3184, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "encodeWithSelector", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "4689:22:29", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$", + "typeString": "function (bytes4) pure returns (bytes memory)" + } + }, + "id": 3187, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4689:57:29", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "4660:86:29" + }, + { + "externalReferences": [ + { + "encodedParams": { + "declaration": 3182, + "isOffset": false, + "isSlot": false, + "src": "4872:13:29", + "valueSize": 1 + } + }, + { + "encodedParams": { + "declaration": 3182, + "isOffset": false, + "isSlot": false, + "src": "4931:13:29", + "valueSize": 1 + } + }, + { + "success": { + "declaration": 3177, + "isOffset": false, + "isSlot": false, + "src": "5092:7:29", + "valueSize": 1 + } + }, + { + "result": { + "declaration": 3179, + "isOffset": false, + "isSlot": false, + "src": "5453:6:29", + "valueSize": 1 + } + }, + { + "account": { + "declaration": 3172, + "isOffset": false, + "isSlot": false, + "src": "5197:7:29", + "valueSize": 1 + } + } + ], + "id": 3189, + "nodeType": "InlineAssembly", + "operations": "{\n let encodedParams_data := add(0x20, encodedParams)\n let encodedParams_size := mload(encodedParams)\n let output := mload(0x40)\n mstore(output, 0x0)\n success := staticcall(30000, account, encodedParams_data, encodedParams_size, output, 0x20)\n result := mload(output)\n}", + "src": "4813:701:29" + } + ] + }, + "documentation": "@notice Calls the function with selector 0x01ffc9a7 (ERC165) and suppresses throw\n@param account The address of the contract to query for support of an interface\n@param interfaceId The interface identifier, as specified in ERC-165\n@return success true if the STATICCALL succeeded, false otherwise\n@return result true if the STATICCALL succeeded and the contract at account\nindicates support of the interface with identifier interfaceId, false otherwise", + "id": 3191, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_callERC165SupportsInterface", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3175, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3172, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 3191, + "src": "4536:15:29", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3171, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4536:7:29", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 3174, + "name": "interfaceId", + "nodeType": "VariableDeclaration", + "scope": 3191, + "src": "4553:18:29", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "typeName": { + "id": 3173, + "name": "bytes4", + "nodeType": "ElementaryTypeName", + "src": "4553:6:29", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4535:37:29" + }, + "returnParameters": { + "id": 3180, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3177, + "name": "success", + "nodeType": "VariableDeclaration", + "scope": 3191, + "src": "4619:12:29", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 3176, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "4619:4:29", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 3179, + "name": "result", + "nodeType": "VariableDeclaration", + "scope": 3191, + "src": "4633:11:29", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 3178, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "4633:4:29", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4618:27:29" + }, + "scope": 3192, + "src": "4498:1016:29", + "stateMutability": "view", + "superFunction": null, + "visibility": "private" + } + ], + "scope": 3193, + "src": "192:5324:29" + } + ], + "src": "0:5517:29" + }, + "compiler": { + "name": "solc", + "version": "0.5.0+commit.1d4f565a.Emscripten.clang" + }, + "networks": {}, + "schemaVersion": "3.0.0", + "updatedAt": "2019-01-04T21:44:02.884Z", + "devdoc": { + "details": "Use `using ERC165Checker for address`; to include this library https://github.com/ethereum/EIPs/blob/master/EIPS/eip-165.md", + "methods": {}, + "title": "ERC165Checker" + }, + "userdoc": { + "methods": {} + } +} \ No newline at end of file diff --git a/node_modules/openzeppelin-solidity/build/contracts/ERC20.json b/node_modules/openzeppelin-solidity/build/contracts/ERC20.json new file mode 100644 index 0000000..f4de181 --- /dev/null +++ b/node_modules/openzeppelin-solidity/build/contracts/ERC20.json @@ -0,0 +1,11934 @@ +{ + "contractName": "ERC20", + "abi": [ + { + "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" + }, + { + "constant": true, + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "owner", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "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" + }, + { + "constant": false, + "inputs": [ + { + "name": "to", + "type": "address" + }, + { + "name": "value", + "type": "uint256" + } + ], + "name": "transfer", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "spender", + "type": "address" + }, + { + "name": "value", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "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": false, + "inputs": [ + { + "name": "spender", + "type": "address" + }, + { + "name": "addedValue", + "type": "uint256" + } + ], + "name": "increaseAllowance", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "spender", + "type": "address" + }, + { + "name": "subtractedValue", + "type": "uint256" + } + ], + "name": "decreaseAllowance", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x608060405234801561001057600080fd5b50610ed5806100206000396000f3fe60806040526004361061008e576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063095ea7b31461009357806318160ddd1461010657806323b872dd1461013157806339509351146101c457806370a0823114610237578063a457c2d71461029c578063a9059cbb1461030f578063dd62ed3e14610382575b600080fd5b34801561009f57600080fd5b506100ec600480360360408110156100b657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610407565b604051808215151515815260200191505060405180910390f35b34801561011257600080fd5b5061011b610534565b6040518082815260200191505060405180910390f35b34801561013d57600080fd5b506101aa6004803603606081101561015457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061053e565b604051808215151515815260200191505060405180910390f35b3480156101d057600080fd5b5061021d600480360360408110156101e757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610746565b604051808215151515815260200191505060405180910390f35b34801561024357600080fd5b506102866004803603602081101561025a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061097d565b6040518082815260200191505060405180910390f35b3480156102a857600080fd5b506102f5600480360360408110156102bf57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506109c5565b604051808215151515815260200191505060405180910390f35b34801561031b57600080fd5b506103686004803603604081101561033257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610bfc565b604051808215151515815260200191505060405180910390f35b34801561038e57600080fd5b506103f1600480360360408110156103a557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610c13565b6040518082815260200191505060405180910390f35b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415151561044457600080fd5b81600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b6000600254905090565b60006105cf82600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610c9a90919063ffffffff16565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061065a848484610cbc565b3373ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a3600190509392505050565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415151561078357600080fd5b61081282600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610e8890919063ffffffff16565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a36001905092915050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614151515610a0257600080fd5b610a9182600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610c9a90919063ffffffff16565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a36001905092915050565b6000610c09338484610cbc565b6001905092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000828211151515610cab57600080fd5b600082840390508091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614151515610cf857600080fd5b610d49816000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610c9a90919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610ddc816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610e8890919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b6000808284019050838110151515610e9f57600080fd5b809150509291505056fea165627a7a72305820703a1917d2ebdb35b8919ca36aaeb7fcf8737dcfc0b45487079d142b017a049c0029", + "deployedBytecode": "0x60806040526004361061008e576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063095ea7b31461009357806318160ddd1461010657806323b872dd1461013157806339509351146101c457806370a0823114610237578063a457c2d71461029c578063a9059cbb1461030f578063dd62ed3e14610382575b600080fd5b34801561009f57600080fd5b506100ec600480360360408110156100b657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610407565b604051808215151515815260200191505060405180910390f35b34801561011257600080fd5b5061011b610534565b6040518082815260200191505060405180910390f35b34801561013d57600080fd5b506101aa6004803603606081101561015457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061053e565b604051808215151515815260200191505060405180910390f35b3480156101d057600080fd5b5061021d600480360360408110156101e757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610746565b604051808215151515815260200191505060405180910390f35b34801561024357600080fd5b506102866004803603602081101561025a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061097d565b6040518082815260200191505060405180910390f35b3480156102a857600080fd5b506102f5600480360360408110156102bf57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506109c5565b604051808215151515815260200191505060405180910390f35b34801561031b57600080fd5b506103686004803603604081101561033257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610bfc565b604051808215151515815260200191505060405180910390f35b34801561038e57600080fd5b506103f1600480360360408110156103a557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610c13565b6040518082815260200191505060405180910390f35b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415151561044457600080fd5b81600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b6000600254905090565b60006105cf82600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610c9a90919063ffffffff16565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061065a848484610cbc565b3373ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a3600190509392505050565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415151561078357600080fd5b61081282600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610e8890919063ffffffff16565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a36001905092915050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614151515610a0257600080fd5b610a9182600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610c9a90919063ffffffff16565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a36001905092915050565b6000610c09338484610cbc565b6001905092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000828211151515610cab57600080fd5b600082840390508091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614151515610cf857600080fd5b610d49816000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610c9a90919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610ddc816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610e8890919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b6000808284019050838110151515610e9f57600080fd5b809150509291505056fea165627a7a72305820703a1917d2ebdb35b8919ca36aaeb7fcf8737dcfc0b45487079d142b017a049c0029", + "sourceMap": "649:6947:41:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;649:6947:41;;;;;;;", + "deployedSourceMap": "649:6947:41:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2735:238;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2735:238:41;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2735:238:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;936:89;;8:9:-1;5:2;;;30:1;27;20:12;5:2;936:89:41;;;;;;;;;;;;;;;;;;;;;;;3436:294;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3436:294:41;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3436:294:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4233:317;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4233:317:41;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4233:317:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1234:104;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1234:104:41;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1234:104:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5058:327;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5058:327:41;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;5058:327:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1962:137;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1962:137:41;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1962:137:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1669:129;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1669:129:41;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1669:129:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2735:238;2800:4;2843:1;2824:21;;:7;:21;;;;2816:30;;;;;;;;2889:5;2857:8;:20;2866:10;2857:20;;;;;;;;;;;;;;;:29;2878:7;2857:29;;;;;;;;;;;;;;;:37;;;;2930:7;2909:36;;2918:10;2909:36;;;2939:5;2909:36;;;;;;;;;;;;;;;;;;2962:4;2955:11;;2735:238;;;;:::o;936:89::-;980:7;1006:12;;999:19;;936:89;:::o;3436:294::-;3515:4;3560:37;3591:5;3560:8;:14;3569:4;3560:14;;;;;;;;;;;;;;;:26;3575:10;3560:26;;;;;;;;;;;;;;;;:30;;:37;;;;:::i;:::-;3531:8;:14;3540:4;3531:14;;;;;;;;;;;;;;;:26;3546:10;3531:26;;;;;;;;;;;;;;;:66;;;;3607:26;3617:4;3623:2;3627:5;3607:9;:26::i;:::-;3663:10;3648:54;;3657:4;3648:54;;;3675:8;:14;3684:4;3675:14;;;;;;;;;;;;;;;:26;3690:10;3675:26;;;;;;;;;;;;;;;;3648:54;;;;;;;;;;;;;;;;;;3719:4;3712:11;;3436:294;;;;;:::o;4233:317::-;4313:4;4356:1;4337:21;;:7;:21;;;;4329:30;;;;;;;;4402:45;4436:10;4402:8;:20;4411:10;4402:20;;;;;;;;;;;;;;;:29;4423:7;4402:29;;;;;;;;;;;;;;;;:33;;:45;;;;:::i;:::-;4370:8;:20;4379:10;4370:20;;;;;;;;;;;;;;;:29;4391:7;4370:29;;;;;;;;;;;;;;;:77;;;;4483:7;4462:60;;4471:10;4462:60;;;4492:8;:20;4501:10;4492:20;;;;;;;;;;;;;;;:29;4513:7;4492:29;;;;;;;;;;;;;;;;4462:60;;;;;;;;;;;;;;;;;;4539:4;4532:11;;4233:317;;;;:::o;1234:104::-;1289:7;1315:9;:16;1325:5;1315:16;;;;;;;;;;;;;;;;1308:23;;1234:104;;;:::o;5058:327::-;5143:4;5186:1;5167:21;;:7;:21;;;;5159:30;;;;;;;;5232:50;5266:15;5232:8;:20;5241:10;5232:20;;;;;;;;;;;;;;;:29;5253:7;5232:29;;;;;;;;;;;;;;;;:33;;:50;;;;:::i;:::-;5200:8;:20;5209:10;5200:20;;;;;;;;;;;;;;;:29;5221:7;5200:29;;;;;;;;;;;;;;;:82;;;;5318:7;5297:60;;5306:10;5297:60;;;5327:8;:20;5336:10;5327:20;;;;;;;;;;;;;;;:29;5348:7;5327:29;;;;;;;;;;;;;;;;5297:60;;;;;;;;;;;;;;;;;;5374:4;5367:11;;5058:327;;;;:::o;1962:137::-;2023:4;2039:32;2049:10;2061:2;2065:5;2039:9;:32::i;:::-;2088:4;2081:11;;1962:137;;;;:::o;1669:129::-;1741:7;1767:8;:15;1776:5;1767:15;;;;;;;;;;;;;;;:24;1783:7;1767:24;;;;;;;;;;;;;;;;1760:31;;1669:129;;;;:::o;1205:145:33:-;1263:7;1295:1;1290;:6;;1282:15;;;;;;;;1307:9;1323:1;1319;:5;1307:17;;1342:1;1335:8;;;1205:145;;;;:::o;5599:256:41:-;5700:1;5686:16;;:2;:16;;;;5678:25;;;;;;;;5732:26;5752:5;5732:9;:15;5742:4;5732:15;;;;;;;;;;;;;;;;:19;;:26;;;;:::i;:::-;5714:9;:15;5724:4;5714:15;;;;;;;;;;;;;;;:44;;;;5784:24;5802:5;5784:9;:13;5794:2;5784:13;;;;;;;;;;;;;;;;:17;;:24;;;;:::i;:::-;5768:9;:13;5778:2;5768:13;;;;;;;;;;;;;;;:40;;;;5838:2;5823:25;;5832:4;5823:25;;;5842:5;5823:25;;;;;;;;;;;;;;;;;;5599:256;;;:::o;1431:145:33:-;1489:7;1508:9;1524:1;1520;:5;1508:17;;1548:1;1543;:6;;1535:15;;;;;;;;1568:1;1561:8;;;1431:145;;;;:::o", + "source": "pragma solidity ^0.5.0;\n\nimport \"./IERC20.sol\";\nimport \"../../math/SafeMath.sol\";\n\n/**\n * @title Standard ERC20 token\n *\n * @dev Implementation of the basic standard token.\n * https://github.com/ethereum/EIPs/blob/master/EIPS/eip-20.md\n * Originally based on code by FirstBlood:\n * https://github.com/Firstbloodio/token/blob/master/smart_contract/FirstBloodToken.sol\n *\n * This implementation emits additional Approval events, allowing applications to reconstruct the allowance status for\n * all accounts just by listening to said events. Note that this isn't required by the specification, and other\n * compliant implementations may not do it.\n */\ncontract ERC20 is IERC20 {\n using SafeMath for uint256;\n\n mapping (address => uint256) private _balances;\n\n mapping (address => mapping (address => uint256)) private _allowed;\n\n uint256 private _totalSupply;\n\n /**\n * @dev Total number of tokens in existence\n */\n function totalSupply() public view returns (uint256) {\n return _totalSupply;\n }\n\n /**\n * @dev Gets the balance of the specified address.\n * @param owner The address to query the balance of.\n * @return An uint256 representing the amount owned by the passed address.\n */\n function balanceOf(address owner) public view returns (uint256) {\n return _balances[owner];\n }\n\n /**\n * @dev Function to check the amount of tokens that an owner allowed to a spender.\n * @param owner address The address which owns the funds.\n * @param spender address The address which will spend the funds.\n * @return A uint256 specifying the amount of tokens still available for the spender.\n */\n function allowance(address owner, address spender) public view returns (uint256) {\n return _allowed[owner][spender];\n }\n\n /**\n * @dev Transfer token for a specified address\n * @param to The address to transfer to.\n * @param value The amount to be transferred.\n */\n function transfer(address to, uint256 value) public returns (bool) {\n _transfer(msg.sender, to, value);\n return true;\n }\n\n /**\n * @dev Approve the passed address to spend the specified amount of tokens on behalf of msg.sender.\n * Beware that changing an allowance with this method brings the risk that someone may use both the old\n * and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this\n * race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards:\n * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\n * @param spender The address which will spend the funds.\n * @param value The amount of tokens to be spent.\n */\n function approve(address spender, uint256 value) public returns (bool) {\n require(spender != address(0));\n\n _allowed[msg.sender][spender] = value;\n emit Approval(msg.sender, spender, value);\n return true;\n }\n\n /**\n * @dev Transfer tokens from one address to another.\n * Note that while this function emits an Approval event, this is not required as per the specification,\n * and other compliant implementations may not emit the event.\n * @param from address The address which you want to send tokens from\n * @param to address The address which you want to transfer to\n * @param value uint256 the amount of tokens to be transferred\n */\n function transferFrom(address from, address to, uint256 value) public returns (bool) {\n _allowed[from][msg.sender] = _allowed[from][msg.sender].sub(value);\n _transfer(from, to, value);\n emit Approval(from, msg.sender, _allowed[from][msg.sender]);\n return true;\n }\n\n /**\n * @dev Increase the amount of tokens that an owner allowed to a spender.\n * approve should be called when allowed_[_spender] == 0. To increment\n * allowed value is better to use this function to avoid 2 calls (and wait until\n * the first transaction is mined)\n * From MonolithDAO Token.sol\n * Emits an Approval event.\n * @param spender The address which will spend the funds.\n * @param addedValue The amount of tokens to increase the allowance by.\n */\n function increaseAllowance(address spender, uint256 addedValue) public returns (bool) {\n require(spender != address(0));\n\n _allowed[msg.sender][spender] = _allowed[msg.sender][spender].add(addedValue);\n emit Approval(msg.sender, spender, _allowed[msg.sender][spender]);\n return true;\n }\n\n /**\n * @dev Decrease the amount of tokens that an owner allowed to a spender.\n * approve should be called when allowed_[_spender] == 0. To decrement\n * allowed value is better to use this function to avoid 2 calls (and wait until\n * the first transaction is mined)\n * From MonolithDAO Token.sol\n * Emits an Approval event.\n * @param spender The address which will spend the funds.\n * @param subtractedValue The amount of tokens to decrease the allowance by.\n */\n function decreaseAllowance(address spender, uint256 subtractedValue) public returns (bool) {\n require(spender != address(0));\n\n _allowed[msg.sender][spender] = _allowed[msg.sender][spender].sub(subtractedValue);\n emit Approval(msg.sender, spender, _allowed[msg.sender][spender]);\n return true;\n }\n\n /**\n * @dev Transfer token for a specified addresses\n * @param from The address to transfer from.\n * @param to The address to transfer to.\n * @param value The amount to be transferred.\n */\n function _transfer(address from, address to, uint256 value) internal {\n require(to != address(0));\n\n _balances[from] = _balances[from].sub(value);\n _balances[to] = _balances[to].add(value);\n emit Transfer(from, to, value);\n }\n\n /**\n * @dev Internal function that mints an amount of the token and assigns it to\n * an account. This encapsulates the modification of balances such that the\n * proper events are emitted.\n * @param account The account that will receive the created tokens.\n * @param value The amount that will be created.\n */\n function _mint(address account, uint256 value) internal {\n require(account != address(0));\n\n _totalSupply = _totalSupply.add(value);\n _balances[account] = _balances[account].add(value);\n emit Transfer(address(0), account, value);\n }\n\n /**\n * @dev Internal function that burns an amount of the token of a given\n * account.\n * @param account The account whose tokens will be burnt.\n * @param value The amount that will be burnt.\n */\n function _burn(address account, uint256 value) internal {\n require(account != address(0));\n\n _totalSupply = _totalSupply.sub(value);\n _balances[account] = _balances[account].sub(value);\n emit Transfer(account, address(0), value);\n }\n\n /**\n * @dev Internal function that burns an amount of the token of a given\n * account, deducting from the sender's allowance for said account. Uses the\n * internal burn function.\n * Emits an Approval event (reflecting the reduced allowance).\n * @param account The account whose tokens will be burnt.\n * @param value The amount that will be burnt.\n */\n function _burnFrom(address account, uint256 value) internal {\n _allowed[account][msg.sender] = _allowed[account][msg.sender].sub(value);\n _burn(account, value);\n emit Approval(account, msg.sender, _allowed[account][msg.sender]);\n }\n}\n", + "sourcePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/token/ERC20/ERC20.sol", + "ast": { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/token/ERC20/ERC20.sol", + "exportedSymbols": { + "ERC20": [ + 4707 + ] + }, + "id": 4708, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 4277, + "literals": [ + "solidity", + "^", + "0.5", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "0:23:41" + }, + { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/token/ERC20/IERC20.sol", + "file": "./IERC20.sol", + "id": 4278, + "nodeType": "ImportDirective", + "scope": 4708, + "sourceUnit": 5053, + "src": "25:22:41", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/math/SafeMath.sol", + "file": "../../math/SafeMath.sol", + "id": 4279, + "nodeType": "ImportDirective", + "scope": 4708, + "sourceUnit": 3483, + "src": "48:33:41", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 4280, + "name": "IERC20", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 5052, + "src": "667:6:41", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$5052", + "typeString": "contract IERC20" + } + }, + "id": 4281, + "nodeType": "InheritanceSpecifier", + "src": "667:6:41" + } + ], + "contractDependencies": [ + 5052 + ], + "contractKind": "contract", + "documentation": "@title Standard ERC20 token\n * @dev Implementation of the basic standard token.\nhttps://github.com/ethereum/EIPs/blob/master/EIPS/eip-20.md\nOriginally based on code by FirstBlood:\nhttps://github.com/Firstbloodio/token/blob/master/smart_contract/FirstBloodToken.sol\n * This implementation emits additional Approval events, allowing applications to reconstruct the allowance status for\nall accounts just by listening to said events. Note that this isn't required by the specification, and other\ncompliant implementations may not do it.", + "fullyImplemented": true, + "id": 4707, + "linearizedBaseContracts": [ + 4707, + 5052 + ], + "name": "ERC20", + "nodeType": "ContractDefinition", + "nodes": [ + { + "id": 4284, + "libraryName": { + "contractScope": null, + "id": 4282, + "name": "SafeMath", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 3482, + "src": "686:8:41", + "typeDescriptions": { + "typeIdentifier": "t_contract$_SafeMath_$3482", + "typeString": "library SafeMath" + } + }, + "nodeType": "UsingForDirective", + "src": "680:27:41", + "typeName": { + "id": 4283, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "699:7:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + { + "constant": false, + "id": 4288, + "name": "_balances", + "nodeType": "VariableDeclaration", + "scope": 4707, + "src": "713:46:41", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + }, + "typeName": { + "id": 4287, + "keyType": { + "id": 4285, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "722:7:41", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "713:28:41", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + }, + "valueType": { + "id": 4286, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "733:7:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "value": null, + "visibility": "private" + }, + { + "constant": false, + "id": 4294, + "name": "_allowed", + "nodeType": "VariableDeclaration", + "scope": 4707, + "src": "766:66:41", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + }, + "typeName": { + "id": 4293, + "keyType": { + "id": 4289, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "775:7:41", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "766:49:41", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + }, + "valueType": { + "id": 4292, + "keyType": { + "id": 4290, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "795:7:41", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "786:28:41", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + }, + "valueType": { + "id": 4291, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "806:7:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + } + }, + "value": null, + "visibility": "private" + }, + { + "constant": false, + "id": 4296, + "name": "_totalSupply", + "nodeType": "VariableDeclaration", + "scope": 4707, + "src": "839:28:41", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4295, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "839:7:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "private" + }, + { + "body": { + "id": 4303, + "nodeType": "Block", + "src": "989:36:41", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 4301, + "name": "_totalSupply", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4296, + "src": "1006:12:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 4300, + "id": 4302, + "nodeType": "Return", + "src": "999:19:41" + } + ] + }, + "documentation": "@dev Total number of tokens in existence", + "id": 4304, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "totalSupply", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4297, + "nodeType": "ParameterList", + "parameters": [], + "src": "956:2:41" + }, + "returnParameters": { + "id": 4300, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4299, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 4304, + "src": "980:7:41", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4298, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "980:7:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "979:9:41" + }, + "scope": 4707, + "src": "936:89:41", + "stateMutability": "view", + "superFunction": 5019, + "visibility": "public" + }, + { + "body": { + "id": 4315, + "nodeType": "Block", + "src": "1298:40:41", + "statements": [ + { + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 4311, + "name": "_balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4288, + "src": "1315:9:41", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 4313, + "indexExpression": { + "argumentTypes": null, + "id": 4312, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4306, + "src": "1325:5:41", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "1315:16:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 4310, + "id": 4314, + "nodeType": "Return", + "src": "1308:23:41" + } + ] + }, + "documentation": "@dev Gets the balance of the specified address.\n@param owner The address to query the balance of.\n@return An uint256 representing the amount owned by the passed address.", + "id": 4316, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "balanceOf", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4307, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4306, + "name": "owner", + "nodeType": "VariableDeclaration", + "scope": 4316, + "src": "1253:13:41", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4305, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1253:7:41", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1252:15:41" + }, + "returnParameters": { + "id": 4310, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4309, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 4316, + "src": "1289:7:41", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4308, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1289:7:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1288:9:41" + }, + "scope": 4707, + "src": "1234:104:41", + "stateMutability": "view", + "superFunction": 5026, + "visibility": "public" + }, + { + "body": { + "id": 4331, + "nodeType": "Block", + "src": "1750:48:41", + "statements": [ + { + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 4325, + "name": "_allowed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294, + "src": "1767:8:41", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + } + }, + "id": 4327, + "indexExpression": { + "argumentTypes": null, + "id": 4326, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4318, + "src": "1776:5:41", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "1767:15:41", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 4329, + "indexExpression": { + "argumentTypes": null, + "id": 4328, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4320, + "src": "1783:7:41", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "1767:24:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 4324, + "id": 4330, + "nodeType": "Return", + "src": "1760:31:41" + } + ] + }, + "documentation": "@dev Function to check the amount of tokens that an owner allowed to a spender.\n@param owner address The address which owns the funds.\n@param spender address The address which will spend the funds.\n@return A uint256 specifying the amount of tokens still available for the spender.", + "id": 4332, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "allowance", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4321, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4318, + "name": "owner", + "nodeType": "VariableDeclaration", + "scope": 4332, + "src": "1688:13:41", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4317, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1688:7:41", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 4320, + "name": "spender", + "nodeType": "VariableDeclaration", + "scope": 4332, + "src": "1703:15:41", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4319, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1703:7:41", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1687:32:41" + }, + "returnParameters": { + "id": 4324, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4323, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 4332, + "src": "1741:7:41", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4322, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1741:7:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1740:9:41" + }, + "scope": 4707, + "src": "1669:129:41", + "stateMutability": "view", + "superFunction": 5035, + "visibility": "public" + }, + { + "body": { + "id": 4350, + "nodeType": "Block", + "src": "2029:70:41", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 4342, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6845, + "src": "2049:3:41", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 4343, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2049:10:41", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 4344, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4334, + "src": "2061:2:41", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 4345, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4336, + "src": "2065:5:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 4341, + "name": "_transfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4580, + "src": "2039:9:41", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 4346, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2039:32:41", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4347, + "nodeType": "ExpressionStatement", + "src": "2039:32:41" + }, + { + "expression": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 4348, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2088:4:41", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 4340, + "id": 4349, + "nodeType": "Return", + "src": "2081:11:41" + } + ] + }, + "documentation": "@dev Transfer token for a specified address\n@param to The address to transfer to.\n@param value The amount to be transferred.", + "id": 4351, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "transfer", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4337, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4334, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 4351, + "src": "1980:10:41", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4333, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1980:7:41", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 4336, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 4351, + "src": "1992:13:41", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4335, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1992:7:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1979:27:41" + }, + "returnParameters": { + "id": 4340, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4339, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 4351, + "src": "2023:4:41", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 4338, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "2023:4:41", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2022:6:41" + }, + "scope": 4707, + "src": "1962:137:41", + "stateMutability": "nonpayable", + "superFunction": 4994, + "visibility": "public" + }, + { + "body": { + "id": 4386, + "nodeType": "Block", + "src": "2806:167:41", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 4365, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 4361, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4353, + "src": "2824:7:41", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 4363, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2843:1:41", + "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": 4362, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2835:7:41", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 4364, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2835:10:41", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "2824:21:41", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 4360, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6848, + 6849 + ], + "referencedDeclaration": 6848, + "src": "2816:7:41", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 4366, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2816:30:41", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4367, + "nodeType": "ExpressionStatement", + "src": "2816:30:41" + }, + { + "expression": { + "argumentTypes": null, + "id": 4375, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 4368, + "name": "_allowed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294, + "src": "2857:8:41", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + } + }, + "id": 4372, + "indexExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 4369, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6845, + "src": "2866:3:41", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 4370, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2866:10:41", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2857:20:41", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 4373, + "indexExpression": { + "argumentTypes": null, + "id": 4371, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4353, + "src": "2878:7:41", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "2857:29:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 4374, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4355, + "src": "2889:5:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2857:37:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 4376, + "nodeType": "ExpressionStatement", + "src": "2857:37:41" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 4378, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6845, + "src": "2918:3:41", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 4379, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2918:10:41", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 4380, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4353, + "src": "2930:7:41", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 4381, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4355, + "src": "2939:5:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 4377, + "name": "Approval", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5051, + "src": "2909:8:41", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 4382, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2909:36:41", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4383, + "nodeType": "EmitStatement", + "src": "2904:41:41" + }, + { + "expression": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 4384, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2962:4:41", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 4359, + "id": 4385, + "nodeType": "Return", + "src": "2955:11:41" + } + ] + }, + "documentation": "@dev Approve the passed address to spend the specified amount of tokens on behalf of msg.sender.\nBeware that changing an allowance with this method brings the risk that someone may use both the old\nand the new allowance by unfortunate transaction ordering. One possible solution to mitigate this\nrace condition is to first reduce the spender's allowance to 0 and set the desired value afterwards:\nhttps://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\n@param spender The address which will spend the funds.\n@param value The amount of tokens to be spent.", + "id": 4387, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "approve", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4356, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4353, + "name": "spender", + "nodeType": "VariableDeclaration", + "scope": 4387, + "src": "2752:15:41", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4352, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2752:7:41", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 4355, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 4387, + "src": "2769:13:41", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4354, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2769:7:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2751:32:41" + }, + "returnParameters": { + "id": 4359, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4358, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 4387, + "src": "2800:4:41", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 4357, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "2800:4:41", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2799:6:41" + }, + "scope": 4707, + "src": "2735:238:41", + "stateMutability": "nonpayable", + "superFunction": 5003, + "visibility": "public" + }, + { + "body": { + "id": 4435, + "nodeType": "Block", + "src": "3521:209:41", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 4413, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 4398, + "name": "_allowed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294, + "src": "3531:8:41", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + } + }, + "id": 4402, + "indexExpression": { + "argumentTypes": null, + "id": 4399, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4389, + "src": "3540:4:41", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3531:14:41", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 4403, + "indexExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 4400, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6845, + "src": "3546:3:41", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 4401, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "3546:10:41", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "3531:26:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 4411, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4393, + "src": "3591:5:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 4404, + "name": "_allowed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294, + "src": "3560:8:41", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + } + }, + "id": 4406, + "indexExpression": { + "argumentTypes": null, + "id": 4405, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4389, + "src": "3569:4:41", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3560:14:41", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 4409, + "indexExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 4407, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6845, + "src": "3575:3:41", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 4408, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "3575:10:41", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3560:26:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 4410, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sub", + "nodeType": "MemberAccess", + "referencedDeclaration": 3437, + "src": "3560:30:41", + "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": 4412, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3560:37:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3531:66:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 4414, + "nodeType": "ExpressionStatement", + "src": "3531:66:41" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 4416, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4389, + "src": "3617:4:41", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 4417, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4391, + "src": "3623:2:41", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 4418, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4393, + "src": "3627:5:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 4415, + "name": "_transfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4580, + "src": "3607:9:41", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 4419, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3607:26:41", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4420, + "nodeType": "ExpressionStatement", + "src": "3607:26:41" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 4422, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4389, + "src": "3657:4:41", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 4423, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6845, + "src": "3663:3:41", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 4424, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "3663:10:41", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 4425, + "name": "_allowed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294, + "src": "3675:8:41", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + } + }, + "id": 4427, + "indexExpression": { + "argumentTypes": null, + "id": 4426, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4389, + "src": "3684:4:41", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3675:14:41", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 4430, + "indexExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 4428, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6845, + "src": "3690:3:41", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 4429, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "3690:10:41", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3675:26:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 4421, + "name": "Approval", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5051, + "src": "3648:8:41", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 4431, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3648:54:41", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4432, + "nodeType": "EmitStatement", + "src": "3643:59:41" + }, + { + "expression": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 4433, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3719:4:41", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 4397, + "id": 4434, + "nodeType": "Return", + "src": "3712:11:41" + } + ] + }, + "documentation": "@dev Transfer tokens from one address to another.\nNote that while this function emits an Approval event, this is not required as per the specification,\nand other compliant implementations may not emit the event.\n@param from address The address which you want to send tokens from\n@param to address The address which you want to transfer to\n@param value uint256 the amount of tokens to be transferred", + "id": 4436, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "transferFrom", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4394, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4389, + "name": "from", + "nodeType": "VariableDeclaration", + "scope": 4436, + "src": "3458:12:41", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4388, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3458:7:41", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 4391, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 4436, + "src": "3472:10:41", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4390, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3472:7:41", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 4393, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 4436, + "src": "3484:13:41", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4392, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3484:7:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3457:41:41" + }, + "returnParameters": { + "id": 4397, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4396, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 4436, + "src": "3515:4:41", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 4395, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "3515:4:41", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3514:6:41" + }, + "scope": 4707, + "src": "3436:294:41", + "stateMutability": "nonpayable", + "superFunction": 5014, + "visibility": "public" + }, + { + "body": { + "id": 4484, + "nodeType": "Block", + "src": "4319:231:41", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 4450, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 4446, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4438, + "src": "4337:7:41", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 4448, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4356:1:41", + "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": 4447, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "4348:7:41", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 4449, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4348:10:41", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "4337:21:41", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 4445, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6848, + 6849 + ], + "referencedDeclaration": 6848, + "src": "4329:7:41", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 4451, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4329:30:41", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4452, + "nodeType": "ExpressionStatement", + "src": "4329:30:41" + }, + { + "expression": { + "argumentTypes": null, + "id": 4468, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 4453, + "name": "_allowed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294, + "src": "4370:8:41", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + } + }, + "id": 4457, + "indexExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 4454, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6845, + "src": "4379:3:41", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 4455, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "4379:10:41", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "4370:20:41", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 4458, + "indexExpression": { + "argumentTypes": null, + "id": 4456, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4438, + "src": "4391:7:41", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "4370:29:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 4466, + "name": "addedValue", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4440, + "src": "4436:10:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 4459, + "name": "_allowed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294, + "src": "4402:8:41", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + } + }, + "id": 4462, + "indexExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 4460, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6845, + "src": "4411:3:41", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 4461, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "4411:10:41", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "4402:20:41", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 4464, + "indexExpression": { + "argumentTypes": null, + "id": 4463, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4438, + "src": "4423:7:41", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "4402:29:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 4465, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 3461, + "src": "4402:33:41", + "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": 4467, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4402:45:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4370:77:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 4469, + "nodeType": "ExpressionStatement", + "src": "4370:77:41" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 4471, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6845, + "src": "4471:3:41", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 4472, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "4471:10:41", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 4473, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4438, + "src": "4483:7:41", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 4474, + "name": "_allowed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294, + "src": "4492:8:41", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + } + }, + "id": 4477, + "indexExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 4475, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6845, + "src": "4501:3:41", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 4476, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "4501:10:41", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "4492:20:41", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 4479, + "indexExpression": { + "argumentTypes": null, + "id": 4478, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4438, + "src": "4513:7:41", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "4492:29:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 4470, + "name": "Approval", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5051, + "src": "4462:8:41", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 4480, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4462:60:41", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4481, + "nodeType": "EmitStatement", + "src": "4457:65:41" + }, + { + "expression": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 4482, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4539:4:41", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 4444, + "id": 4483, + "nodeType": "Return", + "src": "4532:11:41" + } + ] + }, + "documentation": "@dev Increase the amount of tokens that an owner allowed to a spender.\napprove should be called when allowed_[_spender] == 0. To increment\nallowed value is better to use this function to avoid 2 calls (and wait until\nthe first transaction is mined)\nFrom MonolithDAO Token.sol\nEmits an Approval event.\n@param spender The address which will spend the funds.\n@param addedValue The amount of tokens to increase the allowance by.", + "id": 4485, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "increaseAllowance", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4441, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4438, + "name": "spender", + "nodeType": "VariableDeclaration", + "scope": 4485, + "src": "4260:15:41", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4437, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4260:7:41", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 4440, + "name": "addedValue", + "nodeType": "VariableDeclaration", + "scope": 4485, + "src": "4277:18:41", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4439, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4277:7:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4259:37:41" + }, + "returnParameters": { + "id": 4444, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4443, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 4485, + "src": "4313:4:41", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 4442, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "4313:4:41", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4312:6:41" + }, + "scope": 4707, + "src": "4233:317:41", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 4533, + "nodeType": "Block", + "src": "5149:236:41", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 4499, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 4495, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4487, + "src": "5167:7:41", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 4497, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5186:1:41", + "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": 4496, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "5178:7:41", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 4498, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5178:10:41", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "5167:21:41", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 4494, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6848, + 6849 + ], + "referencedDeclaration": 6848, + "src": "5159:7:41", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 4500, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5159:30:41", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4501, + "nodeType": "ExpressionStatement", + "src": "5159:30:41" + }, + { + "expression": { + "argumentTypes": null, + "id": 4517, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 4502, + "name": "_allowed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294, + "src": "5200:8:41", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + } + }, + "id": 4506, + "indexExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 4503, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6845, + "src": "5209:3:41", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 4504, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "5209:10:41", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "5200:20:41", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 4507, + "indexExpression": { + "argumentTypes": null, + "id": 4505, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4487, + "src": "5221:7:41", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "5200:29:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 4515, + "name": "subtractedValue", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4489, + "src": "5266:15:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 4508, + "name": "_allowed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294, + "src": "5232:8:41", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + } + }, + "id": 4511, + "indexExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 4509, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6845, + "src": "5241:3:41", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 4510, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "5241:10:41", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "5232:20:41", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 4513, + "indexExpression": { + "argumentTypes": null, + "id": 4512, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4487, + "src": "5253:7:41", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "5232:29:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 4514, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sub", + "nodeType": "MemberAccess", + "referencedDeclaration": 3437, + "src": "5232:33:41", + "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": 4516, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5232:50:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "5200:82:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 4518, + "nodeType": "ExpressionStatement", + "src": "5200:82:41" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 4520, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6845, + "src": "5306:3:41", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 4521, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "5306:10:41", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 4522, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4487, + "src": "5318:7:41", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 4523, + "name": "_allowed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294, + "src": "5327:8:41", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + } + }, + "id": 4526, + "indexExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 4524, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6845, + "src": "5336:3:41", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 4525, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "5336:10:41", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "5327:20:41", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 4528, + "indexExpression": { + "argumentTypes": null, + "id": 4527, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4487, + "src": "5348:7:41", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "5327:29:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 4519, + "name": "Approval", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5051, + "src": "5297:8:41", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 4529, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5297:60:41", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4530, + "nodeType": "EmitStatement", + "src": "5292:65:41" + }, + { + "expression": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 4531, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5374:4:41", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 4493, + "id": 4532, + "nodeType": "Return", + "src": "5367:11:41" + } + ] + }, + "documentation": "@dev Decrease the amount of tokens that an owner allowed to a spender.\napprove should be called when allowed_[_spender] == 0. To decrement\nallowed value is better to use this function to avoid 2 calls (and wait until\nthe first transaction is mined)\nFrom MonolithDAO Token.sol\nEmits an Approval event.\n@param spender The address which will spend the funds.\n@param subtractedValue The amount of tokens to decrease the allowance by.", + "id": 4534, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "decreaseAllowance", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4490, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4487, + "name": "spender", + "nodeType": "VariableDeclaration", + "scope": 4534, + "src": "5085:15:41", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4486, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5085:7:41", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 4489, + "name": "subtractedValue", + "nodeType": "VariableDeclaration", + "scope": 4534, + "src": "5102:23:41", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4488, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5102:7:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "5084:42:41" + }, + "returnParameters": { + "id": 4493, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4492, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 4534, + "src": "5143:4:41", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 4491, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "5143:4:41", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "5142:6:41" + }, + "scope": 4707, + "src": "5058:327:41", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 4579, + "nodeType": "Block", + "src": "5668:187:41", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 4548, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 4544, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4538, + "src": "5686:2:41", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 4546, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5700:1:41", + "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": 4545, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "5692:7:41", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 4547, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5692:10:41", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "5686:16:41", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 4543, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6848, + 6849 + ], + "referencedDeclaration": 6848, + "src": "5678:7:41", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 4549, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5678:25:41", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4550, + "nodeType": "ExpressionStatement", + "src": "5678:25:41" + }, + { + "expression": { + "argumentTypes": null, + "id": 4560, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 4551, + "name": "_balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4288, + "src": "5714:9:41", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 4553, + "indexExpression": { + "argumentTypes": null, + "id": 4552, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4536, + "src": "5724:4:41", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "5714:15:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 4558, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4540, + "src": "5752:5:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 4554, + "name": "_balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4288, + "src": "5732:9:41", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 4556, + "indexExpression": { + "argumentTypes": null, + "id": 4555, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4536, + "src": "5742:4:41", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "5732:15:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 4557, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sub", + "nodeType": "MemberAccess", + "referencedDeclaration": 3437, + "src": "5732:19:41", + "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": 4559, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5732:26:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "5714:44:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 4561, + "nodeType": "ExpressionStatement", + "src": "5714:44:41" + }, + { + "expression": { + "argumentTypes": null, + "id": 4571, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 4562, + "name": "_balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4288, + "src": "5768:9:41", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 4564, + "indexExpression": { + "argumentTypes": null, + "id": 4563, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4538, + "src": "5778:2:41", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "5768:13:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 4569, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4540, + "src": "5802:5:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 4565, + "name": "_balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4288, + "src": "5784:9:41", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 4567, + "indexExpression": { + "argumentTypes": null, + "id": 4566, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4538, + "src": "5794:2:41", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "5784:13:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 4568, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 3461, + "src": "5784:17:41", + "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": 4570, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5784:24:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "5768:40:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 4572, + "nodeType": "ExpressionStatement", + "src": "5768:40:41" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 4574, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4536, + "src": "5832:4:41", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 4575, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4538, + "src": "5838:2:41", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 4576, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4540, + "src": "5842:5:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 4573, + "name": "Transfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5043, + "src": "5823:8:41", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 4577, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5823:25:41", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4578, + "nodeType": "EmitStatement", + "src": "5818:30:41" + } + ] + }, + "documentation": "@dev Transfer token for a specified addresses\n@param from The address to transfer from.\n@param to The address to transfer to.\n@param value The amount to be transferred.", + "id": 4580, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_transfer", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4541, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4536, + "name": "from", + "nodeType": "VariableDeclaration", + "scope": 4580, + "src": "5618:12:41", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4535, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5618:7:41", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 4538, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 4580, + "src": "5632:10:41", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4537, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5632:7:41", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 4540, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 4580, + "src": "5644:13:41", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4539, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5644:7:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "5617:41:41" + }, + "returnParameters": { + "id": 4542, + "nodeType": "ParameterList", + "parameters": [], + "src": "5668:0:41" + }, + "scope": 4707, + "src": "5599:256:41", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 4621, + "nodeType": "Block", + "src": "6254:207:41", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 4592, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 4588, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4582, + "src": "6272:7:41", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 4590, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6291:1:41", + "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": 4589, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "6283:7:41", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 4591, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6283:10:41", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "6272:21:41", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 4587, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6848, + 6849 + ], + "referencedDeclaration": 6848, + "src": "6264:7:41", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 4593, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6264:30:41", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4594, + "nodeType": "ExpressionStatement", + "src": "6264:30:41" + }, + { + "expression": { + "argumentTypes": null, + "id": 4600, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 4595, + "name": "_totalSupply", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4296, + "src": "6305:12:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 4598, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4584, + "src": "6337:5:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 4596, + "name": "_totalSupply", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4296, + "src": "6320:12:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 4597, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 3461, + "src": "6320:16:41", + "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": 4599, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6320:23:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "6305:38:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 4601, + "nodeType": "ExpressionStatement", + "src": "6305:38:41" + }, + { + "expression": { + "argumentTypes": null, + "id": 4611, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 4602, + "name": "_balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4288, + "src": "6353:9:41", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 4604, + "indexExpression": { + "argumentTypes": null, + "id": 4603, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4582, + "src": "6363:7:41", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "6353:18:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 4609, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4584, + "src": "6397:5:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 4605, + "name": "_balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4288, + "src": "6374:9:41", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 4607, + "indexExpression": { + "argumentTypes": null, + "id": 4606, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4582, + "src": "6384:7:41", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "6374:18:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 4608, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 3461, + "src": "6374:22:41", + "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": 4610, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6374:29:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "6353:50:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 4612, + "nodeType": "ExpressionStatement", + "src": "6353:50:41" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 4615, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6435:1:41", + "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": 4614, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "6427:7:41", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 4616, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6427:10:41", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 4617, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4582, + "src": "6439:7:41", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 4618, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4584, + "src": "6448:5:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 4613, + "name": "Transfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5043, + "src": "6418:8:41", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 4619, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6418:36:41", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4620, + "nodeType": "EmitStatement", + "src": "6413:41:41" + } + ] + }, + "documentation": "@dev Internal function that mints an amount of the token and assigns it to\nan account. This encapsulates the modification of balances such that the\nproper events are emitted.\n@param account The account that will receive the created tokens.\n@param value The amount that will be created.", + "id": 4622, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_mint", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4585, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4582, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 4622, + "src": "6213:15:41", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4581, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6213:7:41", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 4584, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 4622, + "src": "6230:13:41", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4583, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6230:7:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "6212:32:41" + }, + "returnParameters": { + "id": 4586, + "nodeType": "ParameterList", + "parameters": [], + "src": "6254:0:41" + }, + "scope": 4707, + "src": "6198:263:41", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 4663, + "nodeType": "Block", + "src": "6743:207:41", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 4634, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 4630, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4624, + "src": "6761:7:41", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 4632, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6780:1:41", + "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": 4631, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "6772:7:41", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 4633, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6772:10:41", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "6761:21:41", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 4629, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6848, + 6849 + ], + "referencedDeclaration": 6848, + "src": "6753:7:41", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 4635, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6753:30:41", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4636, + "nodeType": "ExpressionStatement", + "src": "6753:30:41" + }, + { + "expression": { + "argumentTypes": null, + "id": 4642, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 4637, + "name": "_totalSupply", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4296, + "src": "6794:12:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 4640, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4626, + "src": "6826:5:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 4638, + "name": "_totalSupply", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4296, + "src": "6809:12:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 4639, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sub", + "nodeType": "MemberAccess", + "referencedDeclaration": 3437, + "src": "6809:16:41", + "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": 4641, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6809:23:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "6794:38:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 4643, + "nodeType": "ExpressionStatement", + "src": "6794:38:41" + }, + { + "expression": { + "argumentTypes": null, + "id": 4653, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 4644, + "name": "_balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4288, + "src": "6842:9:41", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 4646, + "indexExpression": { + "argumentTypes": null, + "id": 4645, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4624, + "src": "6852:7:41", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "6842:18:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 4651, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4626, + "src": "6886:5:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 4647, + "name": "_balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4288, + "src": "6863:9:41", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 4649, + "indexExpression": { + "argumentTypes": null, + "id": 4648, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4624, + "src": "6873:7:41", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "6863:18:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 4650, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sub", + "nodeType": "MemberAccess", + "referencedDeclaration": 3437, + "src": "6863:22:41", + "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": 4652, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6863:29:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "6842:50:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 4654, + "nodeType": "ExpressionStatement", + "src": "6842:50:41" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 4656, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4624, + "src": "6916:7:41", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 4658, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6933:1:41", + "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": 4657, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "6925:7:41", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 4659, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6925:10:41", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 4660, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4626, + "src": "6937:5:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 4655, + "name": "Transfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5043, + "src": "6907:8:41", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 4661, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6907:36:41", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4662, + "nodeType": "EmitStatement", + "src": "6902:41:41" + } + ] + }, + "documentation": "@dev Internal function that burns an amount of the token of a given\naccount.\n@param account The account whose tokens will be burnt.\n@param value The amount that will be burnt.", + "id": 4664, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_burn", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4627, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4624, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 4664, + "src": "6702:15:41", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4623, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6702:7:41", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 4626, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 4664, + "src": "6719:13:41", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4625, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6719:7:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "6701:32:41" + }, + "returnParameters": { + "id": 4628, + "nodeType": "ParameterList", + "parameters": [], + "src": "6743:0:41" + }, + "scope": 4707, + "src": "6687:263:41", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 4705, + "nodeType": "Block", + "src": "7399:195:41", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 4686, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 4671, + "name": "_allowed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294, + "src": "7409:8:41", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + } + }, + "id": 4675, + "indexExpression": { + "argumentTypes": null, + "id": 4672, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4666, + "src": "7418:7:41", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "7409:17:41", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 4676, + "indexExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 4673, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6845, + "src": "7427:3:41", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 4674, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "7427:10:41", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "7409:29:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 4684, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4668, + "src": "7475:5:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 4677, + "name": "_allowed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294, + "src": "7441:8:41", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + } + }, + "id": 4679, + "indexExpression": { + "argumentTypes": null, + "id": 4678, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4666, + "src": "7450:7:41", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "7441:17:41", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 4682, + "indexExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 4680, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6845, + "src": "7459:3:41", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 4681, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "7459:10:41", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "7441:29:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 4683, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sub", + "nodeType": "MemberAccess", + "referencedDeclaration": 3437, + "src": "7441:33:41", + "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": 4685, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7441:40:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "7409:72:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 4687, + "nodeType": "ExpressionStatement", + "src": "7409:72:41" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 4689, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4666, + "src": "7497:7:41", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 4690, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4668, + "src": "7506:5:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 4688, + "name": "_burn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4664, + "src": "7491:5:41", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 4691, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7491:21:41", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4692, + "nodeType": "ExpressionStatement", + "src": "7491:21:41" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 4694, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4666, + "src": "7536:7:41", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 4695, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6845, + "src": "7545:3:41", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 4696, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "7545:10:41", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 4697, + "name": "_allowed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294, + "src": "7557:8:41", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + } + }, + "id": 4699, + "indexExpression": { + "argumentTypes": null, + "id": 4698, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4666, + "src": "7566:7:41", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "7557:17:41", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 4702, + "indexExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 4700, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6845, + "src": "7575:3:41", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 4701, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "7575:10:41", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "7557:29:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 4693, + "name": "Approval", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5051, + "src": "7527:8:41", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 4703, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7527:60:41", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4704, + "nodeType": "EmitStatement", + "src": "7522:65:41" + } + ] + }, + "documentation": "@dev Internal function that burns an amount of the token of a given\naccount, deducting from the sender's allowance for said account. Uses the\ninternal burn function.\nEmits an Approval event (reflecting the reduced allowance).\n@param account The account whose tokens will be burnt.\n@param value The amount that will be burnt.", + "id": 4706, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_burnFrom", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4669, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4666, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 4706, + "src": "7358:15:41", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4665, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7358:7:41", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 4668, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 4706, + "src": "7375:13:41", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4667, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7375:7:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "7357:32:41" + }, + "returnParameters": { + "id": 4670, + "nodeType": "ParameterList", + "parameters": [], + "src": "7399:0:41" + }, + "scope": 4707, + "src": "7339:255:41", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + } + ], + "scope": 4708, + "src": "649:6947:41" + } + ], + "src": "0:7597:41" + }, + "legacyAST": { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/token/ERC20/ERC20.sol", + "exportedSymbols": { + "ERC20": [ + 4707 + ] + }, + "id": 4708, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 4277, + "literals": [ + "solidity", + "^", + "0.5", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "0:23:41" + }, + { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/token/ERC20/IERC20.sol", + "file": "./IERC20.sol", + "id": 4278, + "nodeType": "ImportDirective", + "scope": 4708, + "sourceUnit": 5053, + "src": "25:22:41", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/math/SafeMath.sol", + "file": "../../math/SafeMath.sol", + "id": 4279, + "nodeType": "ImportDirective", + "scope": 4708, + "sourceUnit": 3483, + "src": "48:33:41", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 4280, + "name": "IERC20", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 5052, + "src": "667:6:41", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$5052", + "typeString": "contract IERC20" + } + }, + "id": 4281, + "nodeType": "InheritanceSpecifier", + "src": "667:6:41" + } + ], + "contractDependencies": [ + 5052 + ], + "contractKind": "contract", + "documentation": "@title Standard ERC20 token\n * @dev Implementation of the basic standard token.\nhttps://github.com/ethereum/EIPs/blob/master/EIPS/eip-20.md\nOriginally based on code by FirstBlood:\nhttps://github.com/Firstbloodio/token/blob/master/smart_contract/FirstBloodToken.sol\n * This implementation emits additional Approval events, allowing applications to reconstruct the allowance status for\nall accounts just by listening to said events. Note that this isn't required by the specification, and other\ncompliant implementations may not do it.", + "fullyImplemented": true, + "id": 4707, + "linearizedBaseContracts": [ + 4707, + 5052 + ], + "name": "ERC20", + "nodeType": "ContractDefinition", + "nodes": [ + { + "id": 4284, + "libraryName": { + "contractScope": null, + "id": 4282, + "name": "SafeMath", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 3482, + "src": "686:8:41", + "typeDescriptions": { + "typeIdentifier": "t_contract$_SafeMath_$3482", + "typeString": "library SafeMath" + } + }, + "nodeType": "UsingForDirective", + "src": "680:27:41", + "typeName": { + "id": 4283, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "699:7:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + { + "constant": false, + "id": 4288, + "name": "_balances", + "nodeType": "VariableDeclaration", + "scope": 4707, + "src": "713:46:41", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + }, + "typeName": { + "id": 4287, + "keyType": { + "id": 4285, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "722:7:41", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "713:28:41", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + }, + "valueType": { + "id": 4286, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "733:7:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "value": null, + "visibility": "private" + }, + { + "constant": false, + "id": 4294, + "name": "_allowed", + "nodeType": "VariableDeclaration", + "scope": 4707, + "src": "766:66:41", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + }, + "typeName": { + "id": 4293, + "keyType": { + "id": 4289, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "775:7:41", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "766:49:41", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + }, + "valueType": { + "id": 4292, + "keyType": { + "id": 4290, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "795:7:41", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "786:28:41", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + }, + "valueType": { + "id": 4291, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "806:7:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + } + }, + "value": null, + "visibility": "private" + }, + { + "constant": false, + "id": 4296, + "name": "_totalSupply", + "nodeType": "VariableDeclaration", + "scope": 4707, + "src": "839:28:41", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4295, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "839:7:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "private" + }, + { + "body": { + "id": 4303, + "nodeType": "Block", + "src": "989:36:41", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 4301, + "name": "_totalSupply", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4296, + "src": "1006:12:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 4300, + "id": 4302, + "nodeType": "Return", + "src": "999:19:41" + } + ] + }, + "documentation": "@dev Total number of tokens in existence", + "id": 4304, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "totalSupply", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4297, + "nodeType": "ParameterList", + "parameters": [], + "src": "956:2:41" + }, + "returnParameters": { + "id": 4300, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4299, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 4304, + "src": "980:7:41", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4298, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "980:7:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "979:9:41" + }, + "scope": 4707, + "src": "936:89:41", + "stateMutability": "view", + "superFunction": 5019, + "visibility": "public" + }, + { + "body": { + "id": 4315, + "nodeType": "Block", + "src": "1298:40:41", + "statements": [ + { + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 4311, + "name": "_balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4288, + "src": "1315:9:41", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 4313, + "indexExpression": { + "argumentTypes": null, + "id": 4312, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4306, + "src": "1325:5:41", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "1315:16:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 4310, + "id": 4314, + "nodeType": "Return", + "src": "1308:23:41" + } + ] + }, + "documentation": "@dev Gets the balance of the specified address.\n@param owner The address to query the balance of.\n@return An uint256 representing the amount owned by the passed address.", + "id": 4316, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "balanceOf", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4307, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4306, + "name": "owner", + "nodeType": "VariableDeclaration", + "scope": 4316, + "src": "1253:13:41", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4305, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1253:7:41", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1252:15:41" + }, + "returnParameters": { + "id": 4310, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4309, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 4316, + "src": "1289:7:41", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4308, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1289:7:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1288:9:41" + }, + "scope": 4707, + "src": "1234:104:41", + "stateMutability": "view", + "superFunction": 5026, + "visibility": "public" + }, + { + "body": { + "id": 4331, + "nodeType": "Block", + "src": "1750:48:41", + "statements": [ + { + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 4325, + "name": "_allowed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294, + "src": "1767:8:41", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + } + }, + "id": 4327, + "indexExpression": { + "argumentTypes": null, + "id": 4326, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4318, + "src": "1776:5:41", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "1767:15:41", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 4329, + "indexExpression": { + "argumentTypes": null, + "id": 4328, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4320, + "src": "1783:7:41", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "1767:24:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 4324, + "id": 4330, + "nodeType": "Return", + "src": "1760:31:41" + } + ] + }, + "documentation": "@dev Function to check the amount of tokens that an owner allowed to a spender.\n@param owner address The address which owns the funds.\n@param spender address The address which will spend the funds.\n@return A uint256 specifying the amount of tokens still available for the spender.", + "id": 4332, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "allowance", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4321, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4318, + "name": "owner", + "nodeType": "VariableDeclaration", + "scope": 4332, + "src": "1688:13:41", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4317, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1688:7:41", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 4320, + "name": "spender", + "nodeType": "VariableDeclaration", + "scope": 4332, + "src": "1703:15:41", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4319, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1703:7:41", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1687:32:41" + }, + "returnParameters": { + "id": 4324, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4323, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 4332, + "src": "1741:7:41", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4322, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1741:7:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1740:9:41" + }, + "scope": 4707, + "src": "1669:129:41", + "stateMutability": "view", + "superFunction": 5035, + "visibility": "public" + }, + { + "body": { + "id": 4350, + "nodeType": "Block", + "src": "2029:70:41", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 4342, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6845, + "src": "2049:3:41", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 4343, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2049:10:41", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 4344, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4334, + "src": "2061:2:41", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 4345, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4336, + "src": "2065:5:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 4341, + "name": "_transfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4580, + "src": "2039:9:41", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 4346, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2039:32:41", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4347, + "nodeType": "ExpressionStatement", + "src": "2039:32:41" + }, + { + "expression": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 4348, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2088:4:41", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 4340, + "id": 4349, + "nodeType": "Return", + "src": "2081:11:41" + } + ] + }, + "documentation": "@dev Transfer token for a specified address\n@param to The address to transfer to.\n@param value The amount to be transferred.", + "id": 4351, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "transfer", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4337, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4334, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 4351, + "src": "1980:10:41", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4333, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1980:7:41", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 4336, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 4351, + "src": "1992:13:41", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4335, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1992:7:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1979:27:41" + }, + "returnParameters": { + "id": 4340, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4339, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 4351, + "src": "2023:4:41", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 4338, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "2023:4:41", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2022:6:41" + }, + "scope": 4707, + "src": "1962:137:41", + "stateMutability": "nonpayable", + "superFunction": 4994, + "visibility": "public" + }, + { + "body": { + "id": 4386, + "nodeType": "Block", + "src": "2806:167:41", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 4365, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 4361, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4353, + "src": "2824:7:41", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 4363, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2843:1:41", + "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": 4362, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2835:7:41", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 4364, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2835:10:41", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "2824:21:41", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 4360, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6848, + 6849 + ], + "referencedDeclaration": 6848, + "src": "2816:7:41", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 4366, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2816:30:41", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4367, + "nodeType": "ExpressionStatement", + "src": "2816:30:41" + }, + { + "expression": { + "argumentTypes": null, + "id": 4375, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 4368, + "name": "_allowed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294, + "src": "2857:8:41", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + } + }, + "id": 4372, + "indexExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 4369, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6845, + "src": "2866:3:41", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 4370, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2866:10:41", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2857:20:41", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 4373, + "indexExpression": { + "argumentTypes": null, + "id": 4371, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4353, + "src": "2878:7:41", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "2857:29:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 4374, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4355, + "src": "2889:5:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2857:37:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 4376, + "nodeType": "ExpressionStatement", + "src": "2857:37:41" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 4378, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6845, + "src": "2918:3:41", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 4379, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2918:10:41", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 4380, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4353, + "src": "2930:7:41", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 4381, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4355, + "src": "2939:5:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 4377, + "name": "Approval", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5051, + "src": "2909:8:41", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 4382, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2909:36:41", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4383, + "nodeType": "EmitStatement", + "src": "2904:41:41" + }, + { + "expression": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 4384, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2962:4:41", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 4359, + "id": 4385, + "nodeType": "Return", + "src": "2955:11:41" + } + ] + }, + "documentation": "@dev Approve the passed address to spend the specified amount of tokens on behalf of msg.sender.\nBeware that changing an allowance with this method brings the risk that someone may use both the old\nand the new allowance by unfortunate transaction ordering. One possible solution to mitigate this\nrace condition is to first reduce the spender's allowance to 0 and set the desired value afterwards:\nhttps://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\n@param spender The address which will spend the funds.\n@param value The amount of tokens to be spent.", + "id": 4387, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "approve", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4356, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4353, + "name": "spender", + "nodeType": "VariableDeclaration", + "scope": 4387, + "src": "2752:15:41", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4352, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2752:7:41", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 4355, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 4387, + "src": "2769:13:41", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4354, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2769:7:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2751:32:41" + }, + "returnParameters": { + "id": 4359, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4358, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 4387, + "src": "2800:4:41", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 4357, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "2800:4:41", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2799:6:41" + }, + "scope": 4707, + "src": "2735:238:41", + "stateMutability": "nonpayable", + "superFunction": 5003, + "visibility": "public" + }, + { + "body": { + "id": 4435, + "nodeType": "Block", + "src": "3521:209:41", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 4413, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 4398, + "name": "_allowed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294, + "src": "3531:8:41", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + } + }, + "id": 4402, + "indexExpression": { + "argumentTypes": null, + "id": 4399, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4389, + "src": "3540:4:41", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3531:14:41", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 4403, + "indexExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 4400, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6845, + "src": "3546:3:41", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 4401, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "3546:10:41", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "3531:26:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 4411, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4393, + "src": "3591:5:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 4404, + "name": "_allowed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294, + "src": "3560:8:41", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + } + }, + "id": 4406, + "indexExpression": { + "argumentTypes": null, + "id": 4405, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4389, + "src": "3569:4:41", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3560:14:41", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 4409, + "indexExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 4407, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6845, + "src": "3575:3:41", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 4408, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "3575:10:41", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3560:26:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 4410, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sub", + "nodeType": "MemberAccess", + "referencedDeclaration": 3437, + "src": "3560:30:41", + "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": 4412, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3560:37:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3531:66:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 4414, + "nodeType": "ExpressionStatement", + "src": "3531:66:41" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 4416, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4389, + "src": "3617:4:41", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 4417, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4391, + "src": "3623:2:41", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 4418, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4393, + "src": "3627:5:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 4415, + "name": "_transfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4580, + "src": "3607:9:41", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 4419, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3607:26:41", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4420, + "nodeType": "ExpressionStatement", + "src": "3607:26:41" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 4422, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4389, + "src": "3657:4:41", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 4423, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6845, + "src": "3663:3:41", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 4424, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "3663:10:41", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 4425, + "name": "_allowed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294, + "src": "3675:8:41", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + } + }, + "id": 4427, + "indexExpression": { + "argumentTypes": null, + "id": 4426, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4389, + "src": "3684:4:41", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3675:14:41", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 4430, + "indexExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 4428, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6845, + "src": "3690:3:41", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 4429, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "3690:10:41", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3675:26:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 4421, + "name": "Approval", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5051, + "src": "3648:8:41", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 4431, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3648:54:41", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4432, + "nodeType": "EmitStatement", + "src": "3643:59:41" + }, + { + "expression": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 4433, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3719:4:41", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 4397, + "id": 4434, + "nodeType": "Return", + "src": "3712:11:41" + } + ] + }, + "documentation": "@dev Transfer tokens from one address to another.\nNote that while this function emits an Approval event, this is not required as per the specification,\nand other compliant implementations may not emit the event.\n@param from address The address which you want to send tokens from\n@param to address The address which you want to transfer to\n@param value uint256 the amount of tokens to be transferred", + "id": 4436, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "transferFrom", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4394, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4389, + "name": "from", + "nodeType": "VariableDeclaration", + "scope": 4436, + "src": "3458:12:41", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4388, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3458:7:41", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 4391, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 4436, + "src": "3472:10:41", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4390, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3472:7:41", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 4393, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 4436, + "src": "3484:13:41", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4392, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3484:7:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3457:41:41" + }, + "returnParameters": { + "id": 4397, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4396, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 4436, + "src": "3515:4:41", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 4395, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "3515:4:41", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3514:6:41" + }, + "scope": 4707, + "src": "3436:294:41", + "stateMutability": "nonpayable", + "superFunction": 5014, + "visibility": "public" + }, + { + "body": { + "id": 4484, + "nodeType": "Block", + "src": "4319:231:41", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 4450, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 4446, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4438, + "src": "4337:7:41", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 4448, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4356:1:41", + "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": 4447, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "4348:7:41", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 4449, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4348:10:41", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "4337:21:41", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 4445, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6848, + 6849 + ], + "referencedDeclaration": 6848, + "src": "4329:7:41", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 4451, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4329:30:41", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4452, + "nodeType": "ExpressionStatement", + "src": "4329:30:41" + }, + { + "expression": { + "argumentTypes": null, + "id": 4468, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 4453, + "name": "_allowed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294, + "src": "4370:8:41", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + } + }, + "id": 4457, + "indexExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 4454, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6845, + "src": "4379:3:41", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 4455, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "4379:10:41", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "4370:20:41", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 4458, + "indexExpression": { + "argumentTypes": null, + "id": 4456, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4438, + "src": "4391:7:41", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "4370:29:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 4466, + "name": "addedValue", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4440, + "src": "4436:10:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 4459, + "name": "_allowed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294, + "src": "4402:8:41", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + } + }, + "id": 4462, + "indexExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 4460, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6845, + "src": "4411:3:41", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 4461, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "4411:10:41", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "4402:20:41", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 4464, + "indexExpression": { + "argumentTypes": null, + "id": 4463, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4438, + "src": "4423:7:41", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "4402:29:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 4465, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 3461, + "src": "4402:33:41", + "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": 4467, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4402:45:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4370:77:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 4469, + "nodeType": "ExpressionStatement", + "src": "4370:77:41" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 4471, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6845, + "src": "4471:3:41", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 4472, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "4471:10:41", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 4473, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4438, + "src": "4483:7:41", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 4474, + "name": "_allowed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294, + "src": "4492:8:41", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + } + }, + "id": 4477, + "indexExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 4475, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6845, + "src": "4501:3:41", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 4476, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "4501:10:41", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "4492:20:41", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 4479, + "indexExpression": { + "argumentTypes": null, + "id": 4478, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4438, + "src": "4513:7:41", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "4492:29:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 4470, + "name": "Approval", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5051, + "src": "4462:8:41", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 4480, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4462:60:41", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4481, + "nodeType": "EmitStatement", + "src": "4457:65:41" + }, + { + "expression": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 4482, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4539:4:41", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 4444, + "id": 4483, + "nodeType": "Return", + "src": "4532:11:41" + } + ] + }, + "documentation": "@dev Increase the amount of tokens that an owner allowed to a spender.\napprove should be called when allowed_[_spender] == 0. To increment\nallowed value is better to use this function to avoid 2 calls (and wait until\nthe first transaction is mined)\nFrom MonolithDAO Token.sol\nEmits an Approval event.\n@param spender The address which will spend the funds.\n@param addedValue The amount of tokens to increase the allowance by.", + "id": 4485, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "increaseAllowance", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4441, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4438, + "name": "spender", + "nodeType": "VariableDeclaration", + "scope": 4485, + "src": "4260:15:41", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4437, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4260:7:41", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 4440, + "name": "addedValue", + "nodeType": "VariableDeclaration", + "scope": 4485, + "src": "4277:18:41", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4439, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4277:7:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4259:37:41" + }, + "returnParameters": { + "id": 4444, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4443, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 4485, + "src": "4313:4:41", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 4442, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "4313:4:41", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4312:6:41" + }, + "scope": 4707, + "src": "4233:317:41", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 4533, + "nodeType": "Block", + "src": "5149:236:41", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 4499, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 4495, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4487, + "src": "5167:7:41", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 4497, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5186:1:41", + "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": 4496, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "5178:7:41", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 4498, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5178:10:41", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "5167:21:41", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 4494, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6848, + 6849 + ], + "referencedDeclaration": 6848, + "src": "5159:7:41", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 4500, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5159:30:41", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4501, + "nodeType": "ExpressionStatement", + "src": "5159:30:41" + }, + { + "expression": { + "argumentTypes": null, + "id": 4517, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 4502, + "name": "_allowed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294, + "src": "5200:8:41", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + } + }, + "id": 4506, + "indexExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 4503, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6845, + "src": "5209:3:41", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 4504, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "5209:10:41", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "5200:20:41", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 4507, + "indexExpression": { + "argumentTypes": null, + "id": 4505, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4487, + "src": "5221:7:41", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "5200:29:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 4515, + "name": "subtractedValue", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4489, + "src": "5266:15:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 4508, + "name": "_allowed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294, + "src": "5232:8:41", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + } + }, + "id": 4511, + "indexExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 4509, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6845, + "src": "5241:3:41", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 4510, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "5241:10:41", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "5232:20:41", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 4513, + "indexExpression": { + "argumentTypes": null, + "id": 4512, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4487, + "src": "5253:7:41", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "5232:29:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 4514, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sub", + "nodeType": "MemberAccess", + "referencedDeclaration": 3437, + "src": "5232:33:41", + "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": 4516, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5232:50:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "5200:82:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 4518, + "nodeType": "ExpressionStatement", + "src": "5200:82:41" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 4520, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6845, + "src": "5306:3:41", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 4521, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "5306:10:41", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 4522, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4487, + "src": "5318:7:41", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 4523, + "name": "_allowed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294, + "src": "5327:8:41", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + } + }, + "id": 4526, + "indexExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 4524, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6845, + "src": "5336:3:41", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 4525, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "5336:10:41", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "5327:20:41", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 4528, + "indexExpression": { + "argumentTypes": null, + "id": 4527, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4487, + "src": "5348:7:41", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "5327:29:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 4519, + "name": "Approval", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5051, + "src": "5297:8:41", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 4529, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5297:60:41", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4530, + "nodeType": "EmitStatement", + "src": "5292:65:41" + }, + { + "expression": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 4531, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5374:4:41", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 4493, + "id": 4532, + "nodeType": "Return", + "src": "5367:11:41" + } + ] + }, + "documentation": "@dev Decrease the amount of tokens that an owner allowed to a spender.\napprove should be called when allowed_[_spender] == 0. To decrement\nallowed value is better to use this function to avoid 2 calls (and wait until\nthe first transaction is mined)\nFrom MonolithDAO Token.sol\nEmits an Approval event.\n@param spender The address which will spend the funds.\n@param subtractedValue The amount of tokens to decrease the allowance by.", + "id": 4534, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "decreaseAllowance", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4490, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4487, + "name": "spender", + "nodeType": "VariableDeclaration", + "scope": 4534, + "src": "5085:15:41", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4486, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5085:7:41", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 4489, + "name": "subtractedValue", + "nodeType": "VariableDeclaration", + "scope": 4534, + "src": "5102:23:41", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4488, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5102:7:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "5084:42:41" + }, + "returnParameters": { + "id": 4493, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4492, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 4534, + "src": "5143:4:41", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 4491, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "5143:4:41", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "5142:6:41" + }, + "scope": 4707, + "src": "5058:327:41", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 4579, + "nodeType": "Block", + "src": "5668:187:41", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 4548, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 4544, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4538, + "src": "5686:2:41", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 4546, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5700:1:41", + "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": 4545, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "5692:7:41", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 4547, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5692:10:41", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "5686:16:41", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 4543, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6848, + 6849 + ], + "referencedDeclaration": 6848, + "src": "5678:7:41", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 4549, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5678:25:41", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4550, + "nodeType": "ExpressionStatement", + "src": "5678:25:41" + }, + { + "expression": { + "argumentTypes": null, + "id": 4560, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 4551, + "name": "_balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4288, + "src": "5714:9:41", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 4553, + "indexExpression": { + "argumentTypes": null, + "id": 4552, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4536, + "src": "5724:4:41", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "5714:15:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 4558, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4540, + "src": "5752:5:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 4554, + "name": "_balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4288, + "src": "5732:9:41", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 4556, + "indexExpression": { + "argumentTypes": null, + "id": 4555, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4536, + "src": "5742:4:41", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "5732:15:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 4557, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sub", + "nodeType": "MemberAccess", + "referencedDeclaration": 3437, + "src": "5732:19:41", + "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": 4559, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5732:26:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "5714:44:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 4561, + "nodeType": "ExpressionStatement", + "src": "5714:44:41" + }, + { + "expression": { + "argumentTypes": null, + "id": 4571, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 4562, + "name": "_balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4288, + "src": "5768:9:41", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 4564, + "indexExpression": { + "argumentTypes": null, + "id": 4563, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4538, + "src": "5778:2:41", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "5768:13:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 4569, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4540, + "src": "5802:5:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 4565, + "name": "_balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4288, + "src": "5784:9:41", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 4567, + "indexExpression": { + "argumentTypes": null, + "id": 4566, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4538, + "src": "5794:2:41", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "5784:13:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 4568, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 3461, + "src": "5784:17:41", + "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": 4570, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5784:24:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "5768:40:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 4572, + "nodeType": "ExpressionStatement", + "src": "5768:40:41" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 4574, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4536, + "src": "5832:4:41", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 4575, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4538, + "src": "5838:2:41", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 4576, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4540, + "src": "5842:5:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 4573, + "name": "Transfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5043, + "src": "5823:8:41", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 4577, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5823:25:41", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4578, + "nodeType": "EmitStatement", + "src": "5818:30:41" + } + ] + }, + "documentation": "@dev Transfer token for a specified addresses\n@param from The address to transfer from.\n@param to The address to transfer to.\n@param value The amount to be transferred.", + "id": 4580, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_transfer", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4541, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4536, + "name": "from", + "nodeType": "VariableDeclaration", + "scope": 4580, + "src": "5618:12:41", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4535, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5618:7:41", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 4538, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 4580, + "src": "5632:10:41", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4537, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5632:7:41", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 4540, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 4580, + "src": "5644:13:41", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4539, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5644:7:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "5617:41:41" + }, + "returnParameters": { + "id": 4542, + "nodeType": "ParameterList", + "parameters": [], + "src": "5668:0:41" + }, + "scope": 4707, + "src": "5599:256:41", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 4621, + "nodeType": "Block", + "src": "6254:207:41", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 4592, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 4588, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4582, + "src": "6272:7:41", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 4590, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6291:1:41", + "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": 4589, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "6283:7:41", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 4591, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6283:10:41", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "6272:21:41", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 4587, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6848, + 6849 + ], + "referencedDeclaration": 6848, + "src": "6264:7:41", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 4593, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6264:30:41", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4594, + "nodeType": "ExpressionStatement", + "src": "6264:30:41" + }, + { + "expression": { + "argumentTypes": null, + "id": 4600, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 4595, + "name": "_totalSupply", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4296, + "src": "6305:12:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 4598, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4584, + "src": "6337:5:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 4596, + "name": "_totalSupply", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4296, + "src": "6320:12:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 4597, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 3461, + "src": "6320:16:41", + "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": 4599, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6320:23:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "6305:38:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 4601, + "nodeType": "ExpressionStatement", + "src": "6305:38:41" + }, + { + "expression": { + "argumentTypes": null, + "id": 4611, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 4602, + "name": "_balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4288, + "src": "6353:9:41", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 4604, + "indexExpression": { + "argumentTypes": null, + "id": 4603, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4582, + "src": "6363:7:41", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "6353:18:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 4609, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4584, + "src": "6397:5:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 4605, + "name": "_balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4288, + "src": "6374:9:41", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 4607, + "indexExpression": { + "argumentTypes": null, + "id": 4606, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4582, + "src": "6384:7:41", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "6374:18:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 4608, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 3461, + "src": "6374:22:41", + "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": 4610, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6374:29:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "6353:50:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 4612, + "nodeType": "ExpressionStatement", + "src": "6353:50:41" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 4615, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6435:1:41", + "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": 4614, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "6427:7:41", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 4616, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6427:10:41", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 4617, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4582, + "src": "6439:7:41", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 4618, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4584, + "src": "6448:5:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 4613, + "name": "Transfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5043, + "src": "6418:8:41", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 4619, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6418:36:41", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4620, + "nodeType": "EmitStatement", + "src": "6413:41:41" + } + ] + }, + "documentation": "@dev Internal function that mints an amount of the token and assigns it to\nan account. This encapsulates the modification of balances such that the\nproper events are emitted.\n@param account The account that will receive the created tokens.\n@param value The amount that will be created.", + "id": 4622, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_mint", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4585, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4582, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 4622, + "src": "6213:15:41", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4581, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6213:7:41", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 4584, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 4622, + "src": "6230:13:41", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4583, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6230:7:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "6212:32:41" + }, + "returnParameters": { + "id": 4586, + "nodeType": "ParameterList", + "parameters": [], + "src": "6254:0:41" + }, + "scope": 4707, + "src": "6198:263:41", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 4663, + "nodeType": "Block", + "src": "6743:207:41", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 4634, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 4630, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4624, + "src": "6761:7:41", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 4632, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6780:1:41", + "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": 4631, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "6772:7:41", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 4633, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6772:10:41", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "6761:21:41", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 4629, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6848, + 6849 + ], + "referencedDeclaration": 6848, + "src": "6753:7:41", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 4635, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6753:30:41", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4636, + "nodeType": "ExpressionStatement", + "src": "6753:30:41" + }, + { + "expression": { + "argumentTypes": null, + "id": 4642, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 4637, + "name": "_totalSupply", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4296, + "src": "6794:12:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 4640, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4626, + "src": "6826:5:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 4638, + "name": "_totalSupply", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4296, + "src": "6809:12:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 4639, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sub", + "nodeType": "MemberAccess", + "referencedDeclaration": 3437, + "src": "6809:16:41", + "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": 4641, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6809:23:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "6794:38:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 4643, + "nodeType": "ExpressionStatement", + "src": "6794:38:41" + }, + { + "expression": { + "argumentTypes": null, + "id": 4653, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 4644, + "name": "_balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4288, + "src": "6842:9:41", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 4646, + "indexExpression": { + "argumentTypes": null, + "id": 4645, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4624, + "src": "6852:7:41", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "6842:18:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 4651, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4626, + "src": "6886:5:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 4647, + "name": "_balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4288, + "src": "6863:9:41", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 4649, + "indexExpression": { + "argumentTypes": null, + "id": 4648, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4624, + "src": "6873:7:41", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "6863:18:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 4650, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sub", + "nodeType": "MemberAccess", + "referencedDeclaration": 3437, + "src": "6863:22:41", + "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": 4652, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6863:29:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "6842:50:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 4654, + "nodeType": "ExpressionStatement", + "src": "6842:50:41" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 4656, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4624, + "src": "6916:7:41", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 4658, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6933:1:41", + "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": 4657, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "6925:7:41", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 4659, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6925:10:41", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 4660, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4626, + "src": "6937:5:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 4655, + "name": "Transfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5043, + "src": "6907:8:41", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 4661, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6907:36:41", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4662, + "nodeType": "EmitStatement", + "src": "6902:41:41" + } + ] + }, + "documentation": "@dev Internal function that burns an amount of the token of a given\naccount.\n@param account The account whose tokens will be burnt.\n@param value The amount that will be burnt.", + "id": 4664, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_burn", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4627, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4624, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 4664, + "src": "6702:15:41", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4623, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6702:7:41", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 4626, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 4664, + "src": "6719:13:41", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4625, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6719:7:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "6701:32:41" + }, + "returnParameters": { + "id": 4628, + "nodeType": "ParameterList", + "parameters": [], + "src": "6743:0:41" + }, + "scope": 4707, + "src": "6687:263:41", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 4705, + "nodeType": "Block", + "src": "7399:195:41", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 4686, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 4671, + "name": "_allowed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294, + "src": "7409:8:41", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + } + }, + "id": 4675, + "indexExpression": { + "argumentTypes": null, + "id": 4672, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4666, + "src": "7418:7:41", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "7409:17:41", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 4676, + "indexExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 4673, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6845, + "src": "7427:3:41", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 4674, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "7427:10:41", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "7409:29:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 4684, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4668, + "src": "7475:5:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 4677, + "name": "_allowed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294, + "src": "7441:8:41", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + } + }, + "id": 4679, + "indexExpression": { + "argumentTypes": null, + "id": 4678, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4666, + "src": "7450:7:41", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "7441:17:41", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 4682, + "indexExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 4680, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6845, + "src": "7459:3:41", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 4681, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "7459:10:41", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "7441:29:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 4683, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sub", + "nodeType": "MemberAccess", + "referencedDeclaration": 3437, + "src": "7441:33:41", + "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": 4685, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7441:40:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "7409:72:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 4687, + "nodeType": "ExpressionStatement", + "src": "7409:72:41" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 4689, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4666, + "src": "7497:7:41", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 4690, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4668, + "src": "7506:5:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 4688, + "name": "_burn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4664, + "src": "7491:5:41", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 4691, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7491:21:41", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4692, + "nodeType": "ExpressionStatement", + "src": "7491:21:41" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 4694, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4666, + "src": "7536:7:41", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 4695, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6845, + "src": "7545:3:41", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 4696, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "7545:10:41", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 4697, + "name": "_allowed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294, + "src": "7557:8:41", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + } + }, + "id": 4699, + "indexExpression": { + "argumentTypes": null, + "id": 4698, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4666, + "src": "7566:7:41", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "7557:17:41", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 4702, + "indexExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 4700, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6845, + "src": "7575:3:41", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 4701, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "7575:10:41", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "7557:29:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 4693, + "name": "Approval", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5051, + "src": "7527:8:41", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 4703, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7527:60:41", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4704, + "nodeType": "EmitStatement", + "src": "7522:65:41" + } + ] + }, + "documentation": "@dev Internal function that burns an amount of the token of a given\naccount, deducting from the sender's allowance for said account. Uses the\ninternal burn function.\nEmits an Approval event (reflecting the reduced allowance).\n@param account The account whose tokens will be burnt.\n@param value The amount that will be burnt.", + "id": 4706, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_burnFrom", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4669, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4666, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 4706, + "src": "7358:15:41", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4665, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7358:7:41", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 4668, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 4706, + "src": "7375:13:41", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4667, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7375:7:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "7357:32:41" + }, + "returnParameters": { + "id": 4670, + "nodeType": "ParameterList", + "parameters": [], + "src": "7399:0:41" + }, + "scope": 4707, + "src": "7339:255:41", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + } + ], + "scope": 4708, + "src": "649:6947:41" + } + ], + "src": "0:7597:41" + }, + "compiler": { + "name": "solc", + "version": "0.5.0+commit.1d4f565a.Emscripten.clang" + }, + "networks": {}, + "schemaVersion": "3.0.0", + "updatedAt": "2019-01-04T21:44:02.890Z", + "devdoc": { + "details": "Implementation of the basic standard token. https://github.com/ethereum/EIPs/blob/master/EIPS/eip-20.md Originally based on code by FirstBlood: https://github.com/Firstbloodio/token/blob/master/smart_contract/FirstBloodToken.sol * This implementation emits additional Approval events, allowing applications to reconstruct the allowance status for all accounts just by listening to said events. Note that this isn't required by the specification, and other compliant implementations may not do it.", + "methods": { + "allowance(address,address)": { + "details": "Function to check the amount of tokens that an owner allowed to a spender.", + "params": { + "owner": "address The address which owns the funds.", + "spender": "address The address which will spend the funds." + }, + "return": "A uint256 specifying the amount of tokens still available for the spender." + }, + "approve(address,uint256)": { + "details": "Approve the passed address to spend the specified amount of tokens on behalf of msg.sender. Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729", + "params": { + "spender": "The address which will spend the funds.", + "value": "The amount of tokens to be spent." + } + }, + "balanceOf(address)": { + "details": "Gets the balance of the specified address.", + "params": { + "owner": "The address to query the balance of." + }, + "return": "An uint256 representing the amount owned by the passed address." + }, + "decreaseAllowance(address,uint256)": { + "details": "Decrease the amount of tokens that an owner allowed to a spender. approve should be called when allowed_[_spender] == 0. To decrement allowed value is better to use this function to avoid 2 calls (and wait until the first transaction is mined) From MonolithDAO Token.sol Emits an Approval event.", + "params": { + "spender": "The address which will spend the funds.", + "subtractedValue": "The amount of tokens to decrease the allowance by." + } + }, + "increaseAllowance(address,uint256)": { + "details": "Increase the amount of tokens that an owner allowed to a spender. approve should be called when allowed_[_spender] == 0. To increment allowed value is better to use this function to avoid 2 calls (and wait until the first transaction is mined) From MonolithDAO Token.sol Emits an Approval event.", + "params": { + "addedValue": "The amount of tokens to increase the allowance by.", + "spender": "The address which will spend the funds." + } + }, + "totalSupply()": { + "details": "Total number of tokens in existence" + }, + "transfer(address,uint256)": { + "details": "Transfer token for a specified address", + "params": { + "to": "The address to transfer to.", + "value": "The amount to be transferred." + } + }, + "transferFrom(address,address,uint256)": { + "details": "Transfer tokens from one address to another. Note that while this function emits an Approval event, this is not required as per the specification, and other compliant implementations may not emit the event.", + "params": { + "from": "address The address which you want to send tokens from", + "to": "address The address which you want to transfer to", + "value": "uint256 the amount of tokens to be transferred" + } + } + }, + "title": "Standard ERC20 token" + }, + "userdoc": { + "methods": {} + } +} \ No newline at end of file diff --git a/node_modules/openzeppelin-solidity/build/contracts/ERC20Burnable.json b/node_modules/openzeppelin-solidity/build/contracts/ERC20Burnable.json new file mode 100644 index 0000000..b251b0d --- /dev/null +++ b/node_modules/openzeppelin-solidity/build/contracts/ERC20Burnable.json @@ -0,0 +1,1107 @@ +{ + "contractName": "ERC20Burnable", + "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": false, + "inputs": [ + { + "name": "spender", + "type": "address" + }, + { + "name": "addedValue", + "type": "uint256" + } + ], + "name": "increaseAllowance", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "owner", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "spender", + "type": "address" + }, + { + "name": "subtractedValue", + "type": "uint256" + } + ], + "name": "decreaseAllowance", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "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" + }, + { + "constant": false, + "inputs": [ + { + "name": "value", + "type": "uint256" + } + ], + "name": "burn", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "from", + "type": "address" + }, + { + "name": "value", + "type": "uint256" + } + ], + "name": "burnFrom", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x608060405234801561001057600080fd5b506112ee806100206000396000f3fe6080604052600436106100a4576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063095ea7b3146100a957806318160ddd1461011c57806323b872dd1461014757806339509351146101da57806342966c681461024d57806370a082311461028857806379cc6790146102ed578063a457c2d714610348578063a9059cbb146103bb578063dd62ed3e1461042e575b600080fd5b3480156100b557600080fd5b50610102600480360360408110156100cc57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506104b3565b604051808215151515815260200191505060405180910390f35b34801561012857600080fd5b506101316105e0565b6040518082815260200191505060405180910390f35b34801561015357600080fd5b506101c06004803603606081101561016a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506105ea565b604051808215151515815260200191505060405180910390f35b3480156101e657600080fd5b50610233600480360360408110156101fd57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506107f2565b604051808215151515815260200191505060405180910390f35b34801561025957600080fd5b506102866004803603602081101561027057600080fd5b8101908080359060200190929190505050610a29565b005b34801561029457600080fd5b506102d7600480360360208110156102ab57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610a36565b6040518082815260200191505060405180910390f35b3480156102f957600080fd5b506103466004803603604081101561031057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610a7e565b005b34801561035457600080fd5b506103a16004803603604081101561036b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610a8c565b604051808215151515815260200191505060405180910390f35b3480156103c757600080fd5b50610414600480360360408110156103de57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610cc3565b604051808215151515815260200191505060405180910390f35b34801561043a57600080fd5b5061049d6004803603604081101561045157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610cda565b6040518082815260200191505060405180910390f35b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141515156104f057600080fd5b81600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b6000600254905090565b600061067b82600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610d6190919063ffffffff16565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610706848484610d83565b3373ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a3600190509392505050565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415151561082f57600080fd5b6108be82600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610f4f90919063ffffffff16565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a36001905092915050565b610a333382610f70565b50565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610a8882826110c4565b5050565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614151515610ac957600080fd5b610b5882600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610d6190919063ffffffff16565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a36001905092915050565b6000610cd0338484610d83565b6001905092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000828211151515610d7257600080fd5b600082840390508091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614151515610dbf57600080fd5b610e10816000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610d6190919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610ea3816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610f4f90919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b6000808284019050838110151515610f6657600080fd5b8091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614151515610fac57600080fd5b610fc181600254610d6190919063ffffffff16565b600281905550611018816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610d6190919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b61115381600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610d6190919063ffffffff16565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506111dd8282610f70565b3373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a3505056fea165627a7a72305820a57c5c3304c0ed25217e2cb9830b7d0e1ddc13cd6cce4d6d84b88a63c75978970029", + "deployedBytecode": "0x6080604052600436106100a4576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063095ea7b3146100a957806318160ddd1461011c57806323b872dd1461014757806339509351146101da57806342966c681461024d57806370a082311461028857806379cc6790146102ed578063a457c2d714610348578063a9059cbb146103bb578063dd62ed3e1461042e575b600080fd5b3480156100b557600080fd5b50610102600480360360408110156100cc57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506104b3565b604051808215151515815260200191505060405180910390f35b34801561012857600080fd5b506101316105e0565b6040518082815260200191505060405180910390f35b34801561015357600080fd5b506101c06004803603606081101561016a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506105ea565b604051808215151515815260200191505060405180910390f35b3480156101e657600080fd5b50610233600480360360408110156101fd57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506107f2565b604051808215151515815260200191505060405180910390f35b34801561025957600080fd5b506102866004803603602081101561027057600080fd5b8101908080359060200190929190505050610a29565b005b34801561029457600080fd5b506102d7600480360360208110156102ab57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610a36565b6040518082815260200191505060405180910390f35b3480156102f957600080fd5b506103466004803603604081101561031057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610a7e565b005b34801561035457600080fd5b506103a16004803603604081101561036b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610a8c565b604051808215151515815260200191505060405180910390f35b3480156103c757600080fd5b50610414600480360360408110156103de57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610cc3565b604051808215151515815260200191505060405180910390f35b34801561043a57600080fd5b5061049d6004803603604081101561045157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610cda565b6040518082815260200191505060405180910390f35b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141515156104f057600080fd5b81600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b6000600254905090565b600061067b82600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610d6190919063ffffffff16565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610706848484610d83565b3373ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a3600190509392505050565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415151561082f57600080fd5b6108be82600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610f4f90919063ffffffff16565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a36001905092915050565b610a333382610f70565b50565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610a8882826110c4565b5050565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614151515610ac957600080fd5b610b5882600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610d6190919063ffffffff16565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a36001905092915050565b6000610cd0338484610d83565b6001905092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000828211151515610d7257600080fd5b600082840390508091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614151515610dbf57600080fd5b610e10816000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610d6190919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610ea3816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610f4f90919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b6000808284019050838110151515610f6657600080fd5b8091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614151515610fac57600080fd5b610fc181600254610d6190919063ffffffff16565b600281905550611018816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610d6190919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b61115381600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610d6190919063ffffffff16565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506111dd8282610f70565b3373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a3505056fea165627a7a72305820a57c5c3304c0ed25217e2cb9830b7d0e1ddc13cd6cce4d6d84b88a63c75978970029", + "sourceMap": "140:579:42:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;140:579:42;;;;;;;", + "deployedSourceMap": "140:579:42:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2735:238:41;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2735:238:41;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2735:238:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;936:89;;8:9:-1;5:2;;;30:1;27;20:12;5:2;936:89:41;;;;;;;;;;;;;;;;;;;;;;;3436:294;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3436:294:41;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3436:294:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4233:317;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4233:317:41;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4233:317:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;295:77:42;;8:9:-1;5:2;;;30:1;27;20:12;5:2;295:77:42;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;295:77:42;;;;;;;;;;;;;;;;;;;;1234:104:41;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1234:104:41;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1234:104:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;624:93:42;;8:9:-1;5:2;;;30:1;27;20:12;5:2;624:93:42;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;624:93:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5058:327:41;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5058:327:41;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;5058:327:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1962:137;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1962:137:41;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1962:137:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1669:129;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1669:129:41;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1669:129:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2735:238;2800:4;2843:1;2824:21;;:7;:21;;;;2816:30;;;;;;;;2889:5;2857:8;:20;2866:10;2857:20;;;;;;;;;;;;;;;:29;2878:7;2857:29;;;;;;;;;;;;;;;:37;;;;2930:7;2909:36;;2918:10;2909:36;;;2939:5;2909:36;;;;;;;;;;;;;;;;;;2962:4;2955:11;;2735:238;;;;:::o;936:89::-;980:7;1006:12;;999:19;;936:89;:::o;3436:294::-;3515:4;3560:37;3591:5;3560:8;:14;3569:4;3560:14;;;;;;;;;;;;;;;:26;3575:10;3560:26;;;;;;;;;;;;;;;;:30;;:37;;;;:::i;:::-;3531:8;:14;3540:4;3531:14;;;;;;;;;;;;;;;:26;3546:10;3531:26;;;;;;;;;;;;;;;:66;;;;3607:26;3617:4;3623:2;3627:5;3607:9;:26::i;:::-;3663:10;3648:54;;3657:4;3648:54;;;3675:8;:14;3684:4;3675:14;;;;;;;;;;;;;;;:26;3690:10;3675:26;;;;;;;;;;;;;;;;3648:54;;;;;;;;;;;;;;;;;;3719:4;3712:11;;3436:294;;;;;:::o;4233:317::-;4313:4;4356:1;4337:21;;:7;:21;;;;4329:30;;;;;;;;4402:45;4436:10;4402:8;:20;4411:10;4402:20;;;;;;;;;;;;;;;:29;4423:7;4402:29;;;;;;;;;;;;;;;;:33;;:45;;;;:::i;:::-;4370:8;:20;4379:10;4370:20;;;;;;;;;;;;;;;:29;4391:7;4370:29;;;;;;;;;;;;;;;:77;;;;4483:7;4462:60;;4471:10;4462:60;;;4492:8;:20;4501:10;4492:20;;;;;;;;;;;;;;;:29;4513:7;4492:29;;;;;;;;;;;;;;;;4462:60;;;;;;;;;;;;;;;;;;4539:4;4532:11;;4233:317;;;;:::o;295:77:42:-;341:24;347:10;359:5;341;:24::i;:::-;295:77;:::o;1234:104:41:-;1289:7;1315:9;:16;1325:5;1315:16;;;;;;;;;;;;;;;;1308:23;;1234:104;;;:::o;624:93:42:-;688:22;698:4;704:5;688:9;:22::i;:::-;624:93;;:::o;5058:327:41:-;5143:4;5186:1;5167:21;;:7;:21;;;;5159:30;;;;;;;;5232:50;5266:15;5232:8;:20;5241:10;5232:20;;;;;;;;;;;;;;;:29;5253:7;5232:29;;;;;;;;;;;;;;;;:33;;:50;;;;:::i;:::-;5200:8;:20;5209:10;5200:20;;;;;;;;;;;;;;;:29;5221:7;5200:29;;;;;;;;;;;;;;;:82;;;;5318:7;5297:60;;5306:10;5297:60;;;5327:8;:20;5336:10;5327:20;;;;;;;;;;;;;;;:29;5348:7;5327:29;;;;;;;;;;;;;;;;5297:60;;;;;;;;;;;;;;;;;;5374:4;5367:11;;5058:327;;;;:::o;1962:137::-;2023:4;2039:32;2049:10;2061:2;2065:5;2039:9;:32::i;:::-;2088:4;2081:11;;1962:137;;;;:::o;1669:129::-;1741:7;1767:8;:15;1776:5;1767:15;;;;;;;;;;;;;;;:24;1783:7;1767:24;;;;;;;;;;;;;;;;1760:31;;1669:129;;;;:::o;1205:145:33:-;1263:7;1295:1;1290;:6;;1282:15;;;;;;;;1307:9;1323:1;1319;:5;1307:17;;1342:1;1335:8;;;1205:145;;;;:::o;5599:256:41:-;5700:1;5686:16;;:2;:16;;;;5678:25;;;;;;;;5732:26;5752:5;5732:9;:15;5742:4;5732:15;;;;;;;;;;;;;;;;:19;;:26;;;;:::i;:::-;5714:9;:15;5724:4;5714:15;;;;;;;;;;;;;;;:44;;;;5784:24;5802:5;5784:9;:13;5794:2;5784:13;;;;;;;;;;;;;;;;:17;;:24;;;;:::i;:::-;5768:9;:13;5778:2;5768:13;;;;;;;;;;;;;;;:40;;;;5838:2;5823:25;;5832:4;5823:25;;;5842:5;5823:25;;;;;;;;;;;;;;;;;;5599:256;;;:::o;1431:145:33:-;1489:7;1508:9;1524:1;1520;:5;1508:17;;1548:1;1543;:6;;1535:15;;;;;;;;1568:1;1561:8;;;1431:145;;;;:::o;6687:263:41:-;6780:1;6761:21;;:7;:21;;;;6753:30;;;;;;;;6809:23;6826:5;6809:12;;:16;;:23;;;;:::i;:::-;6794:12;:38;;;;6863:29;6886:5;6863:9;:18;6873:7;6863:18;;;;;;;;;;;;;;;;:22;;:29;;;;:::i;:::-;6842:9;:18;6852:7;6842:18;;;;;;;;;;;;;;;:50;;;;6933:1;6907:36;;6916:7;6907:36;;;6937:5;6907:36;;;;;;;;;;;;;;;;;;6687:263;;:::o;7339:255::-;7441:40;7475:5;7441:8;:17;7450:7;7441:17;;;;;;;;;;;;;;;:29;7459:10;7441:29;;;;;;;;;;;;;;;;:33;;:40;;;;:::i;:::-;7409:8;:17;7418:7;7409:17;;;;;;;;;;;;;;;:29;7427:10;7409:29;;;;;;;;;;;;;;;:72;;;;7491:21;7497:7;7506:5;7491;:21::i;:::-;7545:10;7527:60;;7536:7;7527:60;;;7557:8;:17;7566:7;7557:17;;;;;;;;;;;;;;;:29;7575:10;7557:29;;;;;;;;;;;;;;;;7527:60;;;;;;;;;;;;;;;;;;7339:255;;:::o", + "source": "pragma solidity ^0.5.0;\n\nimport \"./ERC20.sol\";\n\n/**\n * @title Burnable Token\n * @dev Token that can be irreversibly burned (destroyed).\n */\ncontract ERC20Burnable is ERC20 {\n /**\n * @dev Burns a specific amount of tokens.\n * @param value The amount of token to be burned.\n */\n function burn(uint256 value) public {\n _burn(msg.sender, value);\n }\n\n /**\n * @dev Burns a specific amount of tokens from the target address and decrements allowance\n * @param from address The address which you want to send tokens from\n * @param value uint256 The amount of token to be burned\n */\n function burnFrom(address from, uint256 value) public {\n _burnFrom(from, value);\n }\n}\n", + "sourcePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/token/ERC20/ERC20Burnable.sol", + "ast": { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/token/ERC20/ERC20Burnable.sol", + "exportedSymbols": { + "ERC20Burnable": [ + 4738 + ] + }, + "id": 4739, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 4709, + "literals": [ + "solidity", + "^", + "0.5", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "0:23:42" + }, + { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/token/ERC20/ERC20.sol", + "file": "./ERC20.sol", + "id": 4710, + "nodeType": "ImportDirective", + "scope": 4739, + "sourceUnit": 4708, + "src": "25:21:42", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 4711, + "name": "ERC20", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 4707, + "src": "166:5:42", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20_$4707", + "typeString": "contract ERC20" + } + }, + "id": 4712, + "nodeType": "InheritanceSpecifier", + "src": "166:5:42" + } + ], + "contractDependencies": [ + 4707, + 5052 + ], + "contractKind": "contract", + "documentation": "@title Burnable Token\n@dev Token that can be irreversibly burned (destroyed).", + "fullyImplemented": true, + "id": 4738, + "linearizedBaseContracts": [ + 4738, + 4707, + 5052 + ], + "name": "ERC20Burnable", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": { + "id": 4723, + "nodeType": "Block", + "src": "331:41:42", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 4718, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6845, + "src": "347:3:42", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 4719, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "347:10:42", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 4720, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4714, + "src": "359:5:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 4717, + "name": "_burn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4664, + "src": "341:5:42", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 4721, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "341:24:42", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4722, + "nodeType": "ExpressionStatement", + "src": "341:24:42" + } + ] + }, + "documentation": "@dev Burns a specific amount of tokens.\n@param value The amount of token to be burned.", + "id": 4724, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "burn", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4715, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4714, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 4724, + "src": "309:13:42", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4713, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "309:7:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "308:15:42" + }, + "returnParameters": { + "id": 4716, + "nodeType": "ParameterList", + "parameters": [], + "src": "331:0:42" + }, + "scope": 4738, + "src": "295:77:42", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 4736, + "nodeType": "Block", + "src": "678:39:42", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 4732, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4726, + "src": "698:4:42", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 4733, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4728, + "src": "704:5:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 4731, + "name": "_burnFrom", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4706, + "src": "688:9:42", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 4734, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "688:22:42", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4735, + "nodeType": "ExpressionStatement", + "src": "688:22:42" + } + ] + }, + "documentation": "@dev Burns a specific amount of tokens from the target address and decrements allowance\n@param from address The address which you want to send tokens from\n@param value uint256 The amount of token to be burned", + "id": 4737, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "burnFrom", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4729, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4726, + "name": "from", + "nodeType": "VariableDeclaration", + "scope": 4737, + "src": "642:12:42", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4725, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "642:7:42", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 4728, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 4737, + "src": "656:13:42", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4727, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "656:7:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "641:29:42" + }, + "returnParameters": { + "id": 4730, + "nodeType": "ParameterList", + "parameters": [], + "src": "678:0:42" + }, + "scope": 4738, + "src": "624:93:42", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + } + ], + "scope": 4739, + "src": "140:579:42" + } + ], + "src": "0:720:42" + }, + "legacyAST": { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/token/ERC20/ERC20Burnable.sol", + "exportedSymbols": { + "ERC20Burnable": [ + 4738 + ] + }, + "id": 4739, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 4709, + "literals": [ + "solidity", + "^", + "0.5", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "0:23:42" + }, + { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/token/ERC20/ERC20.sol", + "file": "./ERC20.sol", + "id": 4710, + "nodeType": "ImportDirective", + "scope": 4739, + "sourceUnit": 4708, + "src": "25:21:42", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 4711, + "name": "ERC20", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 4707, + "src": "166:5:42", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20_$4707", + "typeString": "contract ERC20" + } + }, + "id": 4712, + "nodeType": "InheritanceSpecifier", + "src": "166:5:42" + } + ], + "contractDependencies": [ + 4707, + 5052 + ], + "contractKind": "contract", + "documentation": "@title Burnable Token\n@dev Token that can be irreversibly burned (destroyed).", + "fullyImplemented": true, + "id": 4738, + "linearizedBaseContracts": [ + 4738, + 4707, + 5052 + ], + "name": "ERC20Burnable", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": { + "id": 4723, + "nodeType": "Block", + "src": "331:41:42", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 4718, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6845, + "src": "347:3:42", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 4719, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "347:10:42", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 4720, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4714, + "src": "359:5:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 4717, + "name": "_burn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4664, + "src": "341:5:42", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 4721, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "341:24:42", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4722, + "nodeType": "ExpressionStatement", + "src": "341:24:42" + } + ] + }, + "documentation": "@dev Burns a specific amount of tokens.\n@param value The amount of token to be burned.", + "id": 4724, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "burn", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4715, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4714, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 4724, + "src": "309:13:42", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4713, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "309:7:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "308:15:42" + }, + "returnParameters": { + "id": 4716, + "nodeType": "ParameterList", + "parameters": [], + "src": "331:0:42" + }, + "scope": 4738, + "src": "295:77:42", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 4736, + "nodeType": "Block", + "src": "678:39:42", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 4732, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4726, + "src": "698:4:42", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 4733, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4728, + "src": "704:5:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 4731, + "name": "_burnFrom", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4706, + "src": "688:9:42", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 4734, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "688:22:42", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4735, + "nodeType": "ExpressionStatement", + "src": "688:22:42" + } + ] + }, + "documentation": "@dev Burns a specific amount of tokens from the target address and decrements allowance\n@param from address The address which you want to send tokens from\n@param value uint256 The amount of token to be burned", + "id": 4737, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "burnFrom", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4729, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4726, + "name": "from", + "nodeType": "VariableDeclaration", + "scope": 4737, + "src": "642:12:42", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4725, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "642:7:42", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 4728, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 4737, + "src": "656:13:42", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4727, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "656:7:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "641:29:42" + }, + "returnParameters": { + "id": 4730, + "nodeType": "ParameterList", + "parameters": [], + "src": "678:0:42" + }, + "scope": 4738, + "src": "624:93:42", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + } + ], + "scope": 4739, + "src": "140:579:42" + } + ], + "src": "0:720:42" + }, + "compiler": { + "name": "solc", + "version": "0.5.0+commit.1d4f565a.Emscripten.clang" + }, + "networks": {}, + "schemaVersion": "3.0.0", + "updatedAt": "2019-01-04T21:44:02.891Z", + "devdoc": { + "details": "Token that can be irreversibly burned (destroyed).", + "methods": { + "allowance(address,address)": { + "details": "Function to check the amount of tokens that an owner allowed to a spender.", + "params": { + "owner": "address The address which owns the funds.", + "spender": "address The address which will spend the funds." + }, + "return": "A uint256 specifying the amount of tokens still available for the spender." + }, + "approve(address,uint256)": { + "details": "Approve the passed address to spend the specified amount of tokens on behalf of msg.sender. Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729", + "params": { + "spender": "The address which will spend the funds.", + "value": "The amount of tokens to be spent." + } + }, + "balanceOf(address)": { + "details": "Gets the balance of the specified address.", + "params": { + "owner": "The address to query the balance of." + }, + "return": "An uint256 representing the amount owned by the passed address." + }, + "burn(uint256)": { + "details": "Burns a specific amount of tokens.", + "params": { + "value": "The amount of token to be burned." + } + }, + "burnFrom(address,uint256)": { + "details": "Burns a specific amount of tokens from the target address and decrements allowance", + "params": { + "from": "address The address which you want to send tokens from", + "value": "uint256 The amount of token to be burned" + } + }, + "decreaseAllowance(address,uint256)": { + "details": "Decrease the amount of tokens that an owner allowed to a spender. approve should be called when allowed_[_spender] == 0. To decrement allowed value is better to use this function to avoid 2 calls (and wait until the first transaction is mined) From MonolithDAO Token.sol Emits an Approval event.", + "params": { + "spender": "The address which will spend the funds.", + "subtractedValue": "The amount of tokens to decrease the allowance by." + } + }, + "increaseAllowance(address,uint256)": { + "details": "Increase the amount of tokens that an owner allowed to a spender. approve should be called when allowed_[_spender] == 0. To increment allowed value is better to use this function to avoid 2 calls (and wait until the first transaction is mined) From MonolithDAO Token.sol Emits an Approval event.", + "params": { + "addedValue": "The amount of tokens to increase the allowance by.", + "spender": "The address which will spend the funds." + } + }, + "totalSupply()": { + "details": "Total number of tokens in existence" + }, + "transfer(address,uint256)": { + "details": "Transfer token for a specified address", + "params": { + "to": "The address to transfer to.", + "value": "The amount to be transferred." + } + }, + "transferFrom(address,address,uint256)": { + "details": "Transfer tokens from one address to another. Note that while this function emits an Approval event, this is not required as per the specification, and other compliant implementations may not emit the event.", + "params": { + "from": "address The address which you want to send tokens from", + "to": "address The address which you want to transfer to", + "value": "uint256 the amount of tokens to be transferred" + } + } + }, + "title": "Burnable Token" + }, + "userdoc": { + "methods": {} + } +} \ No newline at end of file diff --git a/node_modules/openzeppelin-solidity/build/contracts/ERC20Capped.json b/node_modules/openzeppelin-solidity/build/contracts/ERC20Capped.json new file mode 100644 index 0000000..4917e41 --- /dev/null +++ b/node_modules/openzeppelin-solidity/build/contracts/ERC20Capped.json @@ -0,0 +1,1859 @@ +{ + "contractName": "ERC20Capped", + "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": false, + "inputs": [ + { + "name": "spender", + "type": "address" + }, + { + "name": "addedValue", + "type": "uint256" + } + ], + "name": "increaseAllowance", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "to", + "type": "address" + }, + { + "name": "value", + "type": "uint256" + } + ], + "name": "mint", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "owner", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "account", + "type": "address" + } + ], + "name": "addMinter", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [], + "name": "renounceMinter", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "spender", + "type": "address" + }, + { + "name": "subtractedValue", + "type": "uint256" + } + ], + "name": "decreaseAllowance", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "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": "account", + "type": "address" + } + ], + "name": "isMinter", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "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" + }, + { + "inputs": [ + { + "name": "cap", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "account", + "type": "address" + } + ], + "name": "MinterAdded", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "account", + "type": "address" + } + ], + "name": "MinterRemoved", + "type": "event" + }, + { + "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" + }, + { + "constant": true, + "inputs": [], + "name": "cap", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + } + ], + "bytecode": "0x60806040523480156200001157600080fd5b5060405160208062001778833981018060405260208110156200003357600080fd5b81019080805190602001909291905050506200005e336200007c640100000000026401000000009004565b6000811115156200006e57600080fd5b80600481905550506200023e565b620000a0816003620000e6640100000000026200139f179091906401000000009004565b8073ffffffffffffffffffffffffffffffffffffffff167f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f660405160405180910390a250565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515156200012357600080fd5b6200013e8282620001a9640100000000026401000000009004565b1515156200014b57600080fd5b60018260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614151515620001e757600080fd5b8260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b61152a806200024e6000396000f3fe6080604052600436106100c5576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063095ea7b3146100ca57806318160ddd1461013d57806323b872dd14610168578063355274ea146101fb578063395093511461022657806340c10f191461029957806370a082311461030c578063983b2d561461037157806398650275146103c2578063a457c2d7146103d9578063a9059cbb1461044c578063aa271e1a146104bf578063dd62ed3e14610528575b600080fd5b3480156100d657600080fd5b50610123600480360360408110156100ed57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506105ad565b604051808215151515815260200191505060405180910390f35b34801561014957600080fd5b506101526106da565b6040518082815260200191505060405180910390f35b34801561017457600080fd5b506101e16004803603606081101561018b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506106e4565b604051808215151515815260200191505060405180910390f35b34801561020757600080fd5b506102106108ec565b6040518082815260200191505060405180910390f35b34801561023257600080fd5b5061027f6004803603604081101561024957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506108f6565b604051808215151515815260200191505060405180910390f35b3480156102a557600080fd5b506102f2600480360360408110156102bc57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610b2d565b604051808215151515815260200191505060405180910390f35b34801561031857600080fd5b5061035b6004803603602081101561032f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610b57565b6040518082815260200191505060405180910390f35b34801561037d57600080fd5b506103c06004803603602081101561039457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610b9f565b005b3480156103ce57600080fd5b506103d7610bbf565b005b3480156103e557600080fd5b50610432600480360360408110156103fc57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610bca565b604051808215151515815260200191505060405180910390f35b34801561045857600080fd5b506104a56004803603604081101561046f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610e01565b604051808215151515815260200191505060405180910390f35b3480156104cb57600080fd5b5061050e600480360360208110156104e257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610e18565b604051808215151515815260200191505060405180910390f35b34801561053457600080fd5b506105976004803603604081101561054b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610e35565b6040518082815260200191505060405180910390f35b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141515156105ea57600080fd5b81600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b6000600254905090565b600061077582600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610ebc90919063ffffffff16565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610800848484610ede565b3373ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a3600190509392505050565b6000600454905090565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415151561093357600080fd5b6109c282600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546110aa90919063ffffffff16565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a36001905092915050565b6000610b3833610e18565b1515610b4357600080fd5b610b4d83836110cb565b6001905092915050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610ba833610e18565b1515610bb357600080fd5b610bbc81611103565b50565b610bc83361115d565b565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614151515610c0757600080fd5b610c9682600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610ebc90919063ffffffff16565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a36001905092915050565b6000610e0e338484610ede565b6001905092915050565b6000610e2e8260036111b790919063ffffffff16565b9050919050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000828211151515610ecd57600080fd5b600082840390508091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614151515610f1a57600080fd5b610f6b816000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610ebc90919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610ffe816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546110aa90919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b60008082840190508381101515156110c157600080fd5b8091505092915050565b6004546110e8826110da6106da565b6110aa90919063ffffffff16565b111515156110f557600080fd5b6110ff828261124b565b5050565b61111781600361139f90919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f660405160405180910390a250565b61117181600361144f90919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167fe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb6669260405160405180910390a250565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141515156111f457600080fd5b8260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415151561128757600080fd5b61129c816002546110aa90919063ffffffff16565b6002819055506112f3816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546110aa90919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515156113db57600080fd5b6113e582826111b7565b1515156113f157600080fd5b60018260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415151561148b57600080fd5b61149582826111b7565b15156114a057600080fd5b60008260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550505056fea165627a7a723058200bbe6f63e69d72b86de4333a3c52640e303608bc21eae18dba9d6f79c56170530029", + "deployedBytecode": "0x6080604052600436106100c5576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063095ea7b3146100ca57806318160ddd1461013d57806323b872dd14610168578063355274ea146101fb578063395093511461022657806340c10f191461029957806370a082311461030c578063983b2d561461037157806398650275146103c2578063a457c2d7146103d9578063a9059cbb1461044c578063aa271e1a146104bf578063dd62ed3e14610528575b600080fd5b3480156100d657600080fd5b50610123600480360360408110156100ed57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506105ad565b604051808215151515815260200191505060405180910390f35b34801561014957600080fd5b506101526106da565b6040518082815260200191505060405180910390f35b34801561017457600080fd5b506101e16004803603606081101561018b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506106e4565b604051808215151515815260200191505060405180910390f35b34801561020757600080fd5b506102106108ec565b6040518082815260200191505060405180910390f35b34801561023257600080fd5b5061027f6004803603604081101561024957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506108f6565b604051808215151515815260200191505060405180910390f35b3480156102a557600080fd5b506102f2600480360360408110156102bc57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610b2d565b604051808215151515815260200191505060405180910390f35b34801561031857600080fd5b5061035b6004803603602081101561032f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610b57565b6040518082815260200191505060405180910390f35b34801561037d57600080fd5b506103c06004803603602081101561039457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610b9f565b005b3480156103ce57600080fd5b506103d7610bbf565b005b3480156103e557600080fd5b50610432600480360360408110156103fc57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610bca565b604051808215151515815260200191505060405180910390f35b34801561045857600080fd5b506104a56004803603604081101561046f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610e01565b604051808215151515815260200191505060405180910390f35b3480156104cb57600080fd5b5061050e600480360360208110156104e257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610e18565b604051808215151515815260200191505060405180910390f35b34801561053457600080fd5b506105976004803603604081101561054b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610e35565b6040518082815260200191505060405180910390f35b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141515156105ea57600080fd5b81600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b6000600254905090565b600061077582600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610ebc90919063ffffffff16565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610800848484610ede565b3373ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a3600190509392505050565b6000600454905090565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415151561093357600080fd5b6109c282600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546110aa90919063ffffffff16565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a36001905092915050565b6000610b3833610e18565b1515610b4357600080fd5b610b4d83836110cb565b6001905092915050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610ba833610e18565b1515610bb357600080fd5b610bbc81611103565b50565b610bc83361115d565b565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614151515610c0757600080fd5b610c9682600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610ebc90919063ffffffff16565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a36001905092915050565b6000610e0e338484610ede565b6001905092915050565b6000610e2e8260036111b790919063ffffffff16565b9050919050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000828211151515610ecd57600080fd5b600082840390508091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614151515610f1a57600080fd5b610f6b816000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610ebc90919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610ffe816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546110aa90919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b60008082840190508381101515156110c157600080fd5b8091505092915050565b6004546110e8826110da6106da565b6110aa90919063ffffffff16565b111515156110f557600080fd5b6110ff828261124b565b5050565b61111781600361139f90919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f660405160405180910390a250565b61117181600361144f90919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167fe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb6669260405160405180910390a250565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141515156111f457600080fd5b8260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415151561128757600080fd5b61129c816002546110aa90919063ffffffff16565b6002819055506112f3816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546110aa90919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515156113db57600080fd5b6113e582826111b7565b1515156113f157600080fd5b60018260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415151561148b57600080fd5b61149582826111b7565b15156114a057600080fd5b60008260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550505056fea165627a7a723058200bbe6f63e69d72b86de4333a3c52640e303608bc21eae18dba9d6f79c56170530029", + "sourceMap": "128:457:43:-;;;199:86;8:9:-1;5:2;;;30:1;27;20:12;5:2;199:86:43;;;;;;;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;199:86:43;;;;;;;;;;;;;;;;275:22:2;286:10;275;;;:22;;;:::i;:::-;256:1:43;250:3;:7;242:16;;;;;;;;275:3;268:4;:10;;;;199:86;128:457;;685:119:2;741:21;754:7;741:8;:12;;;;;;:21;;;;;:::i;:::-;789:7;777:20;;;;;;;;;;;;685:119;:::o;259:181:0:-;354:1;335:21;;:7;:21;;;;327:30;;;;;;;;376:18;380:4;386:7;376:3;;;:18;;;:::i;:::-;375:19;367:28;;;;;;;;429:4;406;:11;;:20;418:7;406:20;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;259:181;;:::o;786:162::-;858:4;901:1;882:21;;:7;:21;;;;874:30;;;;;;;;921:4;:11;;:20;933:7;921:20;;;;;;;;;;;;;;;;;;;;;;;;;914:27;;786:162;;;;:::o;128:457:43:-;;;;;;;", + "deployedSourceMap": "128:457:43:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2735:238:41;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2735:238:41;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2735:238:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;936:89;;8:9:-1;5:2;;;30:1;27;20:12;5:2;936:89:41;;;;;;;;;;;;;;;;;;;;;;;3436:294;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3436:294:41;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3436:294:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;353:73:43;;8:9:-1;5:2;;;30:1;27;20:12;5:2;353:73:43;;;;;;;;;;;;;;;;;;;;;;;4233:317:41;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4233:317:41;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4233:317:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;443:128:45;;8:9:-1;5:2;;;30:1;27;20:12;5:2;443:128:45;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;443:128:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1234:104:41;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1234:104:41;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1234:104:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;508:90:2;;8:9:-1;5:2;;;30:1;27;20:12;5:2;508:90:2;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;508:90:2;;;;;;;;;;;;;;;;;;;;;;604:75;;8:9:-1;5:2;;;30:1;27;20:12;5:2;604:75:2;;;;;;5058:327:41;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5058:327:41;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;5058:327:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1962:137;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1962:137:41;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1962:137:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;395:107:2;;8:9:-1;5:2;;;30:1;27;20:12;5:2;395:107:2;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;395:107:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1669:129:41;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1669:129:41;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1669:129:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2735:238;2800:4;2843:1;2824:21;;:7;:21;;;;2816:30;;;;;;;;2889:5;2857:8;:20;2866:10;2857:20;;;;;;;;;;;;;;;:29;2878:7;2857:29;;;;;;;;;;;;;;;:37;;;;2930:7;2909:36;;2918:10;2909:36;;;2939:5;2909:36;;;;;;;;;;;;;;;;;;2962:4;2955:11;;2735:238;;;;:::o;936:89::-;980:7;1006:12;;999:19;;936:89;:::o;3436:294::-;3515:4;3560:37;3591:5;3560:8;:14;3569:4;3560:14;;;;;;;;;;;;;;;:26;3575:10;3560:26;;;;;;;;;;;;;;;;:30;;:37;;;;:::i;:::-;3531:8;:14;3540:4;3531:14;;;;;;;;;;;;;;;:26;3546:10;3531:26;;;;;;;;;;;;;;;:66;;;;3607:26;3617:4;3623:2;3627:5;3607:9;:26::i;:::-;3663:10;3648:54;;3657:4;3648:54;;;3675:8;:14;3684:4;3675:14;;;;;;;;;;;;;;;:26;3690:10;3675:26;;;;;;;;;;;;;;;;3648:54;;;;;;;;;;;;;;;;;;3719:4;3712:11;;3436:294;;;;;:::o;353:73:43:-;389:7;415:4;;408:11;;353:73;:::o;4233:317:41:-;4313:4;4356:1;4337:21;;:7;:21;;;;4329:30;;;;;;;;4402:45;4436:10;4402:8;:20;4411:10;4402:20;;;;;;;;;;;;;;;:29;4423:7;4402:29;;;;;;;;;;;;;;;;:33;;:45;;;;:::i;:::-;4370:8;:20;4379:10;4370:20;;;;;;;;;;;;;;;:29;4391:7;4370:29;;;;;;;;;;;;;;;:77;;;;4483:7;4462:60;;4471:10;4462:60;;;4492:8;:20;4501:10;4492:20;;;;;;;;;;;;;;;:29;4513:7;4492:29;;;;;;;;;;;;;;;;4462:60;;;;;;;;;;;;;;;;;;4539:4;4532:11;;4233:317;;;;:::o;443:128:45:-;511:4;350:20:2;359:10;350:8;:20::i;:::-;342:29;;;;;;;;527:16:45;533:2;537:5;527;:16::i;:::-;560:4;553:11;;443:128;;;;:::o;1234:104:41:-;1289:7;1315:9;:16;1325:5;1315:16;;;;;;;;;;;;;;;;1308:23;;1234:104;;;:::o;508:90:2:-;350:20;359:10;350:8;:20::i;:::-;342:29;;;;;;;;572:19;583:7;572:10;:19::i;:::-;508:90;:::o;604:75::-;647:25;661:10;647:13;:25::i;:::-;604:75::o;5058:327:41:-;5143:4;5186:1;5167:21;;:7;:21;;;;5159:30;;;;;;;;5232:50;5266:15;5232:8;:20;5241:10;5232:20;;;;;;;;;;;;;;;:29;5253:7;5232:29;;;;;;;;;;;;;;;;:33;;:50;;;;:::i;:::-;5200:8;:20;5209:10;5200:20;;;;;;;;;;;;;;;:29;5221:7;5200:29;;;;;;;;;;;;;;;:82;;;;5318:7;5297:60;;5306:10;5297:60;;;5327:8;:20;5336:10;5327:20;;;;;;;;;;;;;;;:29;5348:7;5327:29;;;;;;;;;;;;;;;;5297:60;;;;;;;;;;;;;;;;;;5374:4;5367:11;;5058:327;;;;:::o;1962:137::-;2023:4;2039:32;2049:10;2061:2;2065:5;2039:9;:32::i;:::-;2088:4;2081:11;;1962:137;;;;:::o;395:107:2:-;451:4;474:21;487:7;474:8;:12;;:21;;;;:::i;:::-;467:28;;395:107;;;:::o;1669:129:41:-;1741:7;1767:8;:15;1776:5;1767:15;;;;;;;;;;;;;;;:24;1783:7;1767:24;;;;;;;;;;;;;;;;1760:31;;1669:129;;;;:::o;1205:145:33:-;1263:7;1295:1;1290;:6;;1282:15;;;;;;;;1307:9;1323:1;1319;:5;1307:17;;1342:1;1335:8;;;1205:145;;;;:::o;5599:256:41:-;5700:1;5686:16;;:2;:16;;;;5678:25;;;;;;;;5732:26;5752:5;5732:9;:15;5742:4;5732:15;;;;;;;;;;;;;;;;:19;;:26;;;;:::i;:::-;5714:9;:15;5724:4;5714:15;;;;;;;;;;;;;;;:44;;;;5784:24;5802:5;5784:9;:13;5794:2;5784:13;;;;;;;;;;;;;;;;:17;;:24;;;;:::i;:::-;5768:9;:13;5778:2;5768:13;;;;;;;;;;;;;;;:40;;;;5838:2;5823:25;;5832:4;5823:25;;;5842:5;5823:25;;;;;;;;;;;;;;;;;;5599:256;;;:::o;1431:145:33:-;1489:7;1508:9;1524:1;1520;:5;1508:17;;1548:1;1543;:6;;1535:15;;;;;;;;1568:1;1561:8;;;1431:145;;;;:::o;432:151:43:-;534:4;;506:24;524:5;506:13;:11;:13::i;:::-;:17;;:24;;;;:::i;:::-;:32;;498:41;;;;;;;;549:27;561:7;570:5;549:11;:27::i;:::-;432:151;;:::o;685:119:2:-;741:21;754:7;741:8;:12;;:21;;;;:::i;:::-;789:7;777:20;;;;;;;;;;;;685:119;:::o;810:127::-;869:24;885:7;869:8;:15;;:24;;;;:::i;:::-;922:7;908:22;;;;;;;;;;;;810:127;:::o;786:162:0:-;858:4;901:1;882:21;;:7;:21;;;;874:30;;;;;;;;921:4;:11;;:20;933:7;921:20;;;;;;;;;;;;;;;;;;;;;;;;;914:27;;786:162;;;;:::o;6198:263:41:-;6291:1;6272:21;;:7;:21;;;;6264:30;;;;;;;;6320:23;6337:5;6320:12;;:16;;:23;;;;:::i;:::-;6305:12;:38;;;;6374:29;6397:5;6374:9;:18;6384:7;6374:18;;;;;;;;;;;;;;;;:22;;:29;;;;:::i;:::-;6353:9;:18;6363:7;6353:18;;;;;;;;;;;;;;;:50;;;;6439:7;6418:36;;6435:1;6418:36;;;6448:5;6418:36;;;;;;;;;;;;;;;;;;6198:263;;:::o;259:181:0:-;354:1;335:21;;:7;:21;;;;327:30;;;;;;;;376:18;380:4;386:7;376:3;:18::i;:::-;375:19;367:28;;;;;;;;429:4;406;:11;;:20;418:7;406:20;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;259:181;;:::o;514:184::-;612:1;593:21;;:7;:21;;;;585:30;;;;;;;;633:18;637:4;643:7;633:3;:18::i;:::-;625:27;;;;;;;;686:5;663:4;:11;;:20;675:7;663:20;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;514:184;;:::o", + "source": "pragma solidity ^0.5.0;\n\nimport \"./ERC20Mintable.sol\";\n\n/**\n * @title Capped token\n * @dev Mintable token with a token cap.\n */\ncontract ERC20Capped is ERC20Mintable {\n uint256 private _cap;\n\n constructor (uint256 cap) public {\n require(cap > 0);\n _cap = cap;\n }\n\n /**\n * @return the cap for the token minting.\n */\n function cap() public view returns (uint256) {\n return _cap;\n }\n\n function _mint(address account, uint256 value) internal {\n require(totalSupply().add(value) <= _cap);\n super._mint(account, value);\n }\n}\n", + "sourcePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/token/ERC20/ERC20Capped.sol", + "ast": { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/token/ERC20/ERC20Capped.sol", + "exportedSymbols": { + "ERC20Capped": [ + 4795 + ] + }, + "id": 4796, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 4740, + "literals": [ + "solidity", + "^", + "0.5", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "0:23:43" + }, + { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/token/ERC20/ERC20Mintable.sol", + "file": "./ERC20Mintable.sol", + "id": 4741, + "nodeType": "ImportDirective", + "scope": 4796, + "sourceUnit": 4882, + "src": "25:29:43", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 4742, + "name": "ERC20Mintable", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 4881, + "src": "152:13:43", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20Mintable_$4881", + "typeString": "contract ERC20Mintable" + } + }, + "id": 4743, + "nodeType": "InheritanceSpecifier", + "src": "152:13:43" + } + ], + "contractDependencies": [ + 299, + 4707, + 4881, + 5052 + ], + "contractKind": "contract", + "documentation": "@title Capped token\n@dev Mintable token with a token cap.", + "fullyImplemented": true, + "id": 4795, + "linearizedBaseContracts": [ + 4795, + 4881, + 299, + 4707, + 5052 + ], + "name": "ERC20Capped", + "nodeType": "ContractDefinition", + "nodes": [ + { + "constant": false, + "id": 4745, + "name": "_cap", + "nodeType": "VariableDeclaration", + "scope": 4795, + "src": "172:20:43", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4744, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "172:7:43", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "private" + }, + { + "body": { + "id": 4760, + "nodeType": "Block", + "src": "232:53:43", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 4753, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 4751, + "name": "cap", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4747, + "src": "250:3:43", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 4752, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "256:1:43", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "250:7:43", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 4750, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6848, + 6849 + ], + "referencedDeclaration": 6848, + "src": "242:7:43", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 4754, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "242:16:43", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4755, + "nodeType": "ExpressionStatement", + "src": "242:16:43" + }, + { + "expression": { + "argumentTypes": null, + "id": 4758, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 4756, + "name": "_cap", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4745, + "src": "268:4:43", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 4757, + "name": "cap", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4747, + "src": "275:3:43", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "268:10:43", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 4759, + "nodeType": "ExpressionStatement", + "src": "268:10:43" + } + ] + }, + "documentation": null, + "id": 4761, + "implemented": true, + "kind": "constructor", + "modifiers": [], + "name": "", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4748, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4747, + "name": "cap", + "nodeType": "VariableDeclaration", + "scope": 4761, + "src": "212:11:43", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4746, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "212:7:43", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "211:13:43" + }, + "returnParameters": { + "id": 4749, + "nodeType": "ParameterList", + "parameters": [], + "src": "232:0:43" + }, + "scope": 4795, + "src": "199:86:43", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 4768, + "nodeType": "Block", + "src": "398:28:43", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 4766, + "name": "_cap", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4745, + "src": "415:4:43", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 4765, + "id": 4767, + "nodeType": "Return", + "src": "408:11:43" + } + ] + }, + "documentation": "@return the cap for the token minting.", + "id": 4769, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "cap", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4762, + "nodeType": "ParameterList", + "parameters": [], + "src": "365:2:43" + }, + "returnParameters": { + "id": 4765, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4764, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 4769, + "src": "389:7:43", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4763, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "389:7:43", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "388:9:43" + }, + "scope": 4795, + "src": "353:73:43", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 4793, + "nodeType": "Block", + "src": "488:95:43", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 4783, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 4780, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4773, + "src": "524:5:43", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 4777, + "name": "totalSupply", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4304, + "src": "506:11:43", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$", + "typeString": "function () view returns (uint256)" + } + }, + "id": 4778, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "506:13:43", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 4779, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 3461, + "src": "506:17:43", + "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": 4781, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "506:24:43", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<=", + "rightExpression": { + "argumentTypes": null, + "id": 4782, + "name": "_cap", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4745, + "src": "534:4:43", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "506:32:43", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 4776, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6848, + 6849 + ], + "referencedDeclaration": 6848, + "src": "498:7:43", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 4784, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "498:41:43", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4785, + "nodeType": "ExpressionStatement", + "src": "498:41:43" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 4789, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4771, + "src": "561:7:43", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 4790, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4773, + "src": "570:5:43", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 4786, + "name": "super", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6955, + "src": "549:5:43", + "typeDescriptions": { + "typeIdentifier": "t_super$_ERC20Capped_$4795", + "typeString": "contract super ERC20Capped" + } + }, + "id": 4788, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "_mint", + "nodeType": "MemberAccess", + "referencedDeclaration": 4622, + "src": "549:11:43", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 4791, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "549:27:43", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4792, + "nodeType": "ExpressionStatement", + "src": "549:27:43" + } + ] + }, + "documentation": null, + "id": 4794, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_mint", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4774, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4771, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 4794, + "src": "447:15:43", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4770, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "447:7:43", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 4773, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 4794, + "src": "464:13:43", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4772, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "464:7:43", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "446:32:43" + }, + "returnParameters": { + "id": 4775, + "nodeType": "ParameterList", + "parameters": [], + "src": "488:0:43" + }, + "scope": 4795, + "src": "432:151:43", + "stateMutability": "nonpayable", + "superFunction": 4622, + "visibility": "internal" + } + ], + "scope": 4796, + "src": "128:457:43" + } + ], + "src": "0:586:43" + }, + "legacyAST": { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/token/ERC20/ERC20Capped.sol", + "exportedSymbols": { + "ERC20Capped": [ + 4795 + ] + }, + "id": 4796, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 4740, + "literals": [ + "solidity", + "^", + "0.5", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "0:23:43" + }, + { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/token/ERC20/ERC20Mintable.sol", + "file": "./ERC20Mintable.sol", + "id": 4741, + "nodeType": "ImportDirective", + "scope": 4796, + "sourceUnit": 4882, + "src": "25:29:43", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 4742, + "name": "ERC20Mintable", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 4881, + "src": "152:13:43", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20Mintable_$4881", + "typeString": "contract ERC20Mintable" + } + }, + "id": 4743, + "nodeType": "InheritanceSpecifier", + "src": "152:13:43" + } + ], + "contractDependencies": [ + 299, + 4707, + 4881, + 5052 + ], + "contractKind": "contract", + "documentation": "@title Capped token\n@dev Mintable token with a token cap.", + "fullyImplemented": true, + "id": 4795, + "linearizedBaseContracts": [ + 4795, + 4881, + 299, + 4707, + 5052 + ], + "name": "ERC20Capped", + "nodeType": "ContractDefinition", + "nodes": [ + { + "constant": false, + "id": 4745, + "name": "_cap", + "nodeType": "VariableDeclaration", + "scope": 4795, + "src": "172:20:43", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4744, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "172:7:43", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "private" + }, + { + "body": { + "id": 4760, + "nodeType": "Block", + "src": "232:53:43", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 4753, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 4751, + "name": "cap", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4747, + "src": "250:3:43", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 4752, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "256:1:43", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "250:7:43", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 4750, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6848, + 6849 + ], + "referencedDeclaration": 6848, + "src": "242:7:43", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 4754, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "242:16:43", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4755, + "nodeType": "ExpressionStatement", + "src": "242:16:43" + }, + { + "expression": { + "argumentTypes": null, + "id": 4758, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 4756, + "name": "_cap", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4745, + "src": "268:4:43", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 4757, + "name": "cap", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4747, + "src": "275:3:43", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "268:10:43", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 4759, + "nodeType": "ExpressionStatement", + "src": "268:10:43" + } + ] + }, + "documentation": null, + "id": 4761, + "implemented": true, + "kind": "constructor", + "modifiers": [], + "name": "", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4748, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4747, + "name": "cap", + "nodeType": "VariableDeclaration", + "scope": 4761, + "src": "212:11:43", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4746, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "212:7:43", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "211:13:43" + }, + "returnParameters": { + "id": 4749, + "nodeType": "ParameterList", + "parameters": [], + "src": "232:0:43" + }, + "scope": 4795, + "src": "199:86:43", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 4768, + "nodeType": "Block", + "src": "398:28:43", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 4766, + "name": "_cap", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4745, + "src": "415:4:43", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 4765, + "id": 4767, + "nodeType": "Return", + "src": "408:11:43" + } + ] + }, + "documentation": "@return the cap for the token minting.", + "id": 4769, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "cap", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4762, + "nodeType": "ParameterList", + "parameters": [], + "src": "365:2:43" + }, + "returnParameters": { + "id": 4765, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4764, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 4769, + "src": "389:7:43", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4763, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "389:7:43", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "388:9:43" + }, + "scope": 4795, + "src": "353:73:43", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 4793, + "nodeType": "Block", + "src": "488:95:43", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 4783, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 4780, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4773, + "src": "524:5:43", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 4777, + "name": "totalSupply", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4304, + "src": "506:11:43", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$", + "typeString": "function () view returns (uint256)" + } + }, + "id": 4778, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "506:13:43", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 4779, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 3461, + "src": "506:17:43", + "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": 4781, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "506:24:43", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<=", + "rightExpression": { + "argumentTypes": null, + "id": 4782, + "name": "_cap", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4745, + "src": "534:4:43", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "506:32:43", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 4776, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6848, + 6849 + ], + "referencedDeclaration": 6848, + "src": "498:7:43", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 4784, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "498:41:43", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4785, + "nodeType": "ExpressionStatement", + "src": "498:41:43" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 4789, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4771, + "src": "561:7:43", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 4790, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4773, + "src": "570:5:43", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 4786, + "name": "super", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6955, + "src": "549:5:43", + "typeDescriptions": { + "typeIdentifier": "t_super$_ERC20Capped_$4795", + "typeString": "contract super ERC20Capped" + } + }, + "id": 4788, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "_mint", + "nodeType": "MemberAccess", + "referencedDeclaration": 4622, + "src": "549:11:43", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 4791, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "549:27:43", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4792, + "nodeType": "ExpressionStatement", + "src": "549:27:43" + } + ] + }, + "documentation": null, + "id": 4794, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_mint", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4774, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4771, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 4794, + "src": "447:15:43", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4770, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "447:7:43", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 4773, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 4794, + "src": "464:13:43", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4772, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "464:7:43", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "446:32:43" + }, + "returnParameters": { + "id": 4775, + "nodeType": "ParameterList", + "parameters": [], + "src": "488:0:43" + }, + "scope": 4795, + "src": "432:151:43", + "stateMutability": "nonpayable", + "superFunction": 4622, + "visibility": "internal" + } + ], + "scope": 4796, + "src": "128:457:43" + } + ], + "src": "0:586:43" + }, + "compiler": { + "name": "solc", + "version": "0.5.0+commit.1d4f565a.Emscripten.clang" + }, + "networks": {}, + "schemaVersion": "3.0.0", + "updatedAt": "2019-01-04T21:44:02.892Z", + "devdoc": { + "details": "Mintable token with a token cap.", + "methods": { + "allowance(address,address)": { + "details": "Function to check the amount of tokens that an owner allowed to a spender.", + "params": { + "owner": "address The address which owns the funds.", + "spender": "address The address which will spend the funds." + }, + "return": "A uint256 specifying the amount of tokens still available for the spender." + }, + "approve(address,uint256)": { + "details": "Approve the passed address to spend the specified amount of tokens on behalf of msg.sender. Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729", + "params": { + "spender": "The address which will spend the funds.", + "value": "The amount of tokens to be spent." + } + }, + "balanceOf(address)": { + "details": "Gets the balance of the specified address.", + "params": { + "owner": "The address to query the balance of." + }, + "return": "An uint256 representing the amount owned by the passed address." + }, + "cap()": { + "return": "the cap for the token minting." + }, + "decreaseAllowance(address,uint256)": { + "details": "Decrease the amount of tokens that an owner allowed to a spender. approve should be called when allowed_[_spender] == 0. To decrement allowed value is better to use this function to avoid 2 calls (and wait until the first transaction is mined) From MonolithDAO Token.sol Emits an Approval event.", + "params": { + "spender": "The address which will spend the funds.", + "subtractedValue": "The amount of tokens to decrease the allowance by." + } + }, + "increaseAllowance(address,uint256)": { + "details": "Increase the amount of tokens that an owner allowed to a spender. approve should be called when allowed_[_spender] == 0. To increment allowed value is better to use this function to avoid 2 calls (and wait until the first transaction is mined) From MonolithDAO Token.sol Emits an Approval event.", + "params": { + "addedValue": "The amount of tokens to increase the allowance by.", + "spender": "The address which will spend the funds." + } + }, + "mint(address,uint256)": { + "details": "Function to mint tokens", + "params": { + "to": "The address that will receive the minted tokens.", + "value": "The amount of tokens to mint." + }, + "return": "A boolean that indicates if the operation was successful." + }, + "totalSupply()": { + "details": "Total number of tokens in existence" + }, + "transfer(address,uint256)": { + "details": "Transfer token for a specified address", + "params": { + "to": "The address to transfer to.", + "value": "The amount to be transferred." + } + }, + "transferFrom(address,address,uint256)": { + "details": "Transfer tokens from one address to another. Note that while this function emits an Approval event, this is not required as per the specification, and other compliant implementations may not emit the event.", + "params": { + "from": "address The address which you want to send tokens from", + "to": "address The address which you want to transfer to", + "value": "uint256 the amount of tokens to be transferred" + } + } + }, + "title": "Capped token" + }, + "userdoc": { + "methods": {} + } +} \ No newline at end of file diff --git a/node_modules/openzeppelin-solidity/build/contracts/ERC20Detailed.json b/node_modules/openzeppelin-solidity/build/contracts/ERC20Detailed.json new file mode 100644 index 0000000..5c40c37 --- /dev/null +++ b/node_modules/openzeppelin-solidity/build/contracts/ERC20Detailed.json @@ -0,0 +1,1548 @@ +{ + "contractName": "ERC20Detailed", + "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" + }, + { + "inputs": [ + { + "name": "name", + "type": "string" + }, + { + "name": "symbol", + "type": "string" + }, + { + "name": "decimals", + "type": "uint8" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "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" + }, + { + "constant": true, + "inputs": [], + "name": "name", + "outputs": [ + { + "name": "", + "type": "string" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "symbol", + "outputs": [ + { + "name": "", + "type": "string" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "decimals", + "outputs": [ + { + "name": "", + "type": "uint8" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "sourceMap": "", + "deployedSourceMap": "", + "source": "pragma solidity ^0.5.0;\n\nimport \"./IERC20.sol\";\n\n/**\n * @title ERC20Detailed token\n * @dev The decimals are only for visualization purposes.\n * All the operations are done using the smallest and indivisible token unit,\n * just as on Ethereum all the operations are done in wei.\n */\ncontract ERC20Detailed is IERC20 {\n string private _name;\n string private _symbol;\n uint8 private _decimals;\n\n constructor (string memory name, string memory symbol, uint8 decimals) public {\n _name = name;\n _symbol = symbol;\n _decimals = decimals;\n }\n\n /**\n * @return the name of the token.\n */\n function name() public view returns (string memory) {\n return _name;\n }\n\n /**\n * @return the symbol of the token.\n */\n function symbol() public view returns (string memory) {\n return _symbol;\n }\n\n /**\n * @return the number of decimals of the token.\n */\n function decimals() public view returns (uint8) {\n return _decimals;\n }\n}\n", + "sourcePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/token/ERC20/ERC20Detailed.sol", + "ast": { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/token/ERC20/ERC20Detailed.sol", + "exportedSymbols": { + "ERC20Detailed": [ + 4853 + ] + }, + "id": 4854, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 4797, + "literals": [ + "solidity", + "^", + "0.5", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "0:23:44" + }, + { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/token/ERC20/IERC20.sol", + "file": "./IERC20.sol", + "id": 4798, + "nodeType": "ImportDirective", + "scope": 4854, + "sourceUnit": 5053, + "src": "25:22:44", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 4799, + "name": "IERC20", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 5052, + "src": "308:6:44", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$5052", + "typeString": "contract IERC20" + } + }, + "id": 4800, + "nodeType": "InheritanceSpecifier", + "src": "308:6:44" + } + ], + "contractDependencies": [ + 5052 + ], + "contractKind": "contract", + "documentation": "@title ERC20Detailed token\n@dev The decimals are only for visualization purposes.\nAll the operations are done using the smallest and indivisible token unit,\njust as on Ethereum all the operations are done in wei.", + "fullyImplemented": false, + "id": 4853, + "linearizedBaseContracts": [ + 4853, + 5052 + ], + "name": "ERC20Detailed", + "nodeType": "ContractDefinition", + "nodes": [ + { + "constant": false, + "id": 4802, + "name": "_name", + "nodeType": "VariableDeclaration", + "scope": 4853, + "src": "321:20:44", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string" + }, + "typeName": { + "id": 4801, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "321:6:44", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "private" + }, + { + "constant": false, + "id": 4804, + "name": "_symbol", + "nodeType": "VariableDeclaration", + "scope": 4853, + "src": "347:22:44", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string" + }, + "typeName": { + "id": 4803, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "347:6:44", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "private" + }, + { + "constant": false, + "id": 4806, + "name": "_decimals", + "nodeType": "VariableDeclaration", + "scope": 4853, + "src": "375:23:44", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 4805, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "375:5:44", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": null, + "visibility": "private" + }, + { + "body": { + "id": 4827, + "nodeType": "Block", + "src": "483:85:44", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 4817, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 4815, + "name": "_name", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4802, + "src": "493:5:44", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 4816, + "name": "name", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4808, + "src": "501:4:44", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "src": "493:12:44", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "id": 4818, + "nodeType": "ExpressionStatement", + "src": "493:12:44" + }, + { + "expression": { + "argumentTypes": null, + "id": 4821, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 4819, + "name": "_symbol", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4804, + "src": "515:7:44", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 4820, + "name": "symbol", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4810, + "src": "525:6:44", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "src": "515:16:44", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "id": 4822, + "nodeType": "ExpressionStatement", + "src": "515:16:44" + }, + { + "expression": { + "argumentTypes": null, + "id": 4825, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 4823, + "name": "_decimals", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4806, + "src": "541:9:44", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 4824, + "name": "decimals", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4812, + "src": "553:8:44", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "src": "541:20:44", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "id": 4826, + "nodeType": "ExpressionStatement", + "src": "541:20:44" + } + ] + }, + "documentation": null, + "id": 4828, + "implemented": true, + "kind": "constructor", + "modifiers": [], + "name": "", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4813, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4808, + "name": "name", + "nodeType": "VariableDeclaration", + "scope": 4828, + "src": "418:18:44", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 4807, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "418:6:44", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 4810, + "name": "symbol", + "nodeType": "VariableDeclaration", + "scope": 4828, + "src": "438:20:44", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 4809, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "438:6:44", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 4812, + "name": "decimals", + "nodeType": "VariableDeclaration", + "scope": 4828, + "src": "460:14:44", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 4811, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "460:5:44", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "417:58:44" + }, + "returnParameters": { + "id": 4814, + "nodeType": "ParameterList", + "parameters": [], + "src": "483:0:44" + }, + "scope": 4853, + "src": "405:163:44", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 4835, + "nodeType": "Block", + "src": "680:29:44", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 4833, + "name": "_name", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4802, + "src": "697:5:44", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "functionReturnParameters": 4832, + "id": 4834, + "nodeType": "Return", + "src": "690:12:44" + } + ] + }, + "documentation": "@return the name of the token.", + "id": 4836, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "name", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4829, + "nodeType": "ParameterList", + "parameters": [], + "src": "641:2:44" + }, + "returnParameters": { + "id": 4832, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4831, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 4836, + "src": "665:13:44", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 4830, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "665:6:44", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "664:15:44" + }, + "scope": 4853, + "src": "628:81:44", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 4843, + "nodeType": "Block", + "src": "825:31:44", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 4841, + "name": "_symbol", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4804, + "src": "842:7:44", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "functionReturnParameters": 4840, + "id": 4842, + "nodeType": "Return", + "src": "835:14:44" + } + ] + }, + "documentation": "@return the symbol of the token.", + "id": 4844, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "symbol", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4837, + "nodeType": "ParameterList", + "parameters": [], + "src": "786:2:44" + }, + "returnParameters": { + "id": 4840, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4839, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 4844, + "src": "810:13:44", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 4838, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "810:6:44", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "809:15:44" + }, + "scope": 4853, + "src": "771:85:44", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 4851, + "nodeType": "Block", + "src": "978:33:44", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 4849, + "name": "_decimals", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4806, + "src": "995:9:44", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "functionReturnParameters": 4848, + "id": 4850, + "nodeType": "Return", + "src": "988:16:44" + } + ] + }, + "documentation": "@return the number of decimals of the token.", + "id": 4852, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "decimals", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4845, + "nodeType": "ParameterList", + "parameters": [], + "src": "947:2:44" + }, + "returnParameters": { + "id": 4848, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4847, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 4852, + "src": "971:5:44", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 4846, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "971:5:44", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "970:7:44" + }, + "scope": 4853, + "src": "930:81:44", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + } + ], + "scope": 4854, + "src": "282:731:44" + } + ], + "src": "0:1014:44" + }, + "legacyAST": { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/token/ERC20/ERC20Detailed.sol", + "exportedSymbols": { + "ERC20Detailed": [ + 4853 + ] + }, + "id": 4854, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 4797, + "literals": [ + "solidity", + "^", + "0.5", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "0:23:44" + }, + { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/token/ERC20/IERC20.sol", + "file": "./IERC20.sol", + "id": 4798, + "nodeType": "ImportDirective", + "scope": 4854, + "sourceUnit": 5053, + "src": "25:22:44", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 4799, + "name": "IERC20", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 5052, + "src": "308:6:44", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$5052", + "typeString": "contract IERC20" + } + }, + "id": 4800, + "nodeType": "InheritanceSpecifier", + "src": "308:6:44" + } + ], + "contractDependencies": [ + 5052 + ], + "contractKind": "contract", + "documentation": "@title ERC20Detailed token\n@dev The decimals are only for visualization purposes.\nAll the operations are done using the smallest and indivisible token unit,\njust as on Ethereum all the operations are done in wei.", + "fullyImplemented": false, + "id": 4853, + "linearizedBaseContracts": [ + 4853, + 5052 + ], + "name": "ERC20Detailed", + "nodeType": "ContractDefinition", + "nodes": [ + { + "constant": false, + "id": 4802, + "name": "_name", + "nodeType": "VariableDeclaration", + "scope": 4853, + "src": "321:20:44", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string" + }, + "typeName": { + "id": 4801, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "321:6:44", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "private" + }, + { + "constant": false, + "id": 4804, + "name": "_symbol", + "nodeType": "VariableDeclaration", + "scope": 4853, + "src": "347:22:44", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string" + }, + "typeName": { + "id": 4803, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "347:6:44", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "private" + }, + { + "constant": false, + "id": 4806, + "name": "_decimals", + "nodeType": "VariableDeclaration", + "scope": 4853, + "src": "375:23:44", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 4805, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "375:5:44", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": null, + "visibility": "private" + }, + { + "body": { + "id": 4827, + "nodeType": "Block", + "src": "483:85:44", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 4817, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 4815, + "name": "_name", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4802, + "src": "493:5:44", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 4816, + "name": "name", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4808, + "src": "501:4:44", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "src": "493:12:44", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "id": 4818, + "nodeType": "ExpressionStatement", + "src": "493:12:44" + }, + { + "expression": { + "argumentTypes": null, + "id": 4821, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 4819, + "name": "_symbol", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4804, + "src": "515:7:44", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 4820, + "name": "symbol", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4810, + "src": "525:6:44", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "src": "515:16:44", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "id": 4822, + "nodeType": "ExpressionStatement", + "src": "515:16:44" + }, + { + "expression": { + "argumentTypes": null, + "id": 4825, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 4823, + "name": "_decimals", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4806, + "src": "541:9:44", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 4824, + "name": "decimals", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4812, + "src": "553:8:44", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "src": "541:20:44", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "id": 4826, + "nodeType": "ExpressionStatement", + "src": "541:20:44" + } + ] + }, + "documentation": null, + "id": 4828, + "implemented": true, + "kind": "constructor", + "modifiers": [], + "name": "", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4813, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4808, + "name": "name", + "nodeType": "VariableDeclaration", + "scope": 4828, + "src": "418:18:44", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 4807, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "418:6:44", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 4810, + "name": "symbol", + "nodeType": "VariableDeclaration", + "scope": 4828, + "src": "438:20:44", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 4809, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "438:6:44", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 4812, + "name": "decimals", + "nodeType": "VariableDeclaration", + "scope": 4828, + "src": "460:14:44", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 4811, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "460:5:44", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "417:58:44" + }, + "returnParameters": { + "id": 4814, + "nodeType": "ParameterList", + "parameters": [], + "src": "483:0:44" + }, + "scope": 4853, + "src": "405:163:44", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 4835, + "nodeType": "Block", + "src": "680:29:44", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 4833, + "name": "_name", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4802, + "src": "697:5:44", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "functionReturnParameters": 4832, + "id": 4834, + "nodeType": "Return", + "src": "690:12:44" + } + ] + }, + "documentation": "@return the name of the token.", + "id": 4836, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "name", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4829, + "nodeType": "ParameterList", + "parameters": [], + "src": "641:2:44" + }, + "returnParameters": { + "id": 4832, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4831, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 4836, + "src": "665:13:44", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 4830, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "665:6:44", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "664:15:44" + }, + "scope": 4853, + "src": "628:81:44", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 4843, + "nodeType": "Block", + "src": "825:31:44", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 4841, + "name": "_symbol", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4804, + "src": "842:7:44", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "functionReturnParameters": 4840, + "id": 4842, + "nodeType": "Return", + "src": "835:14:44" + } + ] + }, + "documentation": "@return the symbol of the token.", + "id": 4844, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "symbol", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4837, + "nodeType": "ParameterList", + "parameters": [], + "src": "786:2:44" + }, + "returnParameters": { + "id": 4840, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4839, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 4844, + "src": "810:13:44", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 4838, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "810:6:44", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "809:15:44" + }, + "scope": 4853, + "src": "771:85:44", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 4851, + "nodeType": "Block", + "src": "978:33:44", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 4849, + "name": "_decimals", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4806, + "src": "995:9:44", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "functionReturnParameters": 4848, + "id": 4850, + "nodeType": "Return", + "src": "988:16:44" + } + ] + }, + "documentation": "@return the number of decimals of the token.", + "id": 4852, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "decimals", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4845, + "nodeType": "ParameterList", + "parameters": [], + "src": "947:2:44" + }, + "returnParameters": { + "id": 4848, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4847, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 4852, + "src": "971:5:44", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 4846, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "971:5:44", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "970:7:44" + }, + "scope": 4853, + "src": "930:81:44", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + } + ], + "scope": 4854, + "src": "282:731:44" + } + ], + "src": "0:1014:44" + }, + "compiler": { + "name": "solc", + "version": "0.5.0+commit.1d4f565a.Emscripten.clang" + }, + "networks": {}, + "schemaVersion": "3.0.0", + "updatedAt": "2019-01-04T21:44:02.892Z", + "devdoc": { + "details": "The decimals are only for visualization purposes. All the operations are done using the smallest and indivisible token unit, just as on Ethereum all the operations are done in wei.", + "methods": { + "decimals()": { + "return": "the number of decimals of the token." + }, + "name()": { + "return": "the name of the token." + }, + "symbol()": { + "return": "the symbol of the token." + } + }, + "title": "ERC20Detailed token" + }, + "userdoc": { + "methods": {} + } +} \ No newline at end of file diff --git a/node_modules/openzeppelin-solidity/build/contracts/ERC20Migrator.json b/node_modules/openzeppelin-solidity/build/contracts/ERC20Migrator.json new file mode 100644 index 0000000..32b57e2 --- /dev/null +++ b/node_modules/openzeppelin-solidity/build/contracts/ERC20Migrator.json @@ -0,0 +1,4198 @@ +{ + "contractName": "ERC20Migrator", + "abi": [ + { + "inputs": [ + { + "name": "legacyToken", + "type": "address" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "constant": true, + "inputs": [], + "name": "legacyToken", + "outputs": [ + { + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "newToken", + "outputs": [ + { + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "newToken", + "type": "address" + } + ], + "name": "beginMigration", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "account", + "type": "address" + }, + { + "name": "amount", + "type": "uint256" + } + ], + "name": "migrate", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "account", + "type": "address" + } + ], + "name": "migrateAll", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x608060405234801561001057600080fd5b506040516020806109f88339810180604052602081101561003057600080fd5b8101908080519060200190929190505050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415151561007d57600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505061092b806100cd6000396000f3fe60806040526004361061006d576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063104d26141461007257806313155455146100c35780635a8cadb11461011a578063ad68ebf71461016b578063c42bd05a146101c6575b600080fd5b34801561007e57600080fd5b506100c16004803603602081101561009557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061021d565b005b3480156100cf57600080fd5b506100d86103d9565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561012657600080fd5b506101696004803603602081101561013d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610402565b005b34801561017757600080fd5b506101c46004803603604081101561018e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610646565b005b3480156101d257600080fd5b506101db610799565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b600073ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561027a57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515156102b657600080fd5b8073ffffffffffffffffffffffffffffffffffffffff1663aa271e1a306040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561034f57600080fd5b505afa158015610363573d6000803e3d6000fd5b505050506040513d602081101561037957600080fd5b8101908080519060200190929190505050151561039557600080fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231836040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156104be57600080fd5b505afa1580156104d2573d6000803e3d6000fd5b505050506040513d60208110156104e857600080fd5b8101908080519060200190929190505050905060008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e84306040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060206040518083038186803b1580156105eb57600080fd5b505afa1580156105ff573d6000803e3d6000fd5b505050506040513d602081101561061557600080fd5b81019080805190602001909291905050509050600061063483836107c3565b90506106408482610646565b50505050565b6106948230836000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166107dc909392919063ffffffff16565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166340c10f1983836040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561075957600080fd5b505af115801561076d573d6000803e3d6000fd5b505050506040513d602081101561078357600080fd5b8101908080519060200190929190505050505050565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60008183106107d257816107d4565b825b905092915050565b8373ffffffffffffffffffffffffffffffffffffffff166323b872dd8484846040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b1580156108b357600080fd5b505af11580156108c7573d6000803e3d6000fd5b505050506040513d60208110156108dd57600080fd5b810190808051906020019092919050505015156108f957600080fd5b5050505056fea165627a7a72305820812d41120793579d6c5393a66e39acbe514d95e064419c0a1210fddb19f364ff0029", + "deployedBytecode": "0x60806040526004361061006d576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063104d26141461007257806313155455146100c35780635a8cadb11461011a578063ad68ebf71461016b578063c42bd05a146101c6575b600080fd5b34801561007e57600080fd5b506100c16004803603602081101561009557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061021d565b005b3480156100cf57600080fd5b506100d86103d9565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561012657600080fd5b506101696004803603602081101561013d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610402565b005b34801561017757600080fd5b506101c46004803603604081101561018e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610646565b005b3480156101d257600080fd5b506101db610799565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b600073ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561027a57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515156102b657600080fd5b8073ffffffffffffffffffffffffffffffffffffffff1663aa271e1a306040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561034f57600080fd5b505afa158015610363573d6000803e3d6000fd5b505050506040513d602081101561037957600080fd5b8101908080519060200190929190505050151561039557600080fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231836040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156104be57600080fd5b505afa1580156104d2573d6000803e3d6000fd5b505050506040513d60208110156104e857600080fd5b8101908080519060200190929190505050905060008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e84306040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060206040518083038186803b1580156105eb57600080fd5b505afa1580156105ff573d6000803e3d6000fd5b505050506040513d602081101561061557600080fd5b81019080805190602001909291905050509050600061063483836107c3565b90506106408482610646565b50505050565b6106948230836000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166107dc909392919063ffffffff16565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166340c10f1983836040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561075957600080fd5b505af115801561076d573d6000803e3d6000fd5b505050506040513d602081101561078357600080fd5b8101908080519060200190929190505050505050565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60008183106107d257816107d4565b825b905092915050565b8373ffffffffffffffffffffffffffffffffffffffff166323b872dd8484846040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b1580156108b357600080fd5b505af11580156108c7573d6000803e3d6000fd5b505050506040513d60208110156108dd57600080fd5b810190808051906020019092919050505015156108f957600080fd5b5050505056fea165627a7a72305820812d41120793579d6c5393a66e39acbe514d95e064419c0a1210fddb19f364ff0029", + "sourceMap": "1622:2194:24:-;;;1916:136;8:9:-1;5:2;;;30:1;27;20:12;5:2;1916:136:24;;;;;;;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1916:136:24;;;;;;;;;;;;;;;;2006:1;1974:34;;1982:11;1974:34;;;;1966:43;;;;;;;;2034:11;2019:12;;:26;;;;;;;;;;;;;;;;;;1916:136;1622:2194;;;;;;", + "deployedSourceMap": "1622:2194:24:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2608:245;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2608:245:24;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2608:245:24;;;;;;;;;;;;;;;;;;;;;;2135:88;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2135:88:24;;;;;;;;;;;;;;;;;;;;;;;;;;;3539:275;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3539:275:24;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3539:275:24;;;;;;;;;;;;;;;;;;;;;;3131:176;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3131:176:24;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3131:176:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2306:82;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2306:82:24;;;;;;;;;;;;;;;;;;;;;;;;;;;2608:245;2711:1;2681:32;;2689:9;;;;;;;;;;;2681:32;;;2673:41;;;;;;;;2761:1;2732:31;;2740:8;2732:31;;;;2724:40;;;;;;;;2782:8;:17;;;2808:4;2782:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2782:32:24;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2782:32:24;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2782:32:24;;;;;;;;;;;;;;;;2774:41;;;;;;;;2838:8;2826:9;;:20;;;;;;;;;;;;;;;;;;2608:245;:::o;2135:88::-;2179:6;2204:12;;;;;;;;;;;2197:19;;2135:88;:::o;3539:275::-;3593:15;3611:12;;;;;;;;;;;:22;;;3634:7;3611:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3611:31:24;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3611:31:24;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3611:31:24;;;;;;;;;;;;;;;;3593:49;;3652:17;3672:12;;;;;;;;;;;:22;;;3695:7;3712:4;3672:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3672:46:24;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3672:46:24;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3672:46:24;;;;;;;;;;;;;;;;3652:66;;3728:14;3745:28;3754:7;3763:9;3745:8;:28::i;:::-;3728:45;;3783:24;3791:7;3800:6;3783:7;:24::i;:::-;3539:275;;;;:::o;3131:176::-;3198:61;3228:7;3245:4;3252:6;3198:12;;;;;;;;;;;:29;;;;:61;;;;;;:::i;:::-;3269:9;;;;;;;;;;;:14;;;3284:7;3293:6;3269:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3269:31:24;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3269:31:24;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3269:31:24;;;;;;;;;;;;;;;;;3131:176;;:::o;2306:82::-;2347:6;2372:9;;;;;;;;;;;2365:16;;2306:82;:::o;336:104:32:-;394:7;424:1;420;:5;:13;;432:1;420:13;;;428:1;420:13;413:20;;336:104;;;;:::o;538:151:48:-;646:5;:18;;;665:4;671:2;675:5;646:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;646:35:48;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;646:35:48;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;646:35:48;;;;;;;;;;;;;;;;638:44;;;;;;;;538:151;;;;:::o", + "source": "pragma solidity ^0.5.0;\n\nimport \"../token/ERC20/IERC20.sol\";\nimport \"../token/ERC20/ERC20Mintable.sol\";\nimport \"../token/ERC20/SafeERC20.sol\";\nimport \"../math/Math.sol\";\n\n/**\n * @title ERC20Migrator\n * @dev This contract can be used to migrate an ERC20 token from one\n * contract to another, where each token holder has to opt-in to the migration.\n * To opt-in, users must approve for this contract the number of tokens they\n * want to migrate. Once the allowance is set up, anyone can trigger the\n * migration to the new token contract. In this way, token holders \"turn in\"\n * their old balance and will be minted an equal amount in the new token.\n * The new token contract must be mintable. For the precise interface refer to\n * OpenZeppelin's ERC20Mintable, but the only functions that are needed are\n * `isMinter(address)` and `mint(address, amount)`. The migrator will check\n * that it is a minter for the token.\n * The balance from the legacy token will be transfered to the migrator, as it\n * is migrated, and remain there forever.\n * Although this contract can be used in many different scenarios, the main\n * motivation was to provide a way to migrate ERC20 tokens into an upgradeable\n * version of it using ZeppelinOS. To read more about how this can be done\n * using this implementation, please follow the official documentation site of\n * ZeppelinOS: https://docs.zeppelinos.org/docs/erc20_onboarding.html\n * Example of usage:\n * ```\n * const migrator = await ERC20Migrator.new(legacyToken.address);\n * await newToken.addMinter(migrator.address);\n * await migrator.beginMigration(newToken.address);\n * ```\n */\ncontract ERC20Migrator {\n using SafeERC20 for IERC20;\n\n /// Address of the old token contract\n IERC20 private _legacyToken;\n\n /// Address of the new token contract\n ERC20Mintable private _newToken;\n\n /**\n * @param legacyToken address of the old token contract\n */\n constructor (IERC20 legacyToken) public {\n require(address(legacyToken) != address(0));\n _legacyToken = legacyToken;\n }\n\n /**\n * @dev Returns the legacy token that is being migrated.\n */\n function legacyToken() public view returns (IERC20) {\n return _legacyToken;\n }\n\n /**\n * @dev Returns the new token to which we are migrating.\n */\n function newToken() public view returns (IERC20) {\n return _newToken;\n }\n\n /**\n * @dev Begins the migration by setting which is the new token that will be\n * minted. This contract must be a minter for the new token.\n * @param newToken the token that will be minted\n */\n function beginMigration(ERC20Mintable newToken) public {\n require(address(_newToken) == address(0));\n require(address(newToken) != address(0));\n require(newToken.isMinter(address(this)));\n\n _newToken = newToken;\n }\n\n /**\n * @dev Transfers part of an account's balance in the old token to this\n * contract, and mints the same amount of new tokens for that account.\n * @param account whose tokens will be migrated\n * @param amount amount of tokens to be migrated\n */\n function migrate(address account, uint256 amount) public {\n _legacyToken.safeTransferFrom(account, address(this), amount);\n _newToken.mint(account, amount);\n }\n\n /**\n * @dev Transfers all of an account's allowed balance in the old token to\n * this contract, and mints the same amount of new tokens for that account.\n * @param account whose tokens will be migrated\n */\n function migrateAll(address account) public {\n uint256 balance = _legacyToken.balanceOf(account);\n uint256 allowance = _legacyToken.allowance(account, address(this));\n uint256 amount = Math.min(balance, allowance);\n migrate(account, amount);\n }\n}\n", + "sourcePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/drafts/ERC20Migrator.sol", + "ast": { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/drafts/ERC20Migrator.sol", + "exportedSymbols": { + "ERC20Migrator": [ + 2234 + ] + }, + "id": 2235, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 2086, + "literals": [ + "solidity", + "^", + "0.5", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "0:23:24" + }, + { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/token/ERC20/IERC20.sol", + "file": "../token/ERC20/IERC20.sol", + "id": 2087, + "nodeType": "ImportDirective", + "scope": 2235, + "sourceUnit": 5053, + "src": "25:35:24", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/token/ERC20/ERC20Mintable.sol", + "file": "../token/ERC20/ERC20Mintable.sol", + "id": 2088, + "nodeType": "ImportDirective", + "scope": 2235, + "sourceUnit": 4882, + "src": "61:42:24", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol", + "file": "../token/ERC20/SafeERC20.sol", + "id": 2089, + "nodeType": "ImportDirective", + "scope": 2235, + "sourceUnit": 5197, + "src": "104:38:24", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/math/Math.sol", + "file": "../math/Math.sol", + "id": 2090, + "nodeType": "ImportDirective", + "scope": 2235, + "sourceUnit": 3355, + "src": "143:26:24", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [], + "contractDependencies": [], + "contractKind": "contract", + "documentation": "@title ERC20Migrator\n@dev This contract can be used to migrate an ERC20 token from one\ncontract to another, where each token holder has to opt-in to the migration.\nTo opt-in, users must approve for this contract the number of tokens they\nwant to migrate. Once the allowance is set up, anyone can trigger the\nmigration to the new token contract. In this way, token holders \"turn in\"\ntheir old balance and will be minted an equal amount in the new token.\nThe new token contract must be mintable. For the precise interface refer to\nOpenZeppelin's ERC20Mintable, but the only functions that are needed are\n`isMinter(address)` and `mint(address, amount)`. The migrator will check\nthat it is a minter for the token.\nThe balance from the legacy token will be transfered to the migrator, as it\nis migrated, and remain there forever.\nAlthough this contract can be used in many different scenarios, the main\nmotivation was to provide a way to migrate ERC20 tokens into an upgradeable\nversion of it using ZeppelinOS. To read more about how this can be done\nusing this implementation, please follow the official documentation site of\nZeppelinOS: https://docs.zeppelinos.org/docs/erc20_onboarding.html\nExample of usage:\n```\nconst migrator = await ERC20Migrator.new(legacyToken.address);\nawait newToken.addMinter(migrator.address);\nawait migrator.beginMigration(newToken.address);\n```", + "fullyImplemented": true, + "id": 2234, + "linearizedBaseContracts": [ + 2234 + ], + "name": "ERC20Migrator", + "nodeType": "ContractDefinition", + "nodes": [ + { + "id": 2093, + "libraryName": { + "contractScope": null, + "id": 2091, + "name": "SafeERC20", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 5196, + "src": "1657:9:24", + "typeDescriptions": { + "typeIdentifier": "t_contract$_SafeERC20_$5196", + "typeString": "library SafeERC20" + } + }, + "nodeType": "UsingForDirective", + "src": "1651:27:24", + "typeName": { + "contractScope": null, + "id": 2092, + "name": "IERC20", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 5052, + "src": "1671:6:24", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$5052", + "typeString": "contract IERC20" + } + } + }, + { + "constant": false, + "id": 2095, + "name": "_legacyToken", + "nodeType": "VariableDeclaration", + "scope": 2234, + "src": "1726:27:24", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$5052", + "typeString": "contract IERC20" + }, + "typeName": { + "contractScope": null, + "id": 2094, + "name": "IERC20", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 5052, + "src": "1726:6:24", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$5052", + "typeString": "contract IERC20" + } + }, + "value": null, + "visibility": "private" + }, + { + "constant": false, + "id": 2097, + "name": "_newToken", + "nodeType": "VariableDeclaration", + "scope": 2234, + "src": "1802:31:24", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20Mintable_$4881", + "typeString": "contract ERC20Mintable" + }, + "typeName": { + "contractScope": null, + "id": 2096, + "name": "ERC20Mintable", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 4881, + "src": "1802:13:24", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20Mintable_$4881", + "typeString": "contract ERC20Mintable" + } + }, + "value": null, + "visibility": "private" + }, + { + "body": { + "id": 2116, + "nodeType": "Block", + "src": "1956:96:24", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 2109, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2104, + "name": "legacyToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2099, + "src": "1982:11:24", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$5052", + "typeString": "contract IERC20" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IERC20_$5052", + "typeString": "contract IERC20" + } + ], + "id": 2103, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "1974:7:24", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 2105, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1974:20:24", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 2107, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2006:1:24", + "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": 2106, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "1998:7:24", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 2108, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1998:10:24", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "1974:34:24", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 2102, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6848, + 6849 + ], + "referencedDeclaration": 6848, + "src": "1966:7:24", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 2110, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1966:43:24", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2111, + "nodeType": "ExpressionStatement", + "src": "1966:43:24" + }, + { + "expression": { + "argumentTypes": null, + "id": 2114, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 2112, + "name": "_legacyToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2095, + "src": "2019:12:24", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$5052", + "typeString": "contract IERC20" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 2113, + "name": "legacyToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2099, + "src": "2034:11:24", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$5052", + "typeString": "contract IERC20" + } + }, + "src": "2019:26:24", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$5052", + "typeString": "contract IERC20" + } + }, + "id": 2115, + "nodeType": "ExpressionStatement", + "src": "2019:26:24" + } + ] + }, + "documentation": "@param legacyToken address of the old token contract", + "id": 2117, + "implemented": true, + "kind": "constructor", + "modifiers": [], + "name": "", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2100, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2099, + "name": "legacyToken", + "nodeType": "VariableDeclaration", + "scope": 2117, + "src": "1929:18:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$5052", + "typeString": "contract IERC20" + }, + "typeName": { + "contractScope": null, + "id": 2098, + "name": "IERC20", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 5052, + "src": "1929:6:24", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$5052", + "typeString": "contract IERC20" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1928:20:24" + }, + "returnParameters": { + "id": 2101, + "nodeType": "ParameterList", + "parameters": [], + "src": "1956:0:24" + }, + "scope": 2234, + "src": "1916:136:24", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 2124, + "nodeType": "Block", + "src": "2187:36:24", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 2122, + "name": "_legacyToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2095, + "src": "2204:12:24", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$5052", + "typeString": "contract IERC20" + } + }, + "functionReturnParameters": 2121, + "id": 2123, + "nodeType": "Return", + "src": "2197:19:24" + } + ] + }, + "documentation": "@dev Returns the legacy token that is being migrated.", + "id": 2125, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "legacyToken", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2118, + "nodeType": "ParameterList", + "parameters": [], + "src": "2155:2:24" + }, + "returnParameters": { + "id": 2121, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2120, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 2125, + "src": "2179:6:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$5052", + "typeString": "contract IERC20" + }, + "typeName": { + "contractScope": null, + "id": 2119, + "name": "IERC20", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 5052, + "src": "2179:6:24", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$5052", + "typeString": "contract IERC20" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2178:8:24" + }, + "scope": 2234, + "src": "2135:88:24", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 2132, + "nodeType": "Block", + "src": "2355:33:24", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 2130, + "name": "_newToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2097, + "src": "2372:9:24", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20Mintable_$4881", + "typeString": "contract ERC20Mintable" + } + }, + "functionReturnParameters": 2129, + "id": 2131, + "nodeType": "Return", + "src": "2365:16:24" + } + ] + }, + "documentation": "@dev Returns the new token to which we are migrating.", + "id": 2133, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "newToken", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2126, + "nodeType": "ParameterList", + "parameters": [], + "src": "2323:2:24" + }, + "returnParameters": { + "id": 2129, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2128, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 2133, + "src": "2347:6:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$5052", + "typeString": "contract IERC20" + }, + "typeName": { + "contractScope": null, + "id": 2127, + "name": "IERC20", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 5052, + "src": "2347:6:24", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$5052", + "typeString": "contract IERC20" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2346:8:24" + }, + "scope": 2234, + "src": "2306:82:24", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 2171, + "nodeType": "Block", + "src": "2663:190:24", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 2145, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2140, + "name": "_newToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2097, + "src": "2689:9:24", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20Mintable_$4881", + "typeString": "contract ERC20Mintable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_ERC20Mintable_$4881", + "typeString": "contract ERC20Mintable" + } + ], + "id": 2139, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2681:7:24", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 2141, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2681:18:24", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 2143, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2711:1:24", + "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": 2142, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2703:7:24", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 2144, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2703:10:24", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "2681:32:24", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 2138, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6848, + 6849 + ], + "referencedDeclaration": 6848, + "src": "2673:7:24", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 2146, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2673:41:24", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2147, + "nodeType": "ExpressionStatement", + "src": "2673:41:24" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 2155, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2150, + "name": "newToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2135, + "src": "2740:8:24", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20Mintable_$4881", + "typeString": "contract ERC20Mintable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_ERC20Mintable_$4881", + "typeString": "contract ERC20Mintable" + } + ], + "id": 2149, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2732:7:24", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 2151, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2732:17:24", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 2153, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2761:1:24", + "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": 2152, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2753:7:24", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 2154, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2753:10:24", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "2732:31:24", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 2148, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6848, + 6849 + ], + "referencedDeclaration": 6848, + "src": "2724:7:24", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 2156, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2724:40:24", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2157, + "nodeType": "ExpressionStatement", + "src": "2724:40:24" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2162, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6932, + "src": "2808:4:24", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20Migrator_$2234", + "typeString": "contract ERC20Migrator" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_ERC20Migrator_$2234", + "typeString": "contract ERC20Migrator" + } + ], + "id": 2161, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2800:7:24", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 2163, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2800:13:24", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 2159, + "name": "newToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2135, + "src": "2782:8:24", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20Mintable_$4881", + "typeString": "contract ERC20Mintable" + } + }, + "id": 2160, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "isMinter", + "nodeType": "MemberAccess", + "referencedDeclaration": 245, + "src": "2782:17:24", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_bool_$", + "typeString": "function (address) view external returns (bool)" + } + }, + "id": 2164, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2782:32:24", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 2158, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6848, + 6849 + ], + "referencedDeclaration": 6848, + "src": "2774:7:24", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 2165, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2774:41:24", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2166, + "nodeType": "ExpressionStatement", + "src": "2774:41:24" + }, + { + "expression": { + "argumentTypes": null, + "id": 2169, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 2167, + "name": "_newToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2097, + "src": "2826:9:24", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20Mintable_$4881", + "typeString": "contract ERC20Mintable" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 2168, + "name": "newToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2135, + "src": "2838:8:24", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20Mintable_$4881", + "typeString": "contract ERC20Mintable" + } + }, + "src": "2826:20:24", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20Mintable_$4881", + "typeString": "contract ERC20Mintable" + } + }, + "id": 2170, + "nodeType": "ExpressionStatement", + "src": "2826:20:24" + } + ] + }, + "documentation": "@dev Begins the migration by setting which is the new token that will be\nminted. This contract must be a minter for the new token.\n@param newToken the token that will be minted", + "id": 2172, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "beginMigration", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2136, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2135, + "name": "newToken", + "nodeType": "VariableDeclaration", + "scope": 2172, + "src": "2632:22:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20Mintable_$4881", + "typeString": "contract ERC20Mintable" + }, + "typeName": { + "contractScope": null, + "id": 2134, + "name": "ERC20Mintable", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 4881, + "src": "2632:13:24", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20Mintable_$4881", + "typeString": "contract ERC20Mintable" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2631:24:24" + }, + "returnParameters": { + "id": 2137, + "nodeType": "ParameterList", + "parameters": [], + "src": "2663:0:24" + }, + "scope": 2234, + "src": "2608:245:24", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 2196, + "nodeType": "Block", + "src": "3188:119:24", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2182, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2174, + "src": "3228:7:24", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2184, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6932, + "src": "3245:4:24", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20Migrator_$2234", + "typeString": "contract ERC20Migrator" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_ERC20Migrator_$2234", + "typeString": "contract ERC20Migrator" + } + ], + "id": 2183, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "3237:7:24", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 2185, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3237:13:24", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 2186, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2176, + "src": "3252:6:24", + "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": 2179, + "name": "_legacyToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2095, + "src": "3198:12:24", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$5052", + "typeString": "contract IERC20" + } + }, + "id": 2181, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "safeTransferFrom", + "nodeType": "MemberAccess", + "referencedDeclaration": 5098, + "src": "3198:29:24", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$5052_$_t_address_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$5052_$", + "typeString": "function (contract IERC20,address,address,uint256)" + } + }, + "id": 2187, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3198:61:24", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2188, + "nodeType": "ExpressionStatement", + "src": "3198:61:24" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2192, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2174, + "src": "3284:7:24", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 2193, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2176, + "src": "3293:6:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 2189, + "name": "_newToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2097, + "src": "3269:9:24", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20Mintable_$4881", + "typeString": "contract ERC20Mintable" + } + }, + "id": 2191, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "mint", + "nodeType": "MemberAccess", + "referencedDeclaration": 4880, + "src": "3269:14:24", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,uint256) external returns (bool)" + } + }, + "id": 2194, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3269:31:24", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2195, + "nodeType": "ExpressionStatement", + "src": "3269:31:24" + } + ] + }, + "documentation": "@dev Transfers part of an account's balance in the old token to this\ncontract, and mints the same amount of new tokens for that account.\n@param account whose tokens will be migrated\n@param amount amount of tokens to be migrated", + "id": 2197, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "migrate", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2177, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2174, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 2197, + "src": "3148:15:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2173, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3148:7:24", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2176, + "name": "amount", + "nodeType": "VariableDeclaration", + "scope": 2197, + "src": "3165:14:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2175, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3165:7:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3147:33:24" + }, + "returnParameters": { + "id": 2178, + "nodeType": "ParameterList", + "parameters": [], + "src": "3188:0:24" + }, + "scope": 2234, + "src": "3131:176:24", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 2232, + "nodeType": "Block", + "src": "3583:231:24", + "statements": [ + { + "assignments": [ + 2203 + ], + "declarations": [ + { + "constant": false, + "id": 2203, + "name": "balance", + "nodeType": "VariableDeclaration", + "scope": 2232, + "src": "3593:15:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2202, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3593:7:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 2208, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2206, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2199, + "src": "3634:7:24", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 2204, + "name": "_legacyToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2095, + "src": "3611:12:24", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$5052", + "typeString": "contract IERC20" + } + }, + "id": 2205, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "balanceOf", + "nodeType": "MemberAccess", + "referencedDeclaration": 5026, + "src": "3611:22:24", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$", + "typeString": "function (address) view external returns (uint256)" + } + }, + "id": 2207, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3611:31:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "3593:49:24" + }, + { + "assignments": [ + 2210 + ], + "declarations": [ + { + "constant": false, + "id": 2210, + "name": "allowance", + "nodeType": "VariableDeclaration", + "scope": 2232, + "src": "3652:17:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2209, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3652:7:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 2218, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2213, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2199, + "src": "3695:7:24", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2215, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6932, + "src": "3712:4:24", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20Migrator_$2234", + "typeString": "contract ERC20Migrator" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_ERC20Migrator_$2234", + "typeString": "contract ERC20Migrator" + } + ], + "id": 2214, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "3704:7:24", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 2216, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3704:13:24", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 2211, + "name": "_legacyToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2095, + "src": "3672:12:24", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$5052", + "typeString": "contract IERC20" + } + }, + "id": 2212, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "allowance", + "nodeType": "MemberAccess", + "referencedDeclaration": 5035, + "src": "3672:22:24", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$", + "typeString": "function (address,address) view external returns (uint256)" + } + }, + "id": 2217, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3672:46:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "3652:66:24" + }, + { + "assignments": [ + 2220 + ], + "declarations": [ + { + "constant": false, + "id": 2220, + "name": "amount", + "nodeType": "VariableDeclaration", + "scope": 2232, + "src": "3728:14:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2219, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3728:7:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 2226, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2223, + "name": "balance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2203, + "src": "3754:7:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 2224, + "name": "allowance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2210, + "src": "3763:9:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 2221, + "name": "Math", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3354, + "src": "3745:4:24", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Math_$3354_$", + "typeString": "type(library Math)" + } + }, + "id": 2222, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "min", + "nodeType": "MemberAccess", + "referencedDeclaration": 3321, + "src": "3745:8:24", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 2225, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3745:28:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "3728:45:24" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2228, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2199, + "src": "3791:7:24", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 2229, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2220, + "src": "3800:6:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 2227, + "name": "migrate", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2197, + "src": "3783:7:24", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 2230, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3783:24:24", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2231, + "nodeType": "ExpressionStatement", + "src": "3783:24:24" + } + ] + }, + "documentation": "@dev Transfers all of an account's allowed balance in the old token to\nthis contract, and mints the same amount of new tokens for that account.\n@param account whose tokens will be migrated", + "id": 2233, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "migrateAll", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2200, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2199, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 2233, + "src": "3559:15:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2198, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3559:7:24", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3558:17:24" + }, + "returnParameters": { + "id": 2201, + "nodeType": "ParameterList", + "parameters": [], + "src": "3583:0:24" + }, + "scope": 2234, + "src": "3539:275:24", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + } + ], + "scope": 2235, + "src": "1622:2194:24" + } + ], + "src": "0:3817:24" + }, + "legacyAST": { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/drafts/ERC20Migrator.sol", + "exportedSymbols": { + "ERC20Migrator": [ + 2234 + ] + }, + "id": 2235, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 2086, + "literals": [ + "solidity", + "^", + "0.5", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "0:23:24" + }, + { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/token/ERC20/IERC20.sol", + "file": "../token/ERC20/IERC20.sol", + "id": 2087, + "nodeType": "ImportDirective", + "scope": 2235, + "sourceUnit": 5053, + "src": "25:35:24", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/token/ERC20/ERC20Mintable.sol", + "file": "../token/ERC20/ERC20Mintable.sol", + "id": 2088, + "nodeType": "ImportDirective", + "scope": 2235, + "sourceUnit": 4882, + "src": "61:42:24", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol", + "file": "../token/ERC20/SafeERC20.sol", + "id": 2089, + "nodeType": "ImportDirective", + "scope": 2235, + "sourceUnit": 5197, + "src": "104:38:24", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/math/Math.sol", + "file": "../math/Math.sol", + "id": 2090, + "nodeType": "ImportDirective", + "scope": 2235, + "sourceUnit": 3355, + "src": "143:26:24", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [], + "contractDependencies": [], + "contractKind": "contract", + "documentation": "@title ERC20Migrator\n@dev This contract can be used to migrate an ERC20 token from one\ncontract to another, where each token holder has to opt-in to the migration.\nTo opt-in, users must approve for this contract the number of tokens they\nwant to migrate. Once the allowance is set up, anyone can trigger the\nmigration to the new token contract. In this way, token holders \"turn in\"\ntheir old balance and will be minted an equal amount in the new token.\nThe new token contract must be mintable. For the precise interface refer to\nOpenZeppelin's ERC20Mintable, but the only functions that are needed are\n`isMinter(address)` and `mint(address, amount)`. The migrator will check\nthat it is a minter for the token.\nThe balance from the legacy token will be transfered to the migrator, as it\nis migrated, and remain there forever.\nAlthough this contract can be used in many different scenarios, the main\nmotivation was to provide a way to migrate ERC20 tokens into an upgradeable\nversion of it using ZeppelinOS. To read more about how this can be done\nusing this implementation, please follow the official documentation site of\nZeppelinOS: https://docs.zeppelinos.org/docs/erc20_onboarding.html\nExample of usage:\n```\nconst migrator = await ERC20Migrator.new(legacyToken.address);\nawait newToken.addMinter(migrator.address);\nawait migrator.beginMigration(newToken.address);\n```", + "fullyImplemented": true, + "id": 2234, + "linearizedBaseContracts": [ + 2234 + ], + "name": "ERC20Migrator", + "nodeType": "ContractDefinition", + "nodes": [ + { + "id": 2093, + "libraryName": { + "contractScope": null, + "id": 2091, + "name": "SafeERC20", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 5196, + "src": "1657:9:24", + "typeDescriptions": { + "typeIdentifier": "t_contract$_SafeERC20_$5196", + "typeString": "library SafeERC20" + } + }, + "nodeType": "UsingForDirective", + "src": "1651:27:24", + "typeName": { + "contractScope": null, + "id": 2092, + "name": "IERC20", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 5052, + "src": "1671:6:24", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$5052", + "typeString": "contract IERC20" + } + } + }, + { + "constant": false, + "id": 2095, + "name": "_legacyToken", + "nodeType": "VariableDeclaration", + "scope": 2234, + "src": "1726:27:24", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$5052", + "typeString": "contract IERC20" + }, + "typeName": { + "contractScope": null, + "id": 2094, + "name": "IERC20", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 5052, + "src": "1726:6:24", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$5052", + "typeString": "contract IERC20" + } + }, + "value": null, + "visibility": "private" + }, + { + "constant": false, + "id": 2097, + "name": "_newToken", + "nodeType": "VariableDeclaration", + "scope": 2234, + "src": "1802:31:24", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20Mintable_$4881", + "typeString": "contract ERC20Mintable" + }, + "typeName": { + "contractScope": null, + "id": 2096, + "name": "ERC20Mintable", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 4881, + "src": "1802:13:24", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20Mintable_$4881", + "typeString": "contract ERC20Mintable" + } + }, + "value": null, + "visibility": "private" + }, + { + "body": { + "id": 2116, + "nodeType": "Block", + "src": "1956:96:24", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 2109, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2104, + "name": "legacyToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2099, + "src": "1982:11:24", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$5052", + "typeString": "contract IERC20" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IERC20_$5052", + "typeString": "contract IERC20" + } + ], + "id": 2103, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "1974:7:24", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 2105, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1974:20:24", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 2107, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2006:1:24", + "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": 2106, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "1998:7:24", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 2108, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1998:10:24", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "1974:34:24", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 2102, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6848, + 6849 + ], + "referencedDeclaration": 6848, + "src": "1966:7:24", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 2110, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1966:43:24", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2111, + "nodeType": "ExpressionStatement", + "src": "1966:43:24" + }, + { + "expression": { + "argumentTypes": null, + "id": 2114, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 2112, + "name": "_legacyToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2095, + "src": "2019:12:24", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$5052", + "typeString": "contract IERC20" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 2113, + "name": "legacyToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2099, + "src": "2034:11:24", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$5052", + "typeString": "contract IERC20" + } + }, + "src": "2019:26:24", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$5052", + "typeString": "contract IERC20" + } + }, + "id": 2115, + "nodeType": "ExpressionStatement", + "src": "2019:26:24" + } + ] + }, + "documentation": "@param legacyToken address of the old token contract", + "id": 2117, + "implemented": true, + "kind": "constructor", + "modifiers": [], + "name": "", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2100, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2099, + "name": "legacyToken", + "nodeType": "VariableDeclaration", + "scope": 2117, + "src": "1929:18:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$5052", + "typeString": "contract IERC20" + }, + "typeName": { + "contractScope": null, + "id": 2098, + "name": "IERC20", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 5052, + "src": "1929:6:24", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$5052", + "typeString": "contract IERC20" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1928:20:24" + }, + "returnParameters": { + "id": 2101, + "nodeType": "ParameterList", + "parameters": [], + "src": "1956:0:24" + }, + "scope": 2234, + "src": "1916:136:24", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 2124, + "nodeType": "Block", + "src": "2187:36:24", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 2122, + "name": "_legacyToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2095, + "src": "2204:12:24", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$5052", + "typeString": "contract IERC20" + } + }, + "functionReturnParameters": 2121, + "id": 2123, + "nodeType": "Return", + "src": "2197:19:24" + } + ] + }, + "documentation": "@dev Returns the legacy token that is being migrated.", + "id": 2125, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "legacyToken", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2118, + "nodeType": "ParameterList", + "parameters": [], + "src": "2155:2:24" + }, + "returnParameters": { + "id": 2121, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2120, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 2125, + "src": "2179:6:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$5052", + "typeString": "contract IERC20" + }, + "typeName": { + "contractScope": null, + "id": 2119, + "name": "IERC20", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 5052, + "src": "2179:6:24", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$5052", + "typeString": "contract IERC20" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2178:8:24" + }, + "scope": 2234, + "src": "2135:88:24", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 2132, + "nodeType": "Block", + "src": "2355:33:24", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 2130, + "name": "_newToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2097, + "src": "2372:9:24", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20Mintable_$4881", + "typeString": "contract ERC20Mintable" + } + }, + "functionReturnParameters": 2129, + "id": 2131, + "nodeType": "Return", + "src": "2365:16:24" + } + ] + }, + "documentation": "@dev Returns the new token to which we are migrating.", + "id": 2133, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "newToken", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2126, + "nodeType": "ParameterList", + "parameters": [], + "src": "2323:2:24" + }, + "returnParameters": { + "id": 2129, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2128, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 2133, + "src": "2347:6:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$5052", + "typeString": "contract IERC20" + }, + "typeName": { + "contractScope": null, + "id": 2127, + "name": "IERC20", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 5052, + "src": "2347:6:24", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$5052", + "typeString": "contract IERC20" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2346:8:24" + }, + "scope": 2234, + "src": "2306:82:24", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 2171, + "nodeType": "Block", + "src": "2663:190:24", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 2145, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2140, + "name": "_newToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2097, + "src": "2689:9:24", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20Mintable_$4881", + "typeString": "contract ERC20Mintable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_ERC20Mintable_$4881", + "typeString": "contract ERC20Mintable" + } + ], + "id": 2139, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2681:7:24", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 2141, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2681:18:24", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 2143, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2711:1:24", + "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": 2142, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2703:7:24", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 2144, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2703:10:24", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "2681:32:24", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 2138, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6848, + 6849 + ], + "referencedDeclaration": 6848, + "src": "2673:7:24", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 2146, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2673:41:24", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2147, + "nodeType": "ExpressionStatement", + "src": "2673:41:24" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 2155, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2150, + "name": "newToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2135, + "src": "2740:8:24", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20Mintable_$4881", + "typeString": "contract ERC20Mintable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_ERC20Mintable_$4881", + "typeString": "contract ERC20Mintable" + } + ], + "id": 2149, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2732:7:24", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 2151, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2732:17:24", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 2153, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2761:1:24", + "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": 2152, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2753:7:24", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 2154, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2753:10:24", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "2732:31:24", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 2148, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6848, + 6849 + ], + "referencedDeclaration": 6848, + "src": "2724:7:24", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 2156, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2724:40:24", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2157, + "nodeType": "ExpressionStatement", + "src": "2724:40:24" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2162, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6932, + "src": "2808:4:24", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20Migrator_$2234", + "typeString": "contract ERC20Migrator" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_ERC20Migrator_$2234", + "typeString": "contract ERC20Migrator" + } + ], + "id": 2161, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2800:7:24", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 2163, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2800:13:24", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 2159, + "name": "newToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2135, + "src": "2782:8:24", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20Mintable_$4881", + "typeString": "contract ERC20Mintable" + } + }, + "id": 2160, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "isMinter", + "nodeType": "MemberAccess", + "referencedDeclaration": 245, + "src": "2782:17:24", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_bool_$", + "typeString": "function (address) view external returns (bool)" + } + }, + "id": 2164, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2782:32:24", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 2158, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6848, + 6849 + ], + "referencedDeclaration": 6848, + "src": "2774:7:24", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 2165, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2774:41:24", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2166, + "nodeType": "ExpressionStatement", + "src": "2774:41:24" + }, + { + "expression": { + "argumentTypes": null, + "id": 2169, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 2167, + "name": "_newToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2097, + "src": "2826:9:24", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20Mintable_$4881", + "typeString": "contract ERC20Mintable" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 2168, + "name": "newToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2135, + "src": "2838:8:24", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20Mintable_$4881", + "typeString": "contract ERC20Mintable" + } + }, + "src": "2826:20:24", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20Mintable_$4881", + "typeString": "contract ERC20Mintable" + } + }, + "id": 2170, + "nodeType": "ExpressionStatement", + "src": "2826:20:24" + } + ] + }, + "documentation": "@dev Begins the migration by setting which is the new token that will be\nminted. This contract must be a minter for the new token.\n@param newToken the token that will be minted", + "id": 2172, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "beginMigration", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2136, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2135, + "name": "newToken", + "nodeType": "VariableDeclaration", + "scope": 2172, + "src": "2632:22:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20Mintable_$4881", + "typeString": "contract ERC20Mintable" + }, + "typeName": { + "contractScope": null, + "id": 2134, + "name": "ERC20Mintable", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 4881, + "src": "2632:13:24", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20Mintable_$4881", + "typeString": "contract ERC20Mintable" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2631:24:24" + }, + "returnParameters": { + "id": 2137, + "nodeType": "ParameterList", + "parameters": [], + "src": "2663:0:24" + }, + "scope": 2234, + "src": "2608:245:24", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 2196, + "nodeType": "Block", + "src": "3188:119:24", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2182, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2174, + "src": "3228:7:24", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2184, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6932, + "src": "3245:4:24", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20Migrator_$2234", + "typeString": "contract ERC20Migrator" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_ERC20Migrator_$2234", + "typeString": "contract ERC20Migrator" + } + ], + "id": 2183, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "3237:7:24", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 2185, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3237:13:24", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 2186, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2176, + "src": "3252:6:24", + "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": 2179, + "name": "_legacyToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2095, + "src": "3198:12:24", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$5052", + "typeString": "contract IERC20" + } + }, + "id": 2181, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "safeTransferFrom", + "nodeType": "MemberAccess", + "referencedDeclaration": 5098, + "src": "3198:29:24", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$5052_$_t_address_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$5052_$", + "typeString": "function (contract IERC20,address,address,uint256)" + } + }, + "id": 2187, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3198:61:24", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2188, + "nodeType": "ExpressionStatement", + "src": "3198:61:24" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2192, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2174, + "src": "3284:7:24", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 2193, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2176, + "src": "3293:6:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 2189, + "name": "_newToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2097, + "src": "3269:9:24", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20Mintable_$4881", + "typeString": "contract ERC20Mintable" + } + }, + "id": 2191, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "mint", + "nodeType": "MemberAccess", + "referencedDeclaration": 4880, + "src": "3269:14:24", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,uint256) external returns (bool)" + } + }, + "id": 2194, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3269:31:24", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2195, + "nodeType": "ExpressionStatement", + "src": "3269:31:24" + } + ] + }, + "documentation": "@dev Transfers part of an account's balance in the old token to this\ncontract, and mints the same amount of new tokens for that account.\n@param account whose tokens will be migrated\n@param amount amount of tokens to be migrated", + "id": 2197, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "migrate", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2177, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2174, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 2197, + "src": "3148:15:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2173, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3148:7:24", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2176, + "name": "amount", + "nodeType": "VariableDeclaration", + "scope": 2197, + "src": "3165:14:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2175, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3165:7:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3147:33:24" + }, + "returnParameters": { + "id": 2178, + "nodeType": "ParameterList", + "parameters": [], + "src": "3188:0:24" + }, + "scope": 2234, + "src": "3131:176:24", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 2232, + "nodeType": "Block", + "src": "3583:231:24", + "statements": [ + { + "assignments": [ + 2203 + ], + "declarations": [ + { + "constant": false, + "id": 2203, + "name": "balance", + "nodeType": "VariableDeclaration", + "scope": 2232, + "src": "3593:15:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2202, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3593:7:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 2208, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2206, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2199, + "src": "3634:7:24", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 2204, + "name": "_legacyToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2095, + "src": "3611:12:24", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$5052", + "typeString": "contract IERC20" + } + }, + "id": 2205, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "balanceOf", + "nodeType": "MemberAccess", + "referencedDeclaration": 5026, + "src": "3611:22:24", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$", + "typeString": "function (address) view external returns (uint256)" + } + }, + "id": 2207, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3611:31:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "3593:49:24" + }, + { + "assignments": [ + 2210 + ], + "declarations": [ + { + "constant": false, + "id": 2210, + "name": "allowance", + "nodeType": "VariableDeclaration", + "scope": 2232, + "src": "3652:17:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2209, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3652:7:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 2218, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2213, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2199, + "src": "3695:7:24", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2215, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6932, + "src": "3712:4:24", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20Migrator_$2234", + "typeString": "contract ERC20Migrator" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_ERC20Migrator_$2234", + "typeString": "contract ERC20Migrator" + } + ], + "id": 2214, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "3704:7:24", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 2216, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3704:13:24", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 2211, + "name": "_legacyToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2095, + "src": "3672:12:24", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$5052", + "typeString": "contract IERC20" + } + }, + "id": 2212, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "allowance", + "nodeType": "MemberAccess", + "referencedDeclaration": 5035, + "src": "3672:22:24", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$", + "typeString": "function (address,address) view external returns (uint256)" + } + }, + "id": 2217, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3672:46:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "3652:66:24" + }, + { + "assignments": [ + 2220 + ], + "declarations": [ + { + "constant": false, + "id": 2220, + "name": "amount", + "nodeType": "VariableDeclaration", + "scope": 2232, + "src": "3728:14:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2219, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3728:7:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 2226, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2223, + "name": "balance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2203, + "src": "3754:7:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 2224, + "name": "allowance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2210, + "src": "3763:9:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 2221, + "name": "Math", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3354, + "src": "3745:4:24", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Math_$3354_$", + "typeString": "type(library Math)" + } + }, + "id": 2222, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "min", + "nodeType": "MemberAccess", + "referencedDeclaration": 3321, + "src": "3745:8:24", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 2225, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3745:28:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "3728:45:24" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2228, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2199, + "src": "3791:7:24", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 2229, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2220, + "src": "3800:6:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 2227, + "name": "migrate", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2197, + "src": "3783:7:24", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 2230, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3783:24:24", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2231, + "nodeType": "ExpressionStatement", + "src": "3783:24:24" + } + ] + }, + "documentation": "@dev Transfers all of an account's allowed balance in the old token to\nthis contract, and mints the same amount of new tokens for that account.\n@param account whose tokens will be migrated", + "id": 2233, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "migrateAll", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2200, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2199, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 2233, + "src": "3559:15:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2198, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3559:7:24", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3558:17:24" + }, + "returnParameters": { + "id": 2201, + "nodeType": "ParameterList", + "parameters": [], + "src": "3583:0:24" + }, + "scope": 2234, + "src": "3539:275:24", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + } + ], + "scope": 2235, + "src": "1622:2194:24" + } + ], + "src": "0:3817:24" + }, + "compiler": { + "name": "solc", + "version": "0.5.0+commit.1d4f565a.Emscripten.clang" + }, + "networks": {}, + "schemaVersion": "3.0.0", + "updatedAt": "2019-01-04T21:44:02.876Z", + "devdoc": { + "details": "This contract can be used to migrate an ERC20 token from one contract to another, where each token holder has to opt-in to the migration. To opt-in, users must approve for this contract the number of tokens they want to migrate. Once the allowance is set up, anyone can trigger the migration to the new token contract. In this way, token holders \"turn in\" their old balance and will be minted an equal amount in the new token. The new token contract must be mintable. For the precise interface refer to OpenZeppelin's ERC20Mintable, but the only functions that are needed are `isMinter(address)` and `mint(address, amount)`. The migrator will check that it is a minter for the token. The balance from the legacy token will be transfered to the migrator, as it is migrated, and remain there forever. Although this contract can be used in many different scenarios, the main motivation was to provide a way to migrate ERC20 tokens into an upgradeable version of it using ZeppelinOS. To read more about how this can be done using this implementation, please follow the official documentation site of ZeppelinOS: https://docs.zeppelinos.org/docs/erc20_onboarding.html Example of usage: ``` const migrator = await ERC20Migrator.new(legacyToken.address); await newToken.addMinter(migrator.address); await migrator.beginMigration(newToken.address); ```", + "methods": { + "beginMigration(address)": { + "details": "Begins the migration by setting which is the new token that will be minted. This contract must be a minter for the new token.", + "params": { + "newToken": "the token that will be minted" + } + }, + "constructor": { + "params": { + "legacyToken": "address of the old token contract" + } + }, + "legacyToken()": { + "details": "Returns the legacy token that is being migrated." + }, + "migrate(address,uint256)": { + "details": "Transfers part of an account's balance in the old token to this contract, and mints the same amount of new tokens for that account.", + "params": { + "account": "whose tokens will be migrated", + "amount": "amount of tokens to be migrated" + } + }, + "migrateAll(address)": { + "details": "Transfers all of an account's allowed balance in the old token to this contract, and mints the same amount of new tokens for that account.", + "params": { + "account": "whose tokens will be migrated" + } + }, + "newToken()": { + "details": "Returns the new token to which we are migrating." + } + }, + "title": "ERC20Migrator" + }, + "userdoc": { + "methods": {} + } +} \ No newline at end of file diff --git a/node_modules/openzeppelin-solidity/build/contracts/ERC20Mintable.json b/node_modules/openzeppelin-solidity/build/contracts/ERC20Mintable.json new file mode 100644 index 0000000..ed63864 --- /dev/null +++ b/node_modules/openzeppelin-solidity/build/contracts/ERC20Mintable.json @@ -0,0 +1,1069 @@ +{ + "contractName": "ERC20Mintable", + "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": false, + "inputs": [ + { + "name": "spender", + "type": "address" + }, + { + "name": "addedValue", + "type": "uint256" + } + ], + "name": "increaseAllowance", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "owner", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "account", + "type": "address" + } + ], + "name": "addMinter", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [], + "name": "renounceMinter", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "spender", + "type": "address" + }, + { + "name": "subtractedValue", + "type": "uint256" + } + ], + "name": "decreaseAllowance", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "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": "account", + "type": "address" + } + ], + "name": "isMinter", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "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": "account", + "type": "address" + } + ], + "name": "MinterAdded", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "account", + "type": "address" + } + ], + "name": "MinterRemoved", + "type": "event" + }, + { + "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" + }, + { + "constant": false, + "inputs": [ + { + "name": "to", + "type": "address" + }, + { + "name": "value", + "type": "uint256" + } + ], + "name": "mint", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x608060405261001c33610021640100000000026401000000009004565b6101db565b61004281600361008864010000000002611327179091906401000000009004565b8073ffffffffffffffffffffffffffffffffffffffff167f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f660405160405180910390a250565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515156100c457600080fd5b6100dd8282610147640100000000026401000000009004565b1515156100e957600080fd5b60018260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415151561018457600080fd5b8260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6114b280620001eb6000396000f3fe6080604052600436106100ba576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063095ea7b3146100bf57806318160ddd1461013257806323b872dd1461015d57806339509351146101f057806340c10f191461026357806370a08231146102d6578063983b2d561461033b578063986502751461038c578063a457c2d7146103a3578063a9059cbb14610416578063aa271e1a14610489578063dd62ed3e146104f2575b600080fd5b3480156100cb57600080fd5b50610118600480360360408110156100e257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610577565b604051808215151515815260200191505060405180910390f35b34801561013e57600080fd5b506101476106a4565b6040518082815260200191505060405180910390f35b34801561016957600080fd5b506101d66004803603606081101561018057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506106ae565b604051808215151515815260200191505060405180910390f35b3480156101fc57600080fd5b506102496004803603604081101561021357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506108b6565b604051808215151515815260200191505060405180910390f35b34801561026f57600080fd5b506102bc6004803603604081101561028657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610aed565b604051808215151515815260200191505060405180910390f35b3480156102e257600080fd5b50610325600480360360208110156102f957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610b17565b6040518082815260200191505060405180910390f35b34801561034757600080fd5b5061038a6004803603602081101561035e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610b5f565b005b34801561039857600080fd5b506103a1610b7f565b005b3480156103af57600080fd5b506103fc600480360360408110156103c657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610b8a565b604051808215151515815260200191505060405180910390f35b34801561042257600080fd5b5061046f6004803603604081101561043957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610dc1565b604051808215151515815260200191505060405180910390f35b34801561049557600080fd5b506104d8600480360360208110156104ac57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610dd8565b604051808215151515815260200191505060405180910390f35b3480156104fe57600080fd5b506105616004803603604081101561051557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610df5565b6040518082815260200191505060405180910390f35b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141515156105b457600080fd5b81600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b6000600254905090565b600061073f82600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610e7c90919063ffffffff16565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506107ca848484610e9e565b3373ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a3600190509392505050565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141515156108f357600080fd5b61098282600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461106a90919063ffffffff16565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a36001905092915050565b6000610af833610dd8565b1515610b0357600080fd5b610b0d838361108b565b6001905092915050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610b6833610dd8565b1515610b7357600080fd5b610b7c816111df565b50565b610b8833611239565b565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614151515610bc757600080fd5b610c5682600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610e7c90919063ffffffff16565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a36001905092915050565b6000610dce338484610e9e565b6001905092915050565b6000610dee82600361129390919063ffffffff16565b9050919050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000828211151515610e8d57600080fd5b600082840390508091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614151515610eda57600080fd5b610f2b816000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610e7c90919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610fbe816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461106a90919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b600080828401905083811015151561108157600080fd5b8091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141515156110c757600080fd5b6110dc8160025461106a90919063ffffffff16565b600281905550611133816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461106a90919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b6111f381600361132790919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f660405160405180910390a250565b61124d8160036113d790919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167fe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb6669260405160405180910390a250565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141515156112d057600080fd5b8260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415151561136357600080fd5b61136d8282611293565b15151561137957600080fd5b60018260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415151561141357600080fd5b61141d8282611293565b151561142857600080fd5b60008260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550505056fea165627a7a72305820f79fec8ca2cbef5aec09f04d20246b218c2fad324b283f50a5bb15b12a208a7e0029", + "deployedBytecode": "0x6080604052600436106100ba576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063095ea7b3146100bf57806318160ddd1461013257806323b872dd1461015d57806339509351146101f057806340c10f191461026357806370a08231146102d6578063983b2d561461033b578063986502751461038c578063a457c2d7146103a3578063a9059cbb14610416578063aa271e1a14610489578063dd62ed3e146104f2575b600080fd5b3480156100cb57600080fd5b50610118600480360360408110156100e257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610577565b604051808215151515815260200191505060405180910390f35b34801561013e57600080fd5b506101476106a4565b6040518082815260200191505060405180910390f35b34801561016957600080fd5b506101d66004803603606081101561018057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506106ae565b604051808215151515815260200191505060405180910390f35b3480156101fc57600080fd5b506102496004803603604081101561021357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506108b6565b604051808215151515815260200191505060405180910390f35b34801561026f57600080fd5b506102bc6004803603604081101561028657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610aed565b604051808215151515815260200191505060405180910390f35b3480156102e257600080fd5b50610325600480360360208110156102f957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610b17565b6040518082815260200191505060405180910390f35b34801561034757600080fd5b5061038a6004803603602081101561035e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610b5f565b005b34801561039857600080fd5b506103a1610b7f565b005b3480156103af57600080fd5b506103fc600480360360408110156103c657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610b8a565b604051808215151515815260200191505060405180910390f35b34801561042257600080fd5b5061046f6004803603604081101561043957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610dc1565b604051808215151515815260200191505060405180910390f35b34801561049557600080fd5b506104d8600480360360208110156104ac57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610dd8565b604051808215151515815260200191505060405180910390f35b3480156104fe57600080fd5b506105616004803603604081101561051557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610df5565b6040518082815260200191505060405180910390f35b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141515156105b457600080fd5b81600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b6000600254905090565b600061073f82600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610e7c90919063ffffffff16565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506107ca848484610e9e565b3373ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a3600190509392505050565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141515156108f357600080fd5b61098282600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461106a90919063ffffffff16565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a36001905092915050565b6000610af833610dd8565b1515610b0357600080fd5b610b0d838361108b565b6001905092915050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610b6833610dd8565b1515610b7357600080fd5b610b7c816111df565b50565b610b8833611239565b565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614151515610bc757600080fd5b610c5682600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610e7c90919063ffffffff16565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a36001905092915050565b6000610dce338484610e9e565b6001905092915050565b6000610dee82600361129390919063ffffffff16565b9050919050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000828211151515610e8d57600080fd5b600082840390508091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614151515610eda57600080fd5b610f2b816000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610e7c90919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610fbe816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461106a90919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b600080828401905083811015151561108157600080fd5b8091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141515156110c757600080fd5b6110dc8160025461106a90919063ffffffff16565b600281905550611133816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461106a90919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b6111f381600361132790919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f660405160405180910390a250565b61124d8160036113d790919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167fe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb6669260405160405180910390a250565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141515156112d057600080fd5b8260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415151561136357600080fd5b61136d8282611293565b15151561137957600080fd5b60018260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415151561141357600080fd5b61141d8282611293565b151561142857600080fd5b60008260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550505056fea165627a7a72305820f79fec8ca2cbef5aec09f04d20246b218c2fad324b283f50a5bb15b12a208a7e0029", + "sourceMap": "152:421:45:-;;;275:22:2;286:10;275;;;:22;;;:::i;:::-;152:421:45;;685:119:2;741:21;754:7;741:8;:12;;;;;;:21;;;;;:::i;:::-;789:7;777:20;;;;;;;;;;;;685:119;:::o;259:181:0:-;354:1;335:21;;:7;:21;;;;327:30;;;;;;;;376:18;380:4;386:7;376:3;;;:18;;;:::i;:::-;375:19;367:28;;;;;;;;429:4;406;:11;;:20;418:7;406:20;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;259:181;;:::o;786:162::-;858:4;901:1;882:21;;:7;:21;;;;874:30;;;;;;;;921:4;:11;;:20;933:7;921:20;;;;;;;;;;;;;;;;;;;;;;;;;914:27;;786:162;;;;:::o;152:421:45:-;;;;;;;", + "deployedSourceMap": "152:421:45:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2735:238:41;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2735:238:41;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2735:238:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;936:89;;8:9:-1;5:2;;;30:1;27;20:12;5:2;936:89:41;;;;;;;;;;;;;;;;;;;;;;;3436:294;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3436:294:41;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3436:294:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4233:317;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4233:317:41;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4233:317:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;443:128:45;;8:9:-1;5:2;;;30:1;27;20:12;5:2;443:128:45;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;443:128:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1234:104:41;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1234:104:41;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1234:104:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;508:90:2;;8:9:-1;5:2;;;30:1;27;20:12;5:2;508:90:2;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;508:90:2;;;;;;;;;;;;;;;;;;;;;;604:75;;8:9:-1;5:2;;;30:1;27;20:12;5:2;604:75:2;;;;;;5058:327:41;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5058:327:41;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;5058:327:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1962:137;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1962:137:41;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1962:137:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;395:107:2;;8:9:-1;5:2;;;30:1;27;20:12;5:2;395:107:2;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;395:107:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1669:129:41;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1669:129:41;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1669:129:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2735:238;2800:4;2843:1;2824:21;;:7;:21;;;;2816:30;;;;;;;;2889:5;2857:8;:20;2866:10;2857:20;;;;;;;;;;;;;;;:29;2878:7;2857:29;;;;;;;;;;;;;;;:37;;;;2930:7;2909:36;;2918:10;2909:36;;;2939:5;2909:36;;;;;;;;;;;;;;;;;;2962:4;2955:11;;2735:238;;;;:::o;936:89::-;980:7;1006:12;;999:19;;936:89;:::o;3436:294::-;3515:4;3560:37;3591:5;3560:8;:14;3569:4;3560:14;;;;;;;;;;;;;;;:26;3575:10;3560:26;;;;;;;;;;;;;;;;:30;;:37;;;;:::i;:::-;3531:8;:14;3540:4;3531:14;;;;;;;;;;;;;;;:26;3546:10;3531:26;;;;;;;;;;;;;;;:66;;;;3607:26;3617:4;3623:2;3627:5;3607:9;:26::i;:::-;3663:10;3648:54;;3657:4;3648:54;;;3675:8;:14;3684:4;3675:14;;;;;;;;;;;;;;;:26;3690:10;3675:26;;;;;;;;;;;;;;;;3648:54;;;;;;;;;;;;;;;;;;3719:4;3712:11;;3436:294;;;;;:::o;4233:317::-;4313:4;4356:1;4337:21;;:7;:21;;;;4329:30;;;;;;;;4402:45;4436:10;4402:8;:20;4411:10;4402:20;;;;;;;;;;;;;;;:29;4423:7;4402:29;;;;;;;;;;;;;;;;:33;;:45;;;;:::i;:::-;4370:8;:20;4379:10;4370:20;;;;;;;;;;;;;;;:29;4391:7;4370:29;;;;;;;;;;;;;;;:77;;;;4483:7;4462:60;;4471:10;4462:60;;;4492:8;:20;4501:10;4492:20;;;;;;;;;;;;;;;:29;4513:7;4492:29;;;;;;;;;;;;;;;;4462:60;;;;;;;;;;;;;;;;;;4539:4;4532:11;;4233:317;;;;:::o;443:128:45:-;511:4;350:20:2;359:10;350:8;:20::i;:::-;342:29;;;;;;;;527:16:45;533:2;537:5;527;:16::i;:::-;560:4;553:11;;443:128;;;;:::o;1234:104:41:-;1289:7;1315:9;:16;1325:5;1315:16;;;;;;;;;;;;;;;;1308:23;;1234:104;;;:::o;508:90:2:-;350:20;359:10;350:8;:20::i;:::-;342:29;;;;;;;;572:19;583:7;572:10;:19::i;:::-;508:90;:::o;604:75::-;647:25;661:10;647:13;:25::i;:::-;604:75::o;5058:327:41:-;5143:4;5186:1;5167:21;;:7;:21;;;;5159:30;;;;;;;;5232:50;5266:15;5232:8;:20;5241:10;5232:20;;;;;;;;;;;;;;;:29;5253:7;5232:29;;;;;;;;;;;;;;;;:33;;:50;;;;:::i;:::-;5200:8;:20;5209:10;5200:20;;;;;;;;;;;;;;;:29;5221:7;5200:29;;;;;;;;;;;;;;;:82;;;;5318:7;5297:60;;5306:10;5297:60;;;5327:8;:20;5336:10;5327:20;;;;;;;;;;;;;;;:29;5348:7;5327:29;;;;;;;;;;;;;;;;5297:60;;;;;;;;;;;;;;;;;;5374:4;5367:11;;5058:327;;;;:::o;1962:137::-;2023:4;2039:32;2049:10;2061:2;2065:5;2039:9;:32::i;:::-;2088:4;2081:11;;1962:137;;;;:::o;395:107:2:-;451:4;474:21;487:7;474:8;:12;;:21;;;;:::i;:::-;467:28;;395:107;;;:::o;1669:129:41:-;1741:7;1767:8;:15;1776:5;1767:15;;;;;;;;;;;;;;;:24;1783:7;1767:24;;;;;;;;;;;;;;;;1760:31;;1669:129;;;;:::o;1205:145:33:-;1263:7;1295:1;1290;:6;;1282:15;;;;;;;;1307:9;1323:1;1319;:5;1307:17;;1342:1;1335:8;;;1205:145;;;;:::o;5599:256:41:-;5700:1;5686:16;;:2;:16;;;;5678:25;;;;;;;;5732:26;5752:5;5732:9;:15;5742:4;5732:15;;;;;;;;;;;;;;;;:19;;:26;;;;:::i;:::-;5714:9;:15;5724:4;5714:15;;;;;;;;;;;;;;;:44;;;;5784:24;5802:5;5784:9;:13;5794:2;5784:13;;;;;;;;;;;;;;;;:17;;:24;;;;:::i;:::-;5768:9;:13;5778:2;5768:13;;;;;;;;;;;;;;;:40;;;;5838:2;5823:25;;5832:4;5823:25;;;5842:5;5823:25;;;;;;;;;;;;;;;;;;5599:256;;;:::o;1431:145:33:-;1489:7;1508:9;1524:1;1520;:5;1508:17;;1548:1;1543;:6;;1535:15;;;;;;;;1568:1;1561:8;;;1431:145;;;;:::o;6198:263:41:-;6291:1;6272:21;;:7;:21;;;;6264:30;;;;;;;;6320:23;6337:5;6320:12;;:16;;:23;;;;:::i;:::-;6305:12;:38;;;;6374:29;6397:5;6374:9;:18;6384:7;6374:18;;;;;;;;;;;;;;;;:22;;:29;;;;:::i;:::-;6353:9;:18;6363:7;6353:18;;;;;;;;;;;;;;;:50;;;;6439:7;6418:36;;6435:1;6418:36;;;6448:5;6418:36;;;;;;;;;;;;;;;;;;6198:263;;:::o;685:119:2:-;741:21;754:7;741:8;:12;;:21;;;;:::i;:::-;789:7;777:20;;;;;;;;;;;;685:119;:::o;810:127::-;869:24;885:7;869:8;:15;;:24;;;;:::i;:::-;922:7;908:22;;;;;;;;;;;;810:127;:::o;786:162:0:-;858:4;901:1;882:21;;:7;:21;;;;874:30;;;;;;;;921:4;:11;;:20;933:7;921:20;;;;;;;;;;;;;;;;;;;;;;;;;914:27;;786:162;;;;:::o;259:181::-;354:1;335:21;;:7;:21;;;;327:30;;;;;;;;376:18;380:4;386:7;376:3;:18::i;:::-;375:19;367:28;;;;;;;;429:4;406;:11;;:20;418:7;406:20;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;259:181;;:::o;514:184::-;612:1;593:21;;:7;:21;;;;585:30;;;;;;;;633:18;637:4;643:7;633:3;:18::i;:::-;625:27;;;;;;;;686:5;663:4;:11;;:20;675:7;663:20;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;514:184;;:::o", + "source": "pragma solidity ^0.5.0;\n\nimport \"./ERC20.sol\";\nimport \"../../access/roles/MinterRole.sol\";\n\n/**\n * @title ERC20Mintable\n * @dev ERC20 minting logic\n */\ncontract ERC20Mintable is ERC20, MinterRole {\n /**\n * @dev Function to mint tokens\n * @param to The address that will receive the minted tokens.\n * @param value The amount of tokens to mint.\n * @return A boolean that indicates if the operation was successful.\n */\n function mint(address to, uint256 value) public onlyMinter returns (bool) {\n _mint(to, value);\n return true;\n }\n}\n", + "sourcePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/token/ERC20/ERC20Mintable.sol", + "ast": { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/token/ERC20/ERC20Mintable.sol", + "exportedSymbols": { + "ERC20Mintable": [ + 4881 + ] + }, + "id": 4882, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 4855, + "literals": [ + "solidity", + "^", + "0.5", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "0:23:45" + }, + { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/token/ERC20/ERC20.sol", + "file": "./ERC20.sol", + "id": 4856, + "nodeType": "ImportDirective", + "scope": 4882, + "sourceUnit": 4708, + "src": "25:21:45", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/access/roles/MinterRole.sol", + "file": "../../access/roles/MinterRole.sol", + "id": 4857, + "nodeType": "ImportDirective", + "scope": 4882, + "sourceUnit": 300, + "src": "47:43:45", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 4858, + "name": "ERC20", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 4707, + "src": "178:5:45", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20_$4707", + "typeString": "contract ERC20" + } + }, + "id": 4859, + "nodeType": "InheritanceSpecifier", + "src": "178:5:45" + }, + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 4860, + "name": "MinterRole", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 299, + "src": "185:10:45", + "typeDescriptions": { + "typeIdentifier": "t_contract$_MinterRole_$299", + "typeString": "contract MinterRole" + } + }, + "id": 4861, + "nodeType": "InheritanceSpecifier", + "src": "185:10:45" + } + ], + "contractDependencies": [ + 299, + 4707, + 5052 + ], + "contractKind": "contract", + "documentation": "@title ERC20Mintable\n@dev ERC20 minting logic", + "fullyImplemented": true, + "id": 4881, + "linearizedBaseContracts": [ + 4881, + 299, + 4707, + 5052 + ], + "name": "ERC20Mintable", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": { + "id": 4879, + "nodeType": "Block", + "src": "517:54:45", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 4873, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4863, + "src": "533:2:45", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 4874, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4865, + "src": "537:5:45", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 4872, + "name": "_mint", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4622, + "src": "527:5:45", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 4875, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "527:16:45", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4876, + "nodeType": "ExpressionStatement", + "src": "527:16:45" + }, + { + "expression": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 4877, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "560:4:45", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 4871, + "id": 4878, + "nodeType": "Return", + "src": "553:11:45" + } + ] + }, + "documentation": "@dev Function to mint tokens\n@param to The address that will receive the minted tokens.\n@param value The amount of tokens to mint.\n@return A boolean that indicates if the operation was successful.", + "id": 4880, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": null, + "id": 4868, + "modifierName": { + "argumentTypes": null, + "id": 4867, + "name": "onlyMinter", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 232, + "src": "491:10:45", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "491:10:45" + } + ], + "name": "mint", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4866, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4863, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 4880, + "src": "457:10:45", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4862, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "457:7:45", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 4865, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 4880, + "src": "469:13:45", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4864, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "469:7:45", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "456:27:45" + }, + "returnParameters": { + "id": 4871, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4870, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 4880, + "src": "511:4:45", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 4869, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "511:4:45", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "510:6:45" + }, + "scope": 4881, + "src": "443:128:45", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + } + ], + "scope": 4882, + "src": "152:421:45" + } + ], + "src": "0:574:45" + }, + "legacyAST": { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/token/ERC20/ERC20Mintable.sol", + "exportedSymbols": { + "ERC20Mintable": [ + 4881 + ] + }, + "id": 4882, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 4855, + "literals": [ + "solidity", + "^", + "0.5", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "0:23:45" + }, + { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/token/ERC20/ERC20.sol", + "file": "./ERC20.sol", + "id": 4856, + "nodeType": "ImportDirective", + "scope": 4882, + "sourceUnit": 4708, + "src": "25:21:45", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/access/roles/MinterRole.sol", + "file": "../../access/roles/MinterRole.sol", + "id": 4857, + "nodeType": "ImportDirective", + "scope": 4882, + "sourceUnit": 300, + "src": "47:43:45", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 4858, + "name": "ERC20", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 4707, + "src": "178:5:45", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20_$4707", + "typeString": "contract ERC20" + } + }, + "id": 4859, + "nodeType": "InheritanceSpecifier", + "src": "178:5:45" + }, + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 4860, + "name": "MinterRole", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 299, + "src": "185:10:45", + "typeDescriptions": { + "typeIdentifier": "t_contract$_MinterRole_$299", + "typeString": "contract MinterRole" + } + }, + "id": 4861, + "nodeType": "InheritanceSpecifier", + "src": "185:10:45" + } + ], + "contractDependencies": [ + 299, + 4707, + 5052 + ], + "contractKind": "contract", + "documentation": "@title ERC20Mintable\n@dev ERC20 minting logic", + "fullyImplemented": true, + "id": 4881, + "linearizedBaseContracts": [ + 4881, + 299, + 4707, + 5052 + ], + "name": "ERC20Mintable", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": { + "id": 4879, + "nodeType": "Block", + "src": "517:54:45", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 4873, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4863, + "src": "533:2:45", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 4874, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4865, + "src": "537:5:45", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 4872, + "name": "_mint", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4622, + "src": "527:5:45", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 4875, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "527:16:45", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4876, + "nodeType": "ExpressionStatement", + "src": "527:16:45" + }, + { + "expression": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 4877, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "560:4:45", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 4871, + "id": 4878, + "nodeType": "Return", + "src": "553:11:45" + } + ] + }, + "documentation": "@dev Function to mint tokens\n@param to The address that will receive the minted tokens.\n@param value The amount of tokens to mint.\n@return A boolean that indicates if the operation was successful.", + "id": 4880, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": null, + "id": 4868, + "modifierName": { + "argumentTypes": null, + "id": 4867, + "name": "onlyMinter", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 232, + "src": "491:10:45", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "491:10:45" + } + ], + "name": "mint", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4866, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4863, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 4880, + "src": "457:10:45", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4862, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "457:7:45", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 4865, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 4880, + "src": "469:13:45", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4864, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "469:7:45", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "456:27:45" + }, + "returnParameters": { + "id": 4871, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4870, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 4880, + "src": "511:4:45", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 4869, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "511:4:45", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "510:6:45" + }, + "scope": 4881, + "src": "443:128:45", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + } + ], + "scope": 4882, + "src": "152:421:45" + } + ], + "src": "0:574:45" + }, + "compiler": { + "name": "solc", + "version": "0.5.0+commit.1d4f565a.Emscripten.clang" + }, + "networks": {}, + "schemaVersion": "3.0.0", + "updatedAt": "2019-01-04T21:44:02.892Z", + "devdoc": { + "details": "ERC20 minting logic", + "methods": { + "allowance(address,address)": { + "details": "Function to check the amount of tokens that an owner allowed to a spender.", + "params": { + "owner": "address The address which owns the funds.", + "spender": "address The address which will spend the funds." + }, + "return": "A uint256 specifying the amount of tokens still available for the spender." + }, + "approve(address,uint256)": { + "details": "Approve the passed address to spend the specified amount of tokens on behalf of msg.sender. Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729", + "params": { + "spender": "The address which will spend the funds.", + "value": "The amount of tokens to be spent." + } + }, + "balanceOf(address)": { + "details": "Gets the balance of the specified address.", + "params": { + "owner": "The address to query the balance of." + }, + "return": "An uint256 representing the amount owned by the passed address." + }, + "decreaseAllowance(address,uint256)": { + "details": "Decrease the amount of tokens that an owner allowed to a spender. approve should be called when allowed_[_spender] == 0. To decrement allowed value is better to use this function to avoid 2 calls (and wait until the first transaction is mined) From MonolithDAO Token.sol Emits an Approval event.", + "params": { + "spender": "The address which will spend the funds.", + "subtractedValue": "The amount of tokens to decrease the allowance by." + } + }, + "increaseAllowance(address,uint256)": { + "details": "Increase the amount of tokens that an owner allowed to a spender. approve should be called when allowed_[_spender] == 0. To increment allowed value is better to use this function to avoid 2 calls (and wait until the first transaction is mined) From MonolithDAO Token.sol Emits an Approval event.", + "params": { + "addedValue": "The amount of tokens to increase the allowance by.", + "spender": "The address which will spend the funds." + } + }, + "mint(address,uint256)": { + "details": "Function to mint tokens", + "params": { + "to": "The address that will receive the minted tokens.", + "value": "The amount of tokens to mint." + }, + "return": "A boolean that indicates if the operation was successful." + }, + "totalSupply()": { + "details": "Total number of tokens in existence" + }, + "transfer(address,uint256)": { + "details": "Transfer token for a specified address", + "params": { + "to": "The address to transfer to.", + "value": "The amount to be transferred." + } + }, + "transferFrom(address,address,uint256)": { + "details": "Transfer tokens from one address to another. Note that while this function emits an Approval event, this is not required as per the specification, and other compliant implementations may not emit the event.", + "params": { + "from": "address The address which you want to send tokens from", + "to": "address The address which you want to transfer to", + "value": "uint256 the amount of tokens to be transferred" + } + } + }, + "title": "ERC20Mintable" + }, + "userdoc": { + "methods": {} + } +} \ No newline at end of file diff --git a/node_modules/openzeppelin-solidity/build/contracts/ERC20Pausable.json b/node_modules/openzeppelin-solidity/build/contracts/ERC20Pausable.json new file mode 100644 index 0000000..4a82e22 --- /dev/null +++ b/node_modules/openzeppelin-solidity/build/contracts/ERC20Pausable.json @@ -0,0 +1,2921 @@ +{ + "contractName": "ERC20Pausable", + "abi": [ + { + "constant": true, + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [], + "name": "unpause", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "account", + "type": "address" + } + ], + "name": "isPauser", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "paused", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [], + "name": "renouncePauser", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "owner", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "account", + "type": "address" + } + ], + "name": "addPauser", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [], + "name": "pause", + "outputs": [], + "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": false, + "name": "account", + "type": "address" + } + ], + "name": "Paused", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "name": "account", + "type": "address" + } + ], + "name": "Unpaused", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "account", + "type": "address" + } + ], + "name": "PauserAdded", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "account", + "type": "address" + } + ], + "name": "PauserRemoved", + "type": "event" + }, + { + "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" + }, + { + "constant": false, + "inputs": [ + { + "name": "to", + "type": "address" + }, + { + "name": "value", + "type": "uint256" + } + ], + "name": "transfer", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "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": false, + "inputs": [ + { + "name": "spender", + "type": "address" + }, + { + "name": "value", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "spender", + "type": "address" + }, + { + "name": "addedValue", + "type": "uint256" + } + ], + "name": "increaseAllowance", + "outputs": [ + { + "name": "success", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "spender", + "type": "address" + }, + { + "name": "subtractedValue", + "type": "uint256" + } + ], + "name": "decreaseAllowance", + "outputs": [ + { + "name": "success", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x608060405261001c3361003c640100000000026401000000009004565b6000600460006101000a81548160ff0219169083151502179055506101f6565b61005d8160036100a3640100000000026114c0179091906401000000009004565b8073ffffffffffffffffffffffffffffffffffffffff167f6719d08c1888103bea251a4ed56406bd0c3e69723c8a1686e017e7bbe159b6f860405160405180910390a250565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515156100df57600080fd5b6100f88282610162640100000000026401000000009004565b15151561010457600080fd5b60018260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415151561019f57600080fd5b8260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b61159c80620002066000396000f3fe6080604052600436106100d0576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063095ea7b3146100d557806318160ddd1461014857806323b872dd1461017357806339509351146102065780633f4ba83a1461027957806346fbf68e146102905780635c975abb146102f95780636ef8d66d1461032857806370a082311461033f57806382dc1ec4146103a45780638456cb59146103f5578063a457c2d71461040c578063a9059cbb1461047f578063dd62ed3e146104f2575b600080fd5b3480156100e157600080fd5b5061012e600480360360408110156100f857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610577565b604051808215151515815260200191505060405180910390f35b34801561015457600080fd5b5061015d6105a7565b6040518082815260200191505060405180910390f35b34801561017f57600080fd5b506101ec6004803603606081101561019657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506105b1565b604051808215151515815260200191505060405180910390f35b34801561021257600080fd5b5061025f6004803603604081101561022957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506105e3565b604051808215151515815260200191505060405180910390f35b34801561028557600080fd5b5061028e610613565b005b34801561029c57600080fd5b506102df600480360360208110156102b357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506106c2565b604051808215151515815260200191505060405180910390f35b34801561030557600080fd5b5061030e6106df565b604051808215151515815260200191505060405180910390f35b34801561033457600080fd5b5061033d6106f6565b005b34801561034b57600080fd5b5061038e6004803603602081101561036257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610701565b6040518082815260200191505060405180910390f35b3480156103b057600080fd5b506103f3600480360360208110156103c757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610749565b005b34801561040157600080fd5b5061040a610769565b005b34801561041857600080fd5b506104656004803603604081101561042f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610819565b604051808215151515815260200191505060405180910390f35b34801561048b57600080fd5b506104d8600480360360408110156104a257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610849565b604051808215151515815260200191505060405180910390f35b3480156104fe57600080fd5b506105616004803603604081101561051557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610879565b6040518082815260200191505060405180910390f35b6000600460009054906101000a900460ff1615151561059557600080fd5b61059f8383610900565b905092915050565b6000600254905090565b6000600460009054906101000a900460ff161515156105cf57600080fd5b6105da848484610a2d565b90509392505050565b6000600460009054906101000a900460ff1615151561060157600080fd5b61060b8383610c35565b905092915050565b61061c336106c2565b151561062757600080fd5b600460009054906101000a900460ff16151561064257600080fd5b6000600460006101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa33604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a1565b60006106d8826003610e6c90919063ffffffff16565b9050919050565b6000600460009054906101000a900460ff16905090565b6106ff33610f00565b565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610752336106c2565b151561075d57600080fd5b61076681610f5a565b50565b610772336106c2565b151561077d57600080fd5b600460009054906101000a900460ff1615151561079957600080fd5b6001600460006101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25833604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a1565b6000600460009054906101000a900460ff1615151561083757600080fd5b6108418383610fb4565b905092915050565b6000600460009054906101000a900460ff1615151561086757600080fd5b61087183836111eb565b905092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415151561093d57600080fd5b81600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b6000610abe82600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461120290919063ffffffff16565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610b49848484611224565b3373ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a3600190509392505050565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614151515610c7257600080fd5b610d0182600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546113f090919063ffffffff16565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a36001905092915050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614151515610ea957600080fd5b8260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b610f1481600361141190919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167fcd265ebaf09df2871cc7bd4133404a235ba12eff2041bb89d9c714a2621c7c7e60405160405180910390a250565b610f6e8160036114c090919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167f6719d08c1888103bea251a4ed56406bd0c3e69723c8a1686e017e7bbe159b6f860405160405180910390a250565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614151515610ff157600080fd5b61108082600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461120290919063ffffffff16565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a36001905092915050565b60006111f8338484611224565b6001905092915050565b600082821115151561121357600080fd5b600082840390508091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415151561126057600080fd5b6112b1816000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461120290919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611344816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546113f090919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b600080828401905083811015151561140757600080fd5b8091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415151561144d57600080fd5b6114578282610e6c565b151561146257600080fd5b60008260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515156114fc57600080fd5b6115068282610e6c565b15151561151257600080fd5b60018260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550505056fea165627a7a723058201f56e602949a8c9b784e3407d04b254924564e5bd98f025e80c5a7c6de55035a0029", + "deployedBytecode": "0x6080604052600436106100d0576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063095ea7b3146100d557806318160ddd1461014857806323b872dd1461017357806339509351146102065780633f4ba83a1461027957806346fbf68e146102905780635c975abb146102f95780636ef8d66d1461032857806370a082311461033f57806382dc1ec4146103a45780638456cb59146103f5578063a457c2d71461040c578063a9059cbb1461047f578063dd62ed3e146104f2575b600080fd5b3480156100e157600080fd5b5061012e600480360360408110156100f857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610577565b604051808215151515815260200191505060405180910390f35b34801561015457600080fd5b5061015d6105a7565b6040518082815260200191505060405180910390f35b34801561017f57600080fd5b506101ec6004803603606081101561019657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506105b1565b604051808215151515815260200191505060405180910390f35b34801561021257600080fd5b5061025f6004803603604081101561022957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506105e3565b604051808215151515815260200191505060405180910390f35b34801561028557600080fd5b5061028e610613565b005b34801561029c57600080fd5b506102df600480360360208110156102b357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506106c2565b604051808215151515815260200191505060405180910390f35b34801561030557600080fd5b5061030e6106df565b604051808215151515815260200191505060405180910390f35b34801561033457600080fd5b5061033d6106f6565b005b34801561034b57600080fd5b5061038e6004803603602081101561036257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610701565b6040518082815260200191505060405180910390f35b3480156103b057600080fd5b506103f3600480360360208110156103c757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610749565b005b34801561040157600080fd5b5061040a610769565b005b34801561041857600080fd5b506104656004803603604081101561042f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610819565b604051808215151515815260200191505060405180910390f35b34801561048b57600080fd5b506104d8600480360360408110156104a257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610849565b604051808215151515815260200191505060405180910390f35b3480156104fe57600080fd5b506105616004803603604081101561051557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610879565b6040518082815260200191505060405180910390f35b6000600460009054906101000a900460ff1615151561059557600080fd5b61059f8383610900565b905092915050565b6000600254905090565b6000600460009054906101000a900460ff161515156105cf57600080fd5b6105da848484610a2d565b90509392505050565b6000600460009054906101000a900460ff1615151561060157600080fd5b61060b8383610c35565b905092915050565b61061c336106c2565b151561062757600080fd5b600460009054906101000a900460ff16151561064257600080fd5b6000600460006101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa33604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a1565b60006106d8826003610e6c90919063ffffffff16565b9050919050565b6000600460009054906101000a900460ff16905090565b6106ff33610f00565b565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610752336106c2565b151561075d57600080fd5b61076681610f5a565b50565b610772336106c2565b151561077d57600080fd5b600460009054906101000a900460ff1615151561079957600080fd5b6001600460006101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25833604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a1565b6000600460009054906101000a900460ff1615151561083757600080fd5b6108418383610fb4565b905092915050565b6000600460009054906101000a900460ff1615151561086757600080fd5b61087183836111eb565b905092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415151561093d57600080fd5b81600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b6000610abe82600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461120290919063ffffffff16565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610b49848484611224565b3373ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a3600190509392505050565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614151515610c7257600080fd5b610d0182600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546113f090919063ffffffff16565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a36001905092915050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614151515610ea957600080fd5b8260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b610f1481600361141190919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167fcd265ebaf09df2871cc7bd4133404a235ba12eff2041bb89d9c714a2621c7c7e60405160405180910390a250565b610f6e8160036114c090919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167f6719d08c1888103bea251a4ed56406bd0c3e69723c8a1686e017e7bbe159b6f860405160405180910390a250565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614151515610ff157600080fd5b61108082600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461120290919063ffffffff16565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a36001905092915050565b60006111f8338484611224565b6001905092915050565b600082821115151561121357600080fd5b600082840390508091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415151561126057600080fd5b6112b1816000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461120290919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611344816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546113f090919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b600080828401905083811015151561140757600080fd5b8091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415151561144d57600080fd5b6114578282610e6c565b151561146257600080fd5b60008260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515156114fc57600080fd5b6115068282610e6c565b15151561151257600080fd5b60018260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550505056fea165627a7a723058201f56e602949a8c9b784e3407d04b254924564e5bd98f025e80c5a7c6de55035a0029", + "sourceMap": "169:856:46:-;;;275:22:3;286:10;275;;;:22;;;:::i;:::-;362:5:31;352:7;;:15;;;;;;;;;;;;;;;;;;169:856:46;;685:119:3;741:21;754:7;741:8;:12;;;;;;:21;;;;;:::i;:::-;789:7;777:20;;;;;;;;;;;;685:119;:::o;259:181:0:-;354:1;335:21;;:7;:21;;;;327:30;;;;;;;;376:18;380:4;386:7;376:3;;;:18;;;:::i;:::-;375:19;367:28;;;;;;;;429:4;406;:11;;:20;418:7;406:20;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;259:181;;:::o;786:162::-;858:4;901:1;882:21;;:7;:21;;;;874:30;;;;;;;;921:4;:11;;:20;933:7;921:20;;;;;;;;;;;;;;;;;;;;;;;;;914:27;;786:162;;;;:::o;169:856:46:-;;;;;;;", + "deployedSourceMap": "169:856:46:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;517:138;;8:9:-1;5:2;;;30:1;27;20:12;5:2;517:138:46;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;517:138:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;936:89:41;;8:9:-1;5:2;;;30:1;27;20:12;5:2;936:89:41;;;;;;;;;;;;;;;;;;;;;;;353:158:46;;8:9:-1;5:2;;;30:1;27;20:12;5:2;353:158:46;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;353:158:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;661:173;;8:9:-1;5:2;;;30:1;27;20:12;5:2;661:173:46;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;661:173:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1176:115:31;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1176:115:31;;;;;;395:107:3;;8:9:-1;5:2;;;30:1;27;20:12;5:2;395:107:3;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;395:107:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;460:76:31;;8:9:-1;5:2;;;30:1;27;20:12;5:2;460:76:31;;;;;;;;;;;;;;;;;;;;;;;;;;;604:75:3;;8:9:-1;5:2;;;30:1;27;20:12;5:2;604:75:3;;;;;;1234:104:41;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1234:104:41;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1234:104:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;508:90:3;;8:9:-1;5:2;;;30:1;27;20:12;5:2;508:90:3;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;508:90:3;;;;;;;;;;;;;;;;;;;;;;973:113:31;;8:9:-1;5:2;;;30:1;27;20:12;5:2;973:113:31;;;;;;840:183:46;;8:9:-1;5:2;;;30:1;27;20:12;5:2;840:183:46;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;840:183:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;217:130;;8:9:-1;5:2;;;30:1;27;20:12;5:2;217:130:46;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;217:130:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1669:129:41;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1669:129:41;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1669:129:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;517:138:46;596:4;689:7:31;;;;;;;;;;;688:8;680:17;;;;;;;;619:29:46;633:7;642:5;619:13;:29::i;:::-;612:36;;517:138;;;;:::o;936:89:41:-;980:7;1006:12;;999:19;;936:89;:::o;353:158:46:-;446:4;689:7:31;;;;;;;;;;;688:8;680:17;;;;;;;;469:35:46;488:4;494:2;498:5;469:18;:35::i;:::-;462:42;;353:158;;;;;:::o;661:173::-;752:12;689:7:31;;;;;;;;;;;688:8;680:17;;;;;;;;783:44:46;807:7;816:10;783:23;:44::i;:::-;776:51;;661:173;;;;:::o;1176:115:31:-;350:20:3;359:10;350:8;:20::i;:::-;342:29;;;;;;;;860:7:31;;;;;;;;;;;852:16;;;;;;;;1244:5;1234:7;;:15;;;;;;;;;;;;;;;;;;1264:20;1273:10;1264:20;;;;;;;;;;;;;;;;;;;;;;1176:115::o;395:107:3:-;451:4;474:21;487:7;474:8;:12;;:21;;;;:::i;:::-;467:28;;395:107;;;:::o;460:76:31:-;499:4;522:7;;;;;;;;;;;515:14;;460:76;:::o;604:75:3:-;647:25;661:10;647:13;:25::i;:::-;604:75::o;1234:104:41:-;1289:7;1315:9;:16;1325:5;1315:16;;;;;;;;;;;;;;;;1308:23;;1234:104;;;:::o;508:90:3:-;350:20;359:10;350:8;:20::i;:::-;342:29;;;;;;;;572:19;583:7;572:10;:19::i;:::-;508:90;:::o;973:113:31:-;350:20:3;359:10;350:8;:20::i;:::-;342:29;;;;;;;;689:7:31;;;;;;;;;;;688:8;680:17;;;;;;;;1042:4;1032:7;;:14;;;;;;;;;;;;;;;;;;1061:18;1068:10;1061:18;;;;;;;;;;;;;;;;;;;;;;973:113::o;840:183:46:-;936:12;689:7:31;;;;;;;;;;;688:8;680:17;;;;;;;;967:49:46;991:7;1000:15;967:23;:49::i;:::-;960:56;;840:183;;;;:::o;217:130::-;292:4;689:7:31;;;;;;;;;;;688:8;680:17;;;;;;;;315:25:46;330:2;334:5;315:14;:25::i;:::-;308:32;;217:130;;;;:::o;1669:129:41:-;1741:7;1767:8;:15;1776:5;1767:15;;;;;;;;;;;;;;;:24;1783:7;1767:24;;;;;;;;;;;;;;;;1760:31;;1669:129;;;;:::o;2735:238::-;2800:4;2843:1;2824:21;;:7;:21;;;;2816:30;;;;;;;;2889:5;2857:8;:20;2866:10;2857:20;;;;;;;;;;;;;;;:29;2878:7;2857:29;;;;;;;;;;;;;;;:37;;;;2930:7;2909:36;;2918:10;2909:36;;;2939:5;2909:36;;;;;;;;;;;;;;;;;;2962:4;2955:11;;2735:238;;;;:::o;3436:294::-;3515:4;3560:37;3591:5;3560:8;:14;3569:4;3560:14;;;;;;;;;;;;;;;:26;3575:10;3560:26;;;;;;;;;;;;;;;;:30;;:37;;;;:::i;:::-;3531:8;:14;3540:4;3531:14;;;;;;;;;;;;;;;:26;3546:10;3531:26;;;;;;;;;;;;;;;:66;;;;3607:26;3617:4;3623:2;3627:5;3607:9;:26::i;:::-;3663:10;3648:54;;3657:4;3648:54;;;3675:8;:14;3684:4;3675:14;;;;;;;;;;;;;;;:26;3690:10;3675:26;;;;;;;;;;;;;;;;3648:54;;;;;;;;;;;;;;;;;;3719:4;3712:11;;3436:294;;;;;:::o;4233:317::-;4313:4;4356:1;4337:21;;:7;:21;;;;4329:30;;;;;;;;4402:45;4436:10;4402:8;:20;4411:10;4402:20;;;;;;;;;;;;;;;:29;4423:7;4402:29;;;;;;;;;;;;;;;;:33;;:45;;;;:::i;:::-;4370:8;:20;4379:10;4370:20;;;;;;;;;;;;;;;:29;4391:7;4370:29;;;;;;;;;;;;;;;:77;;;;4483:7;4462:60;;4471:10;4462:60;;;4492:8;:20;4501:10;4492:20;;;;;;;;;;;;;;;:29;4513:7;4492:29;;;;;;;;;;;;;;;;4462:60;;;;;;;;;;;;;;;;;;4539:4;4532:11;;4233:317;;;;:::o;786:162:0:-;858:4;901:1;882:21;;:7;:21;;;;874:30;;;;;;;;921:4;:11;;:20;933:7;921:20;;;;;;;;;;;;;;;;;;;;;;;;;914:27;;786:162;;;;:::o;810:127:3:-;869:24;885:7;869:8;:15;;:24;;;;:::i;:::-;922:7;908:22;;;;;;;;;;;;810:127;:::o;685:119::-;741:21;754:7;741:8;:12;;:21;;;;:::i;:::-;789:7;777:20;;;;;;;;;;;;685:119;:::o;5058:327:41:-;5143:4;5186:1;5167:21;;:7;:21;;;;5159:30;;;;;;;;5232:50;5266:15;5232:8;:20;5241:10;5232:20;;;;;;;;;;;;;;;:29;5253:7;5232:29;;;;;;;;;;;;;;;;:33;;:50;;;;:::i;:::-;5200:8;:20;5209:10;5200:20;;;;;;;;;;;;;;;:29;5221:7;5200:29;;;;;;;;;;;;;;;:82;;;;5318:7;5297:60;;5306:10;5297:60;;;5327:8;:20;5336:10;5327:20;;;;;;;;;;;;;;;:29;5348:7;5327:29;;;;;;;;;;;;;;;;5297:60;;;;;;;;;;;;;;;;;;5374:4;5367:11;;5058:327;;;;:::o;1962:137::-;2023:4;2039:32;2049:10;2061:2;2065:5;2039:9;:32::i;:::-;2088:4;2081:11;;1962:137;;;;:::o;1205:145:33:-;1263:7;1295:1;1290;:6;;1282:15;;;;;;;;1307:9;1323:1;1319;:5;1307:17;;1342:1;1335:8;;;1205:145;;;;:::o;5599:256:41:-;5700:1;5686:16;;:2;:16;;;;5678:25;;;;;;;;5732:26;5752:5;5732:9;:15;5742:4;5732:15;;;;;;;;;;;;;;;;:19;;:26;;;;:::i;:::-;5714:9;:15;5724:4;5714:15;;;;;;;;;;;;;;;:44;;;;5784:24;5802:5;5784:9;:13;5794:2;5784:13;;;;;;;;;;;;;;;;:17;;:24;;;;:::i;:::-;5768:9;:13;5778:2;5768:13;;;;;;;;;;;;;;;:40;;;;5838:2;5823:25;;5832:4;5823:25;;;5842:5;5823:25;;;;;;;;;;;;;;;;;;5599:256;;;:::o;1431:145:33:-;1489:7;1508:9;1524:1;1520;:5;1508:17;;1548:1;1543;:6;;1535:15;;;;;;;;1568:1;1561:8;;;1431:145;;;;:::o;514:184:0:-;612:1;593:21;;:7;:21;;;;585:30;;;;;;;;633:18;637:4;643:7;633:3;:18::i;:::-;625:27;;;;;;;;686:5;663:4;:11;;:20;675:7;663:20;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;514:184;;:::o;259:181::-;354:1;335:21;;:7;:21;;;;327:30;;;;;;;;376:18;380:4;386:7;376:3;:18::i;:::-;375:19;367:28;;;;;;;;429:4;406;:11;;:20;418:7;406:20;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;259:181;;:::o", + "source": "pragma solidity ^0.5.0;\n\nimport \"./ERC20.sol\";\nimport \"../../lifecycle/Pausable.sol\";\n\n/**\n * @title Pausable token\n * @dev ERC20 modified with pausable transfers.\n **/\ncontract ERC20Pausable is ERC20, Pausable {\n function transfer(address to, uint256 value) public whenNotPaused returns (bool) {\n return super.transfer(to, value);\n }\n\n function transferFrom(address from, address to, uint256 value) public whenNotPaused returns (bool) {\n return super.transferFrom(from, to, value);\n }\n\n function approve(address spender, uint256 value) public whenNotPaused returns (bool) {\n return super.approve(spender, value);\n }\n\n function increaseAllowance(address spender, uint addedValue) public whenNotPaused returns (bool success) {\n return super.increaseAllowance(spender, addedValue);\n }\n\n function decreaseAllowance(address spender, uint subtractedValue) public whenNotPaused returns (bool success) {\n return super.decreaseAllowance(spender, subtractedValue);\n }\n}\n", + "sourcePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/token/ERC20/ERC20Pausable.sol", + "ast": { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/token/ERC20/ERC20Pausable.sol", + "exportedSymbols": { + "ERC20Pausable": [ + 4983 + ] + }, + "id": 4984, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 4883, + "literals": [ + "solidity", + "^", + "0.5", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "0:23:46" + }, + { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/token/ERC20/ERC20.sol", + "file": "./ERC20.sol", + "id": 4884, + "nodeType": "ImportDirective", + "scope": 4984, + "sourceUnit": 4708, + "src": "25:21:46", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/lifecycle/Pausable.sol", + "file": "../../lifecycle/Pausable.sol", + "id": 4885, + "nodeType": "ImportDirective", + "scope": 4984, + "sourceUnit": 3286, + "src": "47:38:46", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 4886, + "name": "ERC20", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 4707, + "src": "195:5:46", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20_$4707", + "typeString": "contract ERC20" + } + }, + "id": 4887, + "nodeType": "InheritanceSpecifier", + "src": "195:5:46" + }, + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 4888, + "name": "Pausable", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 3285, + "src": "202:8:46", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Pausable_$3285", + "typeString": "contract Pausable" + } + }, + "id": 4889, + "nodeType": "InheritanceSpecifier", + "src": "202:8:46" + } + ], + "contractDependencies": [ + 402, + 3285, + 4707, + 5052 + ], + "contractKind": "contract", + "documentation": "@title Pausable token\n@dev ERC20 modified with pausable transfers.*", + "fullyImplemented": true, + "id": 4983, + "linearizedBaseContracts": [ + 4983, + 3285, + 402, + 4707, + 5052 + ], + "name": "ERC20Pausable", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": { + "id": 4906, + "nodeType": "Block", + "src": "298:49:46", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 4902, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4891, + "src": "330:2:46", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 4903, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4893, + "src": "334:5:46", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 4900, + "name": "super", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6959, + "src": "315:5:46", + "typeDescriptions": { + "typeIdentifier": "t_super$_ERC20Pausable_$4983", + "typeString": "contract super ERC20Pausable" + } + }, + "id": 4901, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "transfer", + "nodeType": "MemberAccess", + "referencedDeclaration": 4351, + "src": "315:14:46", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,uint256) returns (bool)" + } + }, + "id": 4904, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "315:25:46", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 4899, + "id": 4905, + "nodeType": "Return", + "src": "308:32:46" + } + ] + }, + "documentation": null, + "id": 4907, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": null, + "id": 4896, + "modifierName": { + "argumentTypes": null, + "id": 4895, + "name": "whenNotPaused", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3242, + "src": "269:13:46", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "269:13:46" + } + ], + "name": "transfer", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4894, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4891, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 4907, + "src": "235:10:46", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4890, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "235:7:46", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 4893, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 4907, + "src": "247:13:46", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4892, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "247:7:46", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "234:27:46" + }, + "returnParameters": { + "id": 4899, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4898, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 4907, + "src": "292:4:46", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 4897, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "292:4:46", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "291:6:46" + }, + "scope": 4983, + "src": "217:130:46", + "stateMutability": "nonpayable", + "superFunction": 4351, + "visibility": "public" + }, + { + "body": { + "id": 4927, + "nodeType": "Block", + "src": "452:59:46", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 4922, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4909, + "src": "488:4:46", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 4923, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4911, + "src": "494:2:46", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 4924, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4913, + "src": "498:5:46", + "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": 4920, + "name": "super", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6959, + "src": "469:5:46", + "typeDescriptions": { + "typeIdentifier": "t_super$_ERC20Pausable_$4983", + "typeString": "contract super ERC20Pausable" + } + }, + "id": 4921, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "transferFrom", + "nodeType": "MemberAccess", + "referencedDeclaration": 4436, + "src": "469:18:46", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,address,uint256) returns (bool)" + } + }, + "id": 4925, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "469:35:46", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 4919, + "id": 4926, + "nodeType": "Return", + "src": "462:42:46" + } + ] + }, + "documentation": null, + "id": 4928, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": null, + "id": 4916, + "modifierName": { + "argumentTypes": null, + "id": 4915, + "name": "whenNotPaused", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3242, + "src": "423:13:46", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "423:13:46" + } + ], + "name": "transferFrom", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4914, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4909, + "name": "from", + "nodeType": "VariableDeclaration", + "scope": 4928, + "src": "375:12:46", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4908, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "375:7:46", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 4911, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 4928, + "src": "389:10:46", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4910, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "389:7:46", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 4913, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 4928, + "src": "401:13:46", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4912, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "401:7:46", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "374:41:46" + }, + "returnParameters": { + "id": 4919, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4918, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 4928, + "src": "446:4:46", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 4917, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "446:4:46", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "445:6:46" + }, + "scope": 4983, + "src": "353:158:46", + "stateMutability": "nonpayable", + "superFunction": 4436, + "visibility": "public" + }, + { + "body": { + "id": 4945, + "nodeType": "Block", + "src": "602:53:46", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 4941, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4930, + "src": "633:7:46", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 4942, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4932, + "src": "642:5:46", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 4939, + "name": "super", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6959, + "src": "619:5:46", + "typeDescriptions": { + "typeIdentifier": "t_super$_ERC20Pausable_$4983", + "typeString": "contract super ERC20Pausable" + } + }, + "id": 4940, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "approve", + "nodeType": "MemberAccess", + "referencedDeclaration": 4387, + "src": "619:13:46", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,uint256) returns (bool)" + } + }, + "id": 4943, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "619:29:46", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 4938, + "id": 4944, + "nodeType": "Return", + "src": "612:36:46" + } + ] + }, + "documentation": null, + "id": 4946, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": null, + "id": 4935, + "modifierName": { + "argumentTypes": null, + "id": 4934, + "name": "whenNotPaused", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3242, + "src": "573:13:46", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "573:13:46" + } + ], + "name": "approve", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4933, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4930, + "name": "spender", + "nodeType": "VariableDeclaration", + "scope": 4946, + "src": "534:15:46", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4929, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "534:7:46", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 4932, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 4946, + "src": "551:13:46", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4931, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "551:7:46", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "533:32:46" + }, + "returnParameters": { + "id": 4938, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4937, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 4946, + "src": "596:4:46", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 4936, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "596:4:46", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "595:6:46" + }, + "scope": 4983, + "src": "517:138:46", + "stateMutability": "nonpayable", + "superFunction": 4387, + "visibility": "public" + }, + { + "body": { + "id": 4963, + "nodeType": "Block", + "src": "766:68:46", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 4959, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4948, + "src": "807:7:46", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 4960, + "name": "addedValue", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4950, + "src": "816:10:46", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 4957, + "name": "super", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6959, + "src": "783:5:46", + "typeDescriptions": { + "typeIdentifier": "t_super$_ERC20Pausable_$4983", + "typeString": "contract super ERC20Pausable" + } + }, + "id": 4958, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "increaseAllowance", + "nodeType": "MemberAccess", + "referencedDeclaration": 4485, + "src": "783:23:46", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,uint256) returns (bool)" + } + }, + "id": 4961, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "783:44:46", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 4956, + "id": 4962, + "nodeType": "Return", + "src": "776:51:46" + } + ] + }, + "documentation": null, + "id": 4964, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": null, + "id": 4953, + "modifierName": { + "argumentTypes": null, + "id": 4952, + "name": "whenNotPaused", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3242, + "src": "729:13:46", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "729:13:46" + } + ], + "name": "increaseAllowance", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4951, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4948, + "name": "spender", + "nodeType": "VariableDeclaration", + "scope": 4964, + "src": "688:15:46", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4947, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "688:7:46", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 4950, + "name": "addedValue", + "nodeType": "VariableDeclaration", + "scope": 4964, + "src": "705:15:46", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4949, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "705:4:46", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "687:34:46" + }, + "returnParameters": { + "id": 4956, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4955, + "name": "success", + "nodeType": "VariableDeclaration", + "scope": 4964, + "src": "752:12:46", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 4954, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "752:4:46", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "751:14:46" + }, + "scope": 4983, + "src": "661:173:46", + "stateMutability": "nonpayable", + "superFunction": 4485, + "visibility": "public" + }, + { + "body": { + "id": 4981, + "nodeType": "Block", + "src": "950:73:46", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 4977, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4966, + "src": "991:7:46", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 4978, + "name": "subtractedValue", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4968, + "src": "1000:15:46", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 4975, + "name": "super", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6959, + "src": "967:5:46", + "typeDescriptions": { + "typeIdentifier": "t_super$_ERC20Pausable_$4983", + "typeString": "contract super ERC20Pausable" + } + }, + "id": 4976, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "decreaseAllowance", + "nodeType": "MemberAccess", + "referencedDeclaration": 4534, + "src": "967:23:46", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,uint256) returns (bool)" + } + }, + "id": 4979, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "967:49:46", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 4974, + "id": 4980, + "nodeType": "Return", + "src": "960:56:46" + } + ] + }, + "documentation": null, + "id": 4982, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": null, + "id": 4971, + "modifierName": { + "argumentTypes": null, + "id": 4970, + "name": "whenNotPaused", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3242, + "src": "913:13:46", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "913:13:46" + } + ], + "name": "decreaseAllowance", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4969, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4966, + "name": "spender", + "nodeType": "VariableDeclaration", + "scope": 4982, + "src": "867:15:46", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4965, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "867:7:46", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 4968, + "name": "subtractedValue", + "nodeType": "VariableDeclaration", + "scope": 4982, + "src": "884:20:46", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4967, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "884:4:46", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "866:39:46" + }, + "returnParameters": { + "id": 4974, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4973, + "name": "success", + "nodeType": "VariableDeclaration", + "scope": 4982, + "src": "936:12:46", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 4972, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "936:4:46", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "935:14:46" + }, + "scope": 4983, + "src": "840:183:46", + "stateMutability": "nonpayable", + "superFunction": 4534, + "visibility": "public" + } + ], + "scope": 4984, + "src": "169:856:46" + } + ], + "src": "0:1026:46" + }, + "legacyAST": { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/token/ERC20/ERC20Pausable.sol", + "exportedSymbols": { + "ERC20Pausable": [ + 4983 + ] + }, + "id": 4984, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 4883, + "literals": [ + "solidity", + "^", + "0.5", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "0:23:46" + }, + { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/token/ERC20/ERC20.sol", + "file": "./ERC20.sol", + "id": 4884, + "nodeType": "ImportDirective", + "scope": 4984, + "sourceUnit": 4708, + "src": "25:21:46", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/lifecycle/Pausable.sol", + "file": "../../lifecycle/Pausable.sol", + "id": 4885, + "nodeType": "ImportDirective", + "scope": 4984, + "sourceUnit": 3286, + "src": "47:38:46", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 4886, + "name": "ERC20", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 4707, + "src": "195:5:46", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20_$4707", + "typeString": "contract ERC20" + } + }, + "id": 4887, + "nodeType": "InheritanceSpecifier", + "src": "195:5:46" + }, + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 4888, + "name": "Pausable", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 3285, + "src": "202:8:46", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Pausable_$3285", + "typeString": "contract Pausable" + } + }, + "id": 4889, + "nodeType": "InheritanceSpecifier", + "src": "202:8:46" + } + ], + "contractDependencies": [ + 402, + 3285, + 4707, + 5052 + ], + "contractKind": "contract", + "documentation": "@title Pausable token\n@dev ERC20 modified with pausable transfers.*", + "fullyImplemented": true, + "id": 4983, + "linearizedBaseContracts": [ + 4983, + 3285, + 402, + 4707, + 5052 + ], + "name": "ERC20Pausable", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": { + "id": 4906, + "nodeType": "Block", + "src": "298:49:46", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 4902, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4891, + "src": "330:2:46", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 4903, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4893, + "src": "334:5:46", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 4900, + "name": "super", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6959, + "src": "315:5:46", + "typeDescriptions": { + "typeIdentifier": "t_super$_ERC20Pausable_$4983", + "typeString": "contract super ERC20Pausable" + } + }, + "id": 4901, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "transfer", + "nodeType": "MemberAccess", + "referencedDeclaration": 4351, + "src": "315:14:46", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,uint256) returns (bool)" + } + }, + "id": 4904, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "315:25:46", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 4899, + "id": 4905, + "nodeType": "Return", + "src": "308:32:46" + } + ] + }, + "documentation": null, + "id": 4907, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": null, + "id": 4896, + "modifierName": { + "argumentTypes": null, + "id": 4895, + "name": "whenNotPaused", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3242, + "src": "269:13:46", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "269:13:46" + } + ], + "name": "transfer", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4894, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4891, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 4907, + "src": "235:10:46", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4890, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "235:7:46", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 4893, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 4907, + "src": "247:13:46", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4892, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "247:7:46", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "234:27:46" + }, + "returnParameters": { + "id": 4899, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4898, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 4907, + "src": "292:4:46", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 4897, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "292:4:46", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "291:6:46" + }, + "scope": 4983, + "src": "217:130:46", + "stateMutability": "nonpayable", + "superFunction": 4351, + "visibility": "public" + }, + { + "body": { + "id": 4927, + "nodeType": "Block", + "src": "452:59:46", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 4922, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4909, + "src": "488:4:46", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 4923, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4911, + "src": "494:2:46", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 4924, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4913, + "src": "498:5:46", + "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": 4920, + "name": "super", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6959, + "src": "469:5:46", + "typeDescriptions": { + "typeIdentifier": "t_super$_ERC20Pausable_$4983", + "typeString": "contract super ERC20Pausable" + } + }, + "id": 4921, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "transferFrom", + "nodeType": "MemberAccess", + "referencedDeclaration": 4436, + "src": "469:18:46", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,address,uint256) returns (bool)" + } + }, + "id": 4925, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "469:35:46", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 4919, + "id": 4926, + "nodeType": "Return", + "src": "462:42:46" + } + ] + }, + "documentation": null, + "id": 4928, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": null, + "id": 4916, + "modifierName": { + "argumentTypes": null, + "id": 4915, + "name": "whenNotPaused", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3242, + "src": "423:13:46", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "423:13:46" + } + ], + "name": "transferFrom", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4914, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4909, + "name": "from", + "nodeType": "VariableDeclaration", + "scope": 4928, + "src": "375:12:46", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4908, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "375:7:46", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 4911, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 4928, + "src": "389:10:46", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4910, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "389:7:46", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 4913, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 4928, + "src": "401:13:46", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4912, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "401:7:46", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "374:41:46" + }, + "returnParameters": { + "id": 4919, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4918, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 4928, + "src": "446:4:46", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 4917, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "446:4:46", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "445:6:46" + }, + "scope": 4983, + "src": "353:158:46", + "stateMutability": "nonpayable", + "superFunction": 4436, + "visibility": "public" + }, + { + "body": { + "id": 4945, + "nodeType": "Block", + "src": "602:53:46", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 4941, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4930, + "src": "633:7:46", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 4942, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4932, + "src": "642:5:46", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 4939, + "name": "super", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6959, + "src": "619:5:46", + "typeDescriptions": { + "typeIdentifier": "t_super$_ERC20Pausable_$4983", + "typeString": "contract super ERC20Pausable" + } + }, + "id": 4940, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "approve", + "nodeType": "MemberAccess", + "referencedDeclaration": 4387, + "src": "619:13:46", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,uint256) returns (bool)" + } + }, + "id": 4943, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "619:29:46", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 4938, + "id": 4944, + "nodeType": "Return", + "src": "612:36:46" + } + ] + }, + "documentation": null, + "id": 4946, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": null, + "id": 4935, + "modifierName": { + "argumentTypes": null, + "id": 4934, + "name": "whenNotPaused", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3242, + "src": "573:13:46", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "573:13:46" + } + ], + "name": "approve", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4933, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4930, + "name": "spender", + "nodeType": "VariableDeclaration", + "scope": 4946, + "src": "534:15:46", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4929, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "534:7:46", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 4932, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 4946, + "src": "551:13:46", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4931, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "551:7:46", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "533:32:46" + }, + "returnParameters": { + "id": 4938, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4937, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 4946, + "src": "596:4:46", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 4936, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "596:4:46", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "595:6:46" + }, + "scope": 4983, + "src": "517:138:46", + "stateMutability": "nonpayable", + "superFunction": 4387, + "visibility": "public" + }, + { + "body": { + "id": 4963, + "nodeType": "Block", + "src": "766:68:46", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 4959, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4948, + "src": "807:7:46", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 4960, + "name": "addedValue", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4950, + "src": "816:10:46", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 4957, + "name": "super", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6959, + "src": "783:5:46", + "typeDescriptions": { + "typeIdentifier": "t_super$_ERC20Pausable_$4983", + "typeString": "contract super ERC20Pausable" + } + }, + "id": 4958, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "increaseAllowance", + "nodeType": "MemberAccess", + "referencedDeclaration": 4485, + "src": "783:23:46", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,uint256) returns (bool)" + } + }, + "id": 4961, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "783:44:46", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 4956, + "id": 4962, + "nodeType": "Return", + "src": "776:51:46" + } + ] + }, + "documentation": null, + "id": 4964, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": null, + "id": 4953, + "modifierName": { + "argumentTypes": null, + "id": 4952, + "name": "whenNotPaused", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3242, + "src": "729:13:46", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "729:13:46" + } + ], + "name": "increaseAllowance", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4951, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4948, + "name": "spender", + "nodeType": "VariableDeclaration", + "scope": 4964, + "src": "688:15:46", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4947, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "688:7:46", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 4950, + "name": "addedValue", + "nodeType": "VariableDeclaration", + "scope": 4964, + "src": "705:15:46", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4949, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "705:4:46", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "687:34:46" + }, + "returnParameters": { + "id": 4956, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4955, + "name": "success", + "nodeType": "VariableDeclaration", + "scope": 4964, + "src": "752:12:46", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 4954, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "752:4:46", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "751:14:46" + }, + "scope": 4983, + "src": "661:173:46", + "stateMutability": "nonpayable", + "superFunction": 4485, + "visibility": "public" + }, + { + "body": { + "id": 4981, + "nodeType": "Block", + "src": "950:73:46", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 4977, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4966, + "src": "991:7:46", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 4978, + "name": "subtractedValue", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4968, + "src": "1000:15:46", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 4975, + "name": "super", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6959, + "src": "967:5:46", + "typeDescriptions": { + "typeIdentifier": "t_super$_ERC20Pausable_$4983", + "typeString": "contract super ERC20Pausable" + } + }, + "id": 4976, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "decreaseAllowance", + "nodeType": "MemberAccess", + "referencedDeclaration": 4534, + "src": "967:23:46", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,uint256) returns (bool)" + } + }, + "id": 4979, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "967:49:46", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 4974, + "id": 4980, + "nodeType": "Return", + "src": "960:56:46" + } + ] + }, + "documentation": null, + "id": 4982, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": null, + "id": 4971, + "modifierName": { + "argumentTypes": null, + "id": 4970, + "name": "whenNotPaused", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3242, + "src": "913:13:46", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "913:13:46" + } + ], + "name": "decreaseAllowance", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4969, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4966, + "name": "spender", + "nodeType": "VariableDeclaration", + "scope": 4982, + "src": "867:15:46", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4965, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "867:7:46", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 4968, + "name": "subtractedValue", + "nodeType": "VariableDeclaration", + "scope": 4982, + "src": "884:20:46", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4967, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "884:4:46", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "866:39:46" + }, + "returnParameters": { + "id": 4974, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4973, + "name": "success", + "nodeType": "VariableDeclaration", + "scope": 4982, + "src": "936:12:46", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 4972, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "936:4:46", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "935:14:46" + }, + "scope": 4983, + "src": "840:183:46", + "stateMutability": "nonpayable", + "superFunction": 4534, + "visibility": "public" + } + ], + "scope": 4984, + "src": "169:856:46" + } + ], + "src": "0:1026:46" + }, + "compiler": { + "name": "solc", + "version": "0.5.0+commit.1d4f565a.Emscripten.clang" + }, + "networks": {}, + "schemaVersion": "3.0.0", + "updatedAt": "2019-01-04T21:44:02.892Z", + "devdoc": { + "details": "ERC20 modified with pausable transfers.*", + "methods": { + "allowance(address,address)": { + "details": "Function to check the amount of tokens that an owner allowed to a spender.", + "params": { + "owner": "address The address which owns the funds.", + "spender": "address The address which will spend the funds." + }, + "return": "A uint256 specifying the amount of tokens still available for the spender." + }, + "balanceOf(address)": { + "details": "Gets the balance of the specified address.", + "params": { + "owner": "The address to query the balance of." + }, + "return": "An uint256 representing the amount owned by the passed address." + }, + "pause()": { + "details": "called by the owner to pause, triggers stopped state" + }, + "paused()": { + "return": "true if the contract is paused, false otherwise." + }, + "totalSupply()": { + "details": "Total number of tokens in existence" + }, + "unpause()": { + "details": "called by the owner to unpause, returns to normal state" + } + }, + "title": "Pausable token" + }, + "userdoc": { + "methods": {} + } +} \ No newline at end of file diff --git a/node_modules/openzeppelin-solidity/build/contracts/ERC20TokenMetadata.json b/node_modules/openzeppelin-solidity/build/contracts/ERC20TokenMetadata.json new file mode 100644 index 0000000..d81aa4c --- /dev/null +++ b/node_modules/openzeppelin-solidity/build/contracts/ERC20TokenMetadata.json @@ -0,0 +1,979 @@ +{ + "contractName": "ERC20TokenMetadata", + "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" + }, + { + "constant": true, + "inputs": [], + "name": "tokenURI", + "outputs": [ + { + "name": "", + "type": "string" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "sourceMap": "", + "deployedSourceMap": "", + "source": "pragma solidity ^0.5.0;\n\nimport \"../../token/ERC20/IERC20.sol\";\n\n/**\n * @title ERC-1047 Token Metadata\n * @dev See https://eips.ethereum.org/EIPS/eip-1046\n * @dev tokenURI must respond with a URI that implements https://eips.ethereum.org/EIPS/eip-1047\n */\ncontract ERC20TokenMetadata is IERC20 {\n function tokenURI() external view returns (string memory);\n}\n\ncontract ERC20WithMetadata is ERC20TokenMetadata {\n string private _tokenURI;\n\n constructor (string memory tokenURI) public {\n _tokenURI = tokenURI;\n }\n\n function tokenURI() external view returns (string memory) {\n return _tokenURI;\n }\n}\n", + "sourcePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/drafts/ERC1046/TokenMetadata.sol", + "ast": { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/drafts/ERC1046/TokenMetadata.sol", + "exportedSymbols": { + "ERC20TokenMetadata": [ + 2061 + ], + "ERC20WithMetadata": [ + 2084 + ] + }, + "id": 2085, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 2052, + "literals": [ + "solidity", + "^", + "0.5", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "0:23:23" + }, + { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/token/ERC20/IERC20.sol", + "file": "../../token/ERC20/IERC20.sol", + "id": 2053, + "nodeType": "ImportDirective", + "scope": 2085, + "sourceUnit": 5053, + "src": "25:38:23", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 2054, + "name": "IERC20", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 5052, + "src": "287:6:23", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$5052", + "typeString": "contract IERC20" + } + }, + "id": 2055, + "nodeType": "InheritanceSpecifier", + "src": "287:6:23" + } + ], + "contractDependencies": [ + 5052 + ], + "contractKind": "contract", + "documentation": "@title ERC-1047 Token Metadata\n@dev See https://eips.ethereum.org/EIPS/eip-1046\n@dev tokenURI must respond with a URI that implements https://eips.ethereum.org/EIPS/eip-1047", + "fullyImplemented": false, + "id": 2061, + "linearizedBaseContracts": [ + 2061, + 5052 + ], + "name": "ERC20TokenMetadata", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": null, + "documentation": null, + "id": 2060, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "tokenURI", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2056, + "nodeType": "ParameterList", + "parameters": [], + "src": "317:2:23" + }, + "returnParameters": { + "id": 2059, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2058, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 2060, + "src": "343:13:23", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 2057, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "343:6:23", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "342:15:23" + }, + "scope": 2061, + "src": "300:58:23", + "stateMutability": "view", + "superFunction": null, + "visibility": "external" + } + ], + "scope": 2085, + "src": "256:104:23" + }, + { + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 2062, + "name": "ERC20TokenMetadata", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 2061, + "src": "392:18:23", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20TokenMetadata_$2061", + "typeString": "contract ERC20TokenMetadata" + } + }, + "id": 2063, + "nodeType": "InheritanceSpecifier", + "src": "392:18:23" + } + ], + "contractDependencies": [ + 2061, + 5052 + ], + "contractKind": "contract", + "documentation": null, + "fullyImplemented": false, + "id": 2084, + "linearizedBaseContracts": [ + 2084, + 2061, + 5052 + ], + "name": "ERC20WithMetadata", + "nodeType": "ContractDefinition", + "nodes": [ + { + "constant": false, + "id": 2065, + "name": "_tokenURI", + "nodeType": "VariableDeclaration", + "scope": 2084, + "src": "417:24:23", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string" + }, + "typeName": { + "id": 2064, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "417:6:23", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "private" + }, + { + "body": { + "id": 2074, + "nodeType": "Block", + "src": "492:37:23", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 2072, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 2070, + "name": "_tokenURI", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2065, + "src": "502:9:23", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 2071, + "name": "tokenURI", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2067, + "src": "514:8:23", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "src": "502:20:23", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "id": 2073, + "nodeType": "ExpressionStatement", + "src": "502:20:23" + } + ] + }, + "documentation": null, + "id": 2075, + "implemented": true, + "kind": "constructor", + "modifiers": [], + "name": "", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2068, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2067, + "name": "tokenURI", + "nodeType": "VariableDeclaration", + "scope": 2075, + "src": "461:22:23", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 2066, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "461:6:23", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "460:24:23" + }, + "returnParameters": { + "id": 2069, + "nodeType": "ParameterList", + "parameters": [], + "src": "492:0:23" + }, + "scope": 2084, + "src": "448:81:23", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 2082, + "nodeType": "Block", + "src": "593:33:23", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 2080, + "name": "_tokenURI", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2065, + "src": "610:9:23", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "functionReturnParameters": 2079, + "id": 2081, + "nodeType": "Return", + "src": "603:16:23" + } + ] + }, + "documentation": null, + "id": 2083, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "tokenURI", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2076, + "nodeType": "ParameterList", + "parameters": [], + "src": "552:2:23" + }, + "returnParameters": { + "id": 2079, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2078, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 2083, + "src": "578:13:23", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 2077, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "578:6:23", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "577:15:23" + }, + "scope": 2084, + "src": "535:91:23", + "stateMutability": "view", + "superFunction": 2060, + "visibility": "external" + } + ], + "scope": 2085, + "src": "362:266:23" + } + ], + "src": "0:629:23" + }, + "legacyAST": { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/drafts/ERC1046/TokenMetadata.sol", + "exportedSymbols": { + "ERC20TokenMetadata": [ + 2061 + ], + "ERC20WithMetadata": [ + 2084 + ] + }, + "id": 2085, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 2052, + "literals": [ + "solidity", + "^", + "0.5", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "0:23:23" + }, + { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/token/ERC20/IERC20.sol", + "file": "../../token/ERC20/IERC20.sol", + "id": 2053, + "nodeType": "ImportDirective", + "scope": 2085, + "sourceUnit": 5053, + "src": "25:38:23", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 2054, + "name": "IERC20", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 5052, + "src": "287:6:23", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$5052", + "typeString": "contract IERC20" + } + }, + "id": 2055, + "nodeType": "InheritanceSpecifier", + "src": "287:6:23" + } + ], + "contractDependencies": [ + 5052 + ], + "contractKind": "contract", + "documentation": "@title ERC-1047 Token Metadata\n@dev See https://eips.ethereum.org/EIPS/eip-1046\n@dev tokenURI must respond with a URI that implements https://eips.ethereum.org/EIPS/eip-1047", + "fullyImplemented": false, + "id": 2061, + "linearizedBaseContracts": [ + 2061, + 5052 + ], + "name": "ERC20TokenMetadata", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": null, + "documentation": null, + "id": 2060, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "tokenURI", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2056, + "nodeType": "ParameterList", + "parameters": [], + "src": "317:2:23" + }, + "returnParameters": { + "id": 2059, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2058, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 2060, + "src": "343:13:23", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 2057, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "343:6:23", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "342:15:23" + }, + "scope": 2061, + "src": "300:58:23", + "stateMutability": "view", + "superFunction": null, + "visibility": "external" + } + ], + "scope": 2085, + "src": "256:104:23" + }, + { + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 2062, + "name": "ERC20TokenMetadata", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 2061, + "src": "392:18:23", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20TokenMetadata_$2061", + "typeString": "contract ERC20TokenMetadata" + } + }, + "id": 2063, + "nodeType": "InheritanceSpecifier", + "src": "392:18:23" + } + ], + "contractDependencies": [ + 2061, + 5052 + ], + "contractKind": "contract", + "documentation": null, + "fullyImplemented": false, + "id": 2084, + "linearizedBaseContracts": [ + 2084, + 2061, + 5052 + ], + "name": "ERC20WithMetadata", + "nodeType": "ContractDefinition", + "nodes": [ + { + "constant": false, + "id": 2065, + "name": "_tokenURI", + "nodeType": "VariableDeclaration", + "scope": 2084, + "src": "417:24:23", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string" + }, + "typeName": { + "id": 2064, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "417:6:23", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "private" + }, + { + "body": { + "id": 2074, + "nodeType": "Block", + "src": "492:37:23", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 2072, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 2070, + "name": "_tokenURI", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2065, + "src": "502:9:23", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 2071, + "name": "tokenURI", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2067, + "src": "514:8:23", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "src": "502:20:23", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "id": 2073, + "nodeType": "ExpressionStatement", + "src": "502:20:23" + } + ] + }, + "documentation": null, + "id": 2075, + "implemented": true, + "kind": "constructor", + "modifiers": [], + "name": "", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2068, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2067, + "name": "tokenURI", + "nodeType": "VariableDeclaration", + "scope": 2075, + "src": "461:22:23", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 2066, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "461:6:23", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "460:24:23" + }, + "returnParameters": { + "id": 2069, + "nodeType": "ParameterList", + "parameters": [], + "src": "492:0:23" + }, + "scope": 2084, + "src": "448:81:23", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 2082, + "nodeType": "Block", + "src": "593:33:23", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 2080, + "name": "_tokenURI", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2065, + "src": "610:9:23", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "functionReturnParameters": 2079, + "id": 2081, + "nodeType": "Return", + "src": "603:16:23" + } + ] + }, + "documentation": null, + "id": 2083, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "tokenURI", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2076, + "nodeType": "ParameterList", + "parameters": [], + "src": "552:2:23" + }, + "returnParameters": { + "id": 2079, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2078, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 2083, + "src": "578:13:23", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 2077, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "578:6:23", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "577:15:23" + }, + "scope": 2084, + "src": "535:91:23", + "stateMutability": "view", + "superFunction": 2060, + "visibility": "external" + } + ], + "scope": 2085, + "src": "362:266:23" + } + ], + "src": "0:629:23" + }, + "compiler": { + "name": "solc", + "version": "0.5.0+commit.1d4f565a.Emscripten.clang" + }, + "networks": {}, + "schemaVersion": "3.0.0", + "updatedAt": "2019-01-04T21:44:02.876Z", + "devdoc": { + "details": "See https://eips.ethereum.org/EIPS/eip-1046tokenURI must respond with a URI that implements https://eips.ethereum.org/EIPS/eip-1047", + "methods": {}, + "title": "ERC-1047 Token Metadata" + }, + "userdoc": { + "methods": {} + } +} \ No newline at end of file diff --git a/node_modules/openzeppelin-solidity/build/contracts/ERC20WithMetadata.json b/node_modules/openzeppelin-solidity/build/contracts/ERC20WithMetadata.json new file mode 100644 index 0000000..223bb47 --- /dev/null +++ b/node_modules/openzeppelin-solidity/build/contracts/ERC20WithMetadata.json @@ -0,0 +1,988 @@ +{ + "contractName": "ERC20WithMetadata", + "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" + }, + { + "inputs": [ + { + "name": "tokenURI", + "type": "string" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "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" + }, + { + "constant": true, + "inputs": [], + "name": "tokenURI", + "outputs": [ + { + "name": "", + "type": "string" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "sourceMap": "", + "deployedSourceMap": "", + "source": "pragma solidity ^0.5.0;\n\nimport \"../../token/ERC20/IERC20.sol\";\n\n/**\n * @title ERC-1047 Token Metadata\n * @dev See https://eips.ethereum.org/EIPS/eip-1046\n * @dev tokenURI must respond with a URI that implements https://eips.ethereum.org/EIPS/eip-1047\n */\ncontract ERC20TokenMetadata is IERC20 {\n function tokenURI() external view returns (string memory);\n}\n\ncontract ERC20WithMetadata is ERC20TokenMetadata {\n string private _tokenURI;\n\n constructor (string memory tokenURI) public {\n _tokenURI = tokenURI;\n }\n\n function tokenURI() external view returns (string memory) {\n return _tokenURI;\n }\n}\n", + "sourcePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/drafts/ERC1046/TokenMetadata.sol", + "ast": { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/drafts/ERC1046/TokenMetadata.sol", + "exportedSymbols": { + "ERC20TokenMetadata": [ + 2061 + ], + "ERC20WithMetadata": [ + 2084 + ] + }, + "id": 2085, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 2052, + "literals": [ + "solidity", + "^", + "0.5", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "0:23:23" + }, + { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/token/ERC20/IERC20.sol", + "file": "../../token/ERC20/IERC20.sol", + "id": 2053, + "nodeType": "ImportDirective", + "scope": 2085, + "sourceUnit": 5053, + "src": "25:38:23", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 2054, + "name": "IERC20", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 5052, + "src": "287:6:23", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$5052", + "typeString": "contract IERC20" + } + }, + "id": 2055, + "nodeType": "InheritanceSpecifier", + "src": "287:6:23" + } + ], + "contractDependencies": [ + 5052 + ], + "contractKind": "contract", + "documentation": "@title ERC-1047 Token Metadata\n@dev See https://eips.ethereum.org/EIPS/eip-1046\n@dev tokenURI must respond with a URI that implements https://eips.ethereum.org/EIPS/eip-1047", + "fullyImplemented": false, + "id": 2061, + "linearizedBaseContracts": [ + 2061, + 5052 + ], + "name": "ERC20TokenMetadata", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": null, + "documentation": null, + "id": 2060, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "tokenURI", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2056, + "nodeType": "ParameterList", + "parameters": [], + "src": "317:2:23" + }, + "returnParameters": { + "id": 2059, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2058, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 2060, + "src": "343:13:23", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 2057, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "343:6:23", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "342:15:23" + }, + "scope": 2061, + "src": "300:58:23", + "stateMutability": "view", + "superFunction": null, + "visibility": "external" + } + ], + "scope": 2085, + "src": "256:104:23" + }, + { + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 2062, + "name": "ERC20TokenMetadata", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 2061, + "src": "392:18:23", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20TokenMetadata_$2061", + "typeString": "contract ERC20TokenMetadata" + } + }, + "id": 2063, + "nodeType": "InheritanceSpecifier", + "src": "392:18:23" + } + ], + "contractDependencies": [ + 2061, + 5052 + ], + "contractKind": "contract", + "documentation": null, + "fullyImplemented": false, + "id": 2084, + "linearizedBaseContracts": [ + 2084, + 2061, + 5052 + ], + "name": "ERC20WithMetadata", + "nodeType": "ContractDefinition", + "nodes": [ + { + "constant": false, + "id": 2065, + "name": "_tokenURI", + "nodeType": "VariableDeclaration", + "scope": 2084, + "src": "417:24:23", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string" + }, + "typeName": { + "id": 2064, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "417:6:23", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "private" + }, + { + "body": { + "id": 2074, + "nodeType": "Block", + "src": "492:37:23", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 2072, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 2070, + "name": "_tokenURI", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2065, + "src": "502:9:23", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 2071, + "name": "tokenURI", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2067, + "src": "514:8:23", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "src": "502:20:23", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "id": 2073, + "nodeType": "ExpressionStatement", + "src": "502:20:23" + } + ] + }, + "documentation": null, + "id": 2075, + "implemented": true, + "kind": "constructor", + "modifiers": [], + "name": "", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2068, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2067, + "name": "tokenURI", + "nodeType": "VariableDeclaration", + "scope": 2075, + "src": "461:22:23", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 2066, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "461:6:23", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "460:24:23" + }, + "returnParameters": { + "id": 2069, + "nodeType": "ParameterList", + "parameters": [], + "src": "492:0:23" + }, + "scope": 2084, + "src": "448:81:23", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 2082, + "nodeType": "Block", + "src": "593:33:23", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 2080, + "name": "_tokenURI", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2065, + "src": "610:9:23", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "functionReturnParameters": 2079, + "id": 2081, + "nodeType": "Return", + "src": "603:16:23" + } + ] + }, + "documentation": null, + "id": 2083, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "tokenURI", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2076, + "nodeType": "ParameterList", + "parameters": [], + "src": "552:2:23" + }, + "returnParameters": { + "id": 2079, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2078, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 2083, + "src": "578:13:23", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 2077, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "578:6:23", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "577:15:23" + }, + "scope": 2084, + "src": "535:91:23", + "stateMutability": "view", + "superFunction": 2060, + "visibility": "external" + } + ], + "scope": 2085, + "src": "362:266:23" + } + ], + "src": "0:629:23" + }, + "legacyAST": { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/drafts/ERC1046/TokenMetadata.sol", + "exportedSymbols": { + "ERC20TokenMetadata": [ + 2061 + ], + "ERC20WithMetadata": [ + 2084 + ] + }, + "id": 2085, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 2052, + "literals": [ + "solidity", + "^", + "0.5", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "0:23:23" + }, + { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/token/ERC20/IERC20.sol", + "file": "../../token/ERC20/IERC20.sol", + "id": 2053, + "nodeType": "ImportDirective", + "scope": 2085, + "sourceUnit": 5053, + "src": "25:38:23", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 2054, + "name": "IERC20", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 5052, + "src": "287:6:23", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$5052", + "typeString": "contract IERC20" + } + }, + "id": 2055, + "nodeType": "InheritanceSpecifier", + "src": "287:6:23" + } + ], + "contractDependencies": [ + 5052 + ], + "contractKind": "contract", + "documentation": "@title ERC-1047 Token Metadata\n@dev See https://eips.ethereum.org/EIPS/eip-1046\n@dev tokenURI must respond with a URI that implements https://eips.ethereum.org/EIPS/eip-1047", + "fullyImplemented": false, + "id": 2061, + "linearizedBaseContracts": [ + 2061, + 5052 + ], + "name": "ERC20TokenMetadata", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": null, + "documentation": null, + "id": 2060, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "tokenURI", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2056, + "nodeType": "ParameterList", + "parameters": [], + "src": "317:2:23" + }, + "returnParameters": { + "id": 2059, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2058, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 2060, + "src": "343:13:23", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 2057, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "343:6:23", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "342:15:23" + }, + "scope": 2061, + "src": "300:58:23", + "stateMutability": "view", + "superFunction": null, + "visibility": "external" + } + ], + "scope": 2085, + "src": "256:104:23" + }, + { + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 2062, + "name": "ERC20TokenMetadata", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 2061, + "src": "392:18:23", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20TokenMetadata_$2061", + "typeString": "contract ERC20TokenMetadata" + } + }, + "id": 2063, + "nodeType": "InheritanceSpecifier", + "src": "392:18:23" + } + ], + "contractDependencies": [ + 2061, + 5052 + ], + "contractKind": "contract", + "documentation": null, + "fullyImplemented": false, + "id": 2084, + "linearizedBaseContracts": [ + 2084, + 2061, + 5052 + ], + "name": "ERC20WithMetadata", + "nodeType": "ContractDefinition", + "nodes": [ + { + "constant": false, + "id": 2065, + "name": "_tokenURI", + "nodeType": "VariableDeclaration", + "scope": 2084, + "src": "417:24:23", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string" + }, + "typeName": { + "id": 2064, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "417:6:23", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "private" + }, + { + "body": { + "id": 2074, + "nodeType": "Block", + "src": "492:37:23", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 2072, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 2070, + "name": "_tokenURI", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2065, + "src": "502:9:23", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 2071, + "name": "tokenURI", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2067, + "src": "514:8:23", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "src": "502:20:23", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "id": 2073, + "nodeType": "ExpressionStatement", + "src": "502:20:23" + } + ] + }, + "documentation": null, + "id": 2075, + "implemented": true, + "kind": "constructor", + "modifiers": [], + "name": "", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2068, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2067, + "name": "tokenURI", + "nodeType": "VariableDeclaration", + "scope": 2075, + "src": "461:22:23", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 2066, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "461:6:23", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "460:24:23" + }, + "returnParameters": { + "id": 2069, + "nodeType": "ParameterList", + "parameters": [], + "src": "492:0:23" + }, + "scope": 2084, + "src": "448:81:23", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 2082, + "nodeType": "Block", + "src": "593:33:23", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 2080, + "name": "_tokenURI", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2065, + "src": "610:9:23", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "functionReturnParameters": 2079, + "id": 2081, + "nodeType": "Return", + "src": "603:16:23" + } + ] + }, + "documentation": null, + "id": 2083, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "tokenURI", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2076, + "nodeType": "ParameterList", + "parameters": [], + "src": "552:2:23" + }, + "returnParameters": { + "id": 2079, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2078, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 2083, + "src": "578:13:23", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 2077, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "578:6:23", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "577:15:23" + }, + "scope": 2084, + "src": "535:91:23", + "stateMutability": "view", + "superFunction": 2060, + "visibility": "external" + } + ], + "scope": 2085, + "src": "362:266:23" + } + ], + "src": "0:629:23" + }, + "compiler": { + "name": "solc", + "version": "0.5.0+commit.1d4f565a.Emscripten.clang" + }, + "networks": {}, + "schemaVersion": "3.0.0", + "updatedAt": "2019-01-04T21:44:02.876Z", + "devdoc": { + "methods": {} + }, + "userdoc": { + "methods": {} + } +} \ No newline at end of file diff --git a/node_modules/openzeppelin-solidity/build/contracts/ERC721.json b/node_modules/openzeppelin-solidity/build/contracts/ERC721.json new file mode 100644 index 0000000..af03ccb --- /dev/null +++ b/node_modules/openzeppelin-solidity/build/contracts/ERC721.json @@ -0,0 +1,15443 @@ +{ + "contractName": "ERC721", + "abi": [ + { + "constant": true, + "inputs": [ + { + "name": "interfaceId", + "type": "bytes4" + } + ], + "name": "supportsInterface", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "from", + "type": "address" + }, + { + "indexed": true, + "name": "to", + "type": "address" + }, + { + "indexed": true, + "name": "tokenId", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "name": "approved", + "type": "address" + }, + { + "indexed": true, + "name": "tokenId", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "name": "operator", + "type": "address" + }, + { + "indexed": false, + "name": "approved", + "type": "bool" + } + ], + "name": "ApprovalForAll", + "type": "event" + }, + { + "constant": true, + "inputs": [ + { + "name": "owner", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "tokenId", + "type": "uint256" + } + ], + "name": "ownerOf", + "outputs": [ + { + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "to", + "type": "address" + }, + { + "name": "tokenId", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "tokenId", + "type": "uint256" + } + ], + "name": "getApproved", + "outputs": [ + { + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "to", + "type": "address" + }, + { + "name": "approved", + "type": "bool" + } + ], + "name": "setApprovalForAll", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "owner", + "type": "address" + }, + { + "name": "operator", + "type": "address" + } + ], + "name": "isApprovedForAll", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "from", + "type": "address" + }, + { + "name": "to", + "type": "address" + }, + { + "name": "tokenId", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "from", + "type": "address" + }, + { + "name": "to", + "type": "address" + }, + { + "name": "tokenId", + "type": "uint256" + } + ], + "name": "safeTransferFrom", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "from", + "type": "address" + }, + { + "name": "to", + "type": "address" + }, + { + "name": "tokenId", + "type": "uint256" + }, + { + "name": "_data", + "type": "bytes" + } + ], + "name": "safeTransferFrom", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x608060405234801561001057600080fd5b5061004c6301ffc9a77c01000000000000000000000000000000000000000000000000000000000261008c640100000000026401000000009004565b6100876380ac58cd7c01000000000000000000000000000000000000000000000000000000000261008c640100000000026401000000009004565b610149565b63ffffffff7c010000000000000000000000000000000000000000000000000000000002817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916141515156100dd57600080fd5b6001600080837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6111cd806101586000396000f3fe6080604052600436106100a4576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806301ffc9a7146100a9578063081812fc1461011b578063095ea7b31461019657806323b872dd146101f157806342842e0e1461026c5780636352211e146102e757806370a0823114610362578063a22cb465146103c7578063b88d4fde14610424578063e985e9c514610536575b600080fd5b3480156100b557600080fd5b50610101600480360360208110156100cc57600080fd5b8101908080357bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690602001909291905050506105bf565b604051808215151515815260200191505060405180910390f35b34801561012757600080fd5b506101546004803603602081101561013e57600080fd5b8101908080359060200190929190505050610626565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156101a257600080fd5b506101ef600480360360408110156101b957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610677565b005b3480156101fd57600080fd5b5061026a6004803603606081101561021457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506107bc565b005b34801561027857600080fd5b506102e56004803603606081101561028f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506107e1565b005b3480156102f357600080fd5b506103206004803603602081101561030a57600080fd5b8101908080359060200190929190505050610802565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561036e57600080fd5b506103b16004803603602081101561038557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610880565b6040518082815260200191505060405180910390f35b3480156103d357600080fd5b50610422600480360360408110156103ea57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803515159060200190929190505050610904565b005b34801561043057600080fd5b506105346004803603608081101561044757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001906401000000008111156104ae57600080fd5b8201836020820111156104c057600080fd5b803590602001918460018302840111640100000000831117156104e257600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050610a40565b005b34801561054257600080fd5b506105a56004803603604081101561055957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610a68565b604051808215151515815260200191505060405180910390f35b6000806000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060009054906101000a900460ff169050919050565b600061063182610afc565b151561063c57600080fd5b6002600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b600061068282610802565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141515156106bf57600080fd5b8073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806106ff57506106fe8133610a68565b5b151561070a57600080fd5b826002600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a4505050565b6107c63382610b6e565b15156107d157600080fd5b6107dc838383610c03565b505050565b6107fd8383836020604051908101604052806000815250610a40565b505050565b6000806001600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415151561087757600080fd5b80915050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141515156108bd57600080fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b3373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415151561093f57600080fd5b80600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051808215151515815260200191505060405180910390a35050565b610a4b8484846107bc565b610a5784848484610e68565b1515610a6257600080fd5b50505050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6000806001600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415915050919050565b600080610b7a83610802565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480610be957508373ffffffffffffffffffffffffffffffffffffffff16610bd184610626565b73ffffffffffffffffffffffffffffffffffffffff16145b80610bfa5750610bf98185610a68565b5b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff16610c2382610802565b73ffffffffffffffffffffffffffffffffffffffff16141515610c4557600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614151515610c8157600080fd5b610c8a8161108b565b610cdd6001600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461114b90919063ffffffff16565b600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610d736001600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461116d90919063ffffffff16565b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816001600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b6000610e898473ffffffffffffffffffffffffffffffffffffffff1661118e565b1515610e985760019050611083565b60008473ffffffffffffffffffffffffffffffffffffffff1663150b7a02338887876040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b83811015610f8f578082015181840152602081019050610f74565b50505050905090810190601f168015610fbc5780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b158015610fde57600080fd5b505af1158015610ff2573d6000803e3d6000fd5b505050506040513d602081101561100857600080fd5b8101908080519060200190929190505050905063150b7a027c0100000000000000000000000000000000000000000000000000000000027bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149150505b949350505050565b600073ffffffffffffffffffffffffffffffffffffffff166002600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156111485760006002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b50565b600082821115151561115c57600080fd5b600082840390508091505092915050565b600080828401905083811015151561118457600080fd5b8091505092915050565b600080823b90506000811191505091905056fea165627a7a72305820c711d66d9a4ab2c2f291cd71800e0257dd344af5a1783512898a70efd5de5c7f0029", + "deployedBytecode": "0x6080604052600436106100a4576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806301ffc9a7146100a9578063081812fc1461011b578063095ea7b31461019657806323b872dd146101f157806342842e0e1461026c5780636352211e146102e757806370a0823114610362578063a22cb465146103c7578063b88d4fde14610424578063e985e9c514610536575b600080fd5b3480156100b557600080fd5b50610101600480360360208110156100cc57600080fd5b8101908080357bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690602001909291905050506105bf565b604051808215151515815260200191505060405180910390f35b34801561012757600080fd5b506101546004803603602081101561013e57600080fd5b8101908080359060200190929190505050610626565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156101a257600080fd5b506101ef600480360360408110156101b957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610677565b005b3480156101fd57600080fd5b5061026a6004803603606081101561021457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506107bc565b005b34801561027857600080fd5b506102e56004803603606081101561028f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506107e1565b005b3480156102f357600080fd5b506103206004803603602081101561030a57600080fd5b8101908080359060200190929190505050610802565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561036e57600080fd5b506103b16004803603602081101561038557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610880565b6040518082815260200191505060405180910390f35b3480156103d357600080fd5b50610422600480360360408110156103ea57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803515159060200190929190505050610904565b005b34801561043057600080fd5b506105346004803603608081101561044757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001906401000000008111156104ae57600080fd5b8201836020820111156104c057600080fd5b803590602001918460018302840111640100000000831117156104e257600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050610a40565b005b34801561054257600080fd5b506105a56004803603604081101561055957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610a68565b604051808215151515815260200191505060405180910390f35b6000806000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060009054906101000a900460ff169050919050565b600061063182610afc565b151561063c57600080fd5b6002600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b600061068282610802565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141515156106bf57600080fd5b8073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806106ff57506106fe8133610a68565b5b151561070a57600080fd5b826002600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a4505050565b6107c63382610b6e565b15156107d157600080fd5b6107dc838383610c03565b505050565b6107fd8383836020604051908101604052806000815250610a40565b505050565b6000806001600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415151561087757600080fd5b80915050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141515156108bd57600080fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b3373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415151561093f57600080fd5b80600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051808215151515815260200191505060405180910390a35050565b610a4b8484846107bc565b610a5784848484610e68565b1515610a6257600080fd5b50505050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6000806001600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415915050919050565b600080610b7a83610802565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480610be957508373ffffffffffffffffffffffffffffffffffffffff16610bd184610626565b73ffffffffffffffffffffffffffffffffffffffff16145b80610bfa5750610bf98185610a68565b5b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff16610c2382610802565b73ffffffffffffffffffffffffffffffffffffffff16141515610c4557600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614151515610c8157600080fd5b610c8a8161108b565b610cdd6001600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461114b90919063ffffffff16565b600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610d736001600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461116d90919063ffffffff16565b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816001600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b6000610e898473ffffffffffffffffffffffffffffffffffffffff1661118e565b1515610e985760019050611083565b60008473ffffffffffffffffffffffffffffffffffffffff1663150b7a02338887876040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b83811015610f8f578082015181840152602081019050610f74565b50505050905090810190601f168015610fbc5780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b158015610fde57600080fd5b505af1158015610ff2573d6000803e3d6000fd5b505050506040513d602081101561100857600080fd5b8101908080519060200190929190505050905063150b7a027c0100000000000000000000000000000000000000000000000000000000027bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149150505b949350505050565b600073ffffffffffffffffffffffffffffffffffffffff166002600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156111485760006002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b50565b600082821115151561115c57600080fd5b600082840390508091505092915050565b600080828401905083811015151561118457600080fd5b8091505092915050565b600080823b90506000811191505091905056fea165627a7a72305820c711d66d9a4ab2c2f291cd71800e0257dd344af5a1783512898a70efd5de5c7f0029", + "sourceMap": "338:11087:50:-;;;1797:156;8:9:-1;5:2;;;30:1;27;20:12;5:2;1797:156:50;640:40:28;236:10;659:20;;640:18;;;:40;;;:::i;:::-;1906::50;1163:10;1925:20;;1906:18;;;:40;;;:::i;:::-;338:11087;;990:158:28;1080:10;1065:25;;:11;:25;;;;;1057:34;;;;;;;;1137:4;1101:20;:33;1122:11;1101:33;;;;;;;;;;;;;;;;;;:40;;;;;;;;;;;;;;;;;;990:158;:::o;338:11087:50:-;;;;;;;", + "deployedSourceMap": "338:11087:50:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;778:133:28;;8:9:-1;5:2;;;30:1;27;20:12;5:2;778:133:28;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;778:133:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3705:151:50;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3705:151:50;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3705:151:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3128:292;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3128:292:50;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3128:292:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5260:180;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5260:180:50;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;5260:180:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6079:132;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6079:132:50;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;6079:132:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2530:177;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2530:177:50;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2530:177:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2156:150;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2156:150:50;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2156:150:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4148:213;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4148:213:50;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4148:213:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6916:211;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6916:211:50;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;6916:211:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;6916:211:50;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;6916:211:50;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;6916:211:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;6916:211:50;;;;;;;;;;;;;;;;;;4682:145;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4682:145:50;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4682:145:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;778:133:28;848:4;871:20;:33;892:11;871:33;;;;;;;;;;;;;;;;;;;;;;;;;;;864:40;;778:133;;;:::o;3705:151:50:-;3764:7;3791:16;3799:7;3791;:16::i;:::-;3783:25;;;;;;;;3825:15;:24;3841:7;3825:24;;;;;;;;;;;;;;;;;;;;;3818:31;;3705:151;;;:::o;3128:292::-;3191:13;3207:16;3215:7;3207;:16::i;:::-;3191:32;;3247:5;3241:11;;:2;:11;;;;3233:20;;;;;;;;3285:5;3271:19;;:10;:19;;;:58;;;;3294:35;3311:5;3318:10;3294:16;:35::i;:::-;3271:58;3263:67;;;;;;;;3368:2;3341:15;:24;3357:7;3341:24;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;3405:7;3401:2;3385:28;;3394:5;3385:28;;;;;;;;;;;;3128:292;;;:::o;5260:180::-;5350:39;5369:10;5381:7;5350:18;:39::i;:::-;5342:48;;;;;;;;5401:32;5415:4;5421:2;5425:7;5401:13;:32::i;:::-;5260:180;;;:::o;6079:132::-;6165:39;6182:4;6188:2;6192:7;6165:39;;;;;;;;;;;;;:16;:39::i;:::-;6079:132;;;:::o;2530:177::-;2585:7;2604:13;2620:11;:20;2632:7;2620:20;;;;;;;;;;;;;;;;;;;;;2604:36;;2675:1;2658:19;;:5;:19;;;;2650:28;;;;;;;;2695:5;2688:12;;;2530:177;;;:::o;2156:150::-;2211:7;2255:1;2238:19;;:5;:19;;;;2230:28;;;;;;;;2275:17;:24;2293:5;2275:24;;;;;;;;;;;;;;;;2268:31;;2156:150;;;:::o;4148:213::-;4233:10;4227:16;;:2;:16;;;;4219:25;;;;;;;;4291:8;4254:18;:30;4273:10;4254:30;;;;;;;;;;;;;;;:34;4285:2;4254:34;;;;;;;;;;;;;;;;:45;;;;;;;;;;;;;;;;;;4341:2;4314:40;;4329:10;4314:40;;;4345:8;4314:40;;;;;;;;;;;;;;;;;;;;;;4148:213;;:::o;6916:211::-;7022:31;7035:4;7041:2;7045:7;7022:12;:31::i;:::-;7071:48;7094:4;7100:2;7104:7;7113:5;7071:22;:48::i;:::-;7063:57;;;;;;;;6916:211;;;;:::o;4682:145::-;4762:4;4785:18;:25;4804:5;4785:25;;;;;;;;;;;;;;;:35;4811:8;4785:35;;;;;;;;;;;;;;;;;;;;;;;;;4778:42;;4682:145;;;;:::o;7316:152::-;7373:4;7389:13;7405:11;:20;7417:7;7405:20;;;;;;;;;;;;;;;;;;;;;7389:36;;7459:1;7442:19;;:5;:19;;;;7435:26;;;7316:152;;;:::o;7831:246::-;7916:4;7932:13;7948:16;7956:7;7948;:16::i;:::-;7932:32;;7993:5;7982:16;;:7;:16;;;:51;;;;8026:7;8002:31;;:20;8014:7;8002:11;:20::i;:::-;:31;;;7982:51;:87;;;;8037:32;8054:5;8061:7;8037:16;:32::i;:::-;7982:87;7974:96;;;7831:246;;;;:::o;9819:402::-;9932:4;9912:24;;:16;9920:7;9912;:16::i;:::-;:24;;;9904:33;;;;;;;;9969:1;9955:16;;:2;:16;;;;9947:25;;;;;;;;9983:23;9998:7;9983:14;:23::i;:::-;10043:30;10071:1;10043:17;:23;10061:4;10043:23;;;;;;;;;;;;;;;;:27;;:30;;;;:::i;:::-;10017:17;:23;10035:4;10017:23;;;;;;;;;;;;;;;:56;;;;10107:28;10133:1;10107:17;:21;10125:2;10107:21;;;;;;;;;;;;;;;;:25;;:28;;;;:::i;:::-;10083:17;:21;10101:2;10083:21;;;;;;;;;;;;;;;:52;;;;10169:2;10146:11;:20;10158:7;10146:20;;;;;;;;;;;;:25;;;;;;;;;;;;;;;;;;10206:7;10202:2;10187:27;;10196:4;10187:27;;;;;;;;;;;;9819:402;;;:::o;10744:347::-;10865:4;10890:15;:2;:13;;;:15::i;:::-;10889:16;10885:58;;;10928:4;10921:11;;;;10885:58;10953:13;10985:2;10969:36;;;11006:10;11018:4;11024:7;11033:5;10969:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;10969:70:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10969:70:50;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;10969:70:50;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;10969:70:50;;;;;;;;;;;;;;;;10953:86;;658:10;11067:16;;11057:26;;;:6;:26;;;;11049:35;;;10744:347;;;;;;;:::o;11252:171::-;11351:1;11315:38;;:15;:24;11331:7;11315:24;;;;;;;;;;;;;;;;;;;;;:38;;;;11311:106;;;11404:1;11369:15;:24;11385:7;11369:24;;;;;;;;;;;;:37;;;;;;;;;;;;;;;;;;11311:106;11252:171;:::o;1205:145:33:-;1263:7;1295:1;1290;:6;;1282:15;;;;;;;;1307:9;1323:1;1319;:5;1307:17;;1342:1;1335:8;;;1205:145;;;;:::o;1431:::-;1489:7;1508:9;1524:1;1520;:5;1508:17;;1548:1;1543;:6;;1535:15;;;;;;;;1568:1;1561:8;;;1431:145;;;;:::o;463:616:64:-;523:4;539:12;1038:7;1026:20;1018:28;;1071:1;1064:4;:8;1057:15;;;463:616;;;:::o", + "source": "pragma solidity ^0.5.0;\n\nimport \"./IERC721.sol\";\nimport \"./IERC721Receiver.sol\";\nimport \"../../math/SafeMath.sol\";\nimport \"../../utils/Address.sol\";\nimport \"../../introspection/ERC165.sol\";\n\n/**\n * @title ERC721 Non-Fungible Token Standard basic implementation\n * @dev see https://github.com/ethereum/EIPs/blob/master/EIPS/eip-721.md\n */\ncontract ERC721 is ERC165, IERC721 {\n using SafeMath for uint256;\n using Address for address;\n\n // Equals to `bytes4(keccak256(\"onERC721Received(address,address,uint256,bytes)\"))`\n // which can be also obtained as `IERC721Receiver(0).onERC721Received.selector`\n bytes4 private constant _ERC721_RECEIVED = 0x150b7a02;\n\n // Mapping from token ID to owner\n mapping (uint256 => address) private _tokenOwner;\n\n // Mapping from token ID to approved address\n mapping (uint256 => address) private _tokenApprovals;\n\n // Mapping from owner to number of owned token\n mapping (address => uint256) private _ownedTokensCount;\n\n // Mapping from owner to operator approvals\n mapping (address => mapping (address => bool)) private _operatorApprovals;\n\n bytes4 private constant _INTERFACE_ID_ERC721 = 0x80ac58cd;\n /*\n * 0x80ac58cd ===\n * bytes4(keccak256('balanceOf(address)')) ^\n * bytes4(keccak256('ownerOf(uint256)')) ^\n * bytes4(keccak256('approve(address,uint256)')) ^\n * bytes4(keccak256('getApproved(uint256)')) ^\n * bytes4(keccak256('setApprovalForAll(address,bool)')) ^\n * bytes4(keccak256('isApprovedForAll(address,address)')) ^\n * bytes4(keccak256('transferFrom(address,address,uint256)')) ^\n * bytes4(keccak256('safeTransferFrom(address,address,uint256)')) ^\n * bytes4(keccak256('safeTransferFrom(address,address,uint256,bytes)'))\n */\n\n constructor () public {\n // register the supported interfaces to conform to ERC721 via ERC165\n _registerInterface(_INTERFACE_ID_ERC721);\n }\n\n /**\n * @dev Gets the balance of the specified address\n * @param owner address to query the balance of\n * @return uint256 representing the amount owned by the passed address\n */\n function balanceOf(address owner) public view returns (uint256) {\n require(owner != address(0));\n return _ownedTokensCount[owner];\n }\n\n /**\n * @dev Gets the owner of the specified token ID\n * @param tokenId uint256 ID of the token to query the owner of\n * @return owner address currently marked as the owner of the given token ID\n */\n function ownerOf(uint256 tokenId) public view returns (address) {\n address owner = _tokenOwner[tokenId];\n require(owner != address(0));\n return owner;\n }\n\n /**\n * @dev Approves another address to transfer the given token ID\n * The zero address indicates there is no approved address.\n * There can only be one approved address per token at a given time.\n * Can only be called by the token owner or an approved operator.\n * @param to address to be approved for the given token ID\n * @param tokenId uint256 ID of the token to be approved\n */\n function approve(address to, uint256 tokenId) public {\n address owner = ownerOf(tokenId);\n require(to != owner);\n require(msg.sender == owner || isApprovedForAll(owner, msg.sender));\n\n _tokenApprovals[tokenId] = to;\n emit Approval(owner, to, tokenId);\n }\n\n /**\n * @dev Gets the approved address for a token ID, or zero if no address set\n * Reverts if the token ID does not exist.\n * @param tokenId uint256 ID of the token to query the approval of\n * @return address currently approved for the given token ID\n */\n function getApproved(uint256 tokenId) public view returns (address) {\n require(_exists(tokenId));\n return _tokenApprovals[tokenId];\n }\n\n /**\n * @dev Sets or unsets the approval of a given operator\n * An operator is allowed to transfer all tokens of the sender on their behalf\n * @param to operator address to set the approval\n * @param approved representing the status of the approval to be set\n */\n function setApprovalForAll(address to, bool approved) public {\n require(to != msg.sender);\n _operatorApprovals[msg.sender][to] = approved;\n emit ApprovalForAll(msg.sender, to, approved);\n }\n\n /**\n * @dev Tells whether an operator is approved by a given owner\n * @param owner owner address which you want to query the approval of\n * @param operator operator address which you want to query the approval of\n * @return bool whether the given operator is approved by the given owner\n */\n function isApprovedForAll(address owner, address operator) public view returns (bool) {\n return _operatorApprovals[owner][operator];\n }\n\n /**\n * @dev Transfers the ownership of a given token ID to another address\n * Usage of this method is discouraged, use `safeTransferFrom` whenever possible\n * Requires the msg sender to be the owner, approved, or operator\n * @param from current owner of the token\n * @param to address to receive the ownership of the given token ID\n * @param tokenId uint256 ID of the token to be transferred\n */\n function transferFrom(address from, address to, uint256 tokenId) public {\n require(_isApprovedOrOwner(msg.sender, tokenId));\n\n _transferFrom(from, to, tokenId);\n }\n\n /**\n * @dev Safely transfers the ownership of a given token ID to another address\n * If the target address is a contract, it must implement `onERC721Received`,\n * which is called upon a safe transfer, and return the magic value\n * `bytes4(keccak256(\"onERC721Received(address,address,uint256,bytes)\"))`; otherwise,\n * the transfer is reverted.\n *\n * Requires the msg sender to be the owner, approved, or operator\n * @param from current owner of the token\n * @param to address to receive the ownership of the given token ID\n * @param tokenId uint256 ID of the token to be transferred\n */\n function safeTransferFrom(address from, address to, uint256 tokenId) public {\n safeTransferFrom(from, to, tokenId, \"\");\n }\n\n /**\n * @dev Safely transfers the ownership of a given token ID to another address\n * If the target address is a contract, it must implement `onERC721Received`,\n * which is called upon a safe transfer, and return the magic value\n * `bytes4(keccak256(\"onERC721Received(address,address,uint256,bytes)\"))`; otherwise,\n * the transfer is reverted.\n * Requires the msg sender to be the owner, approved, or operator\n * @param from current owner of the token\n * @param to address to receive the ownership of the given token ID\n * @param tokenId uint256 ID of the token to be transferred\n * @param _data bytes data to send along with a safe transfer check\n */\n function safeTransferFrom(address from, address to, uint256 tokenId, bytes memory _data) public {\n transferFrom(from, to, tokenId);\n require(_checkOnERC721Received(from, to, tokenId, _data));\n }\n\n /**\n * @dev Returns whether the specified token exists\n * @param tokenId uint256 ID of the token to query the existence of\n * @return whether the token exists\n */\n function _exists(uint256 tokenId) internal view returns (bool) {\n address owner = _tokenOwner[tokenId];\n return owner != address(0);\n }\n\n /**\n * @dev Returns whether the given spender can transfer a given token ID\n * @param spender address of the spender to query\n * @param tokenId uint256 ID of the token to be transferred\n * @return bool whether the msg.sender is approved for the given token ID,\n * is an operator of the owner, or is the owner of the token\n */\n function _isApprovedOrOwner(address spender, uint256 tokenId) internal view returns (bool) {\n address owner = ownerOf(tokenId);\n return (spender == owner || getApproved(tokenId) == spender || isApprovedForAll(owner, spender));\n }\n\n /**\n * @dev Internal function to mint a new token\n * Reverts if the given token ID already exists\n * @param to The address that will own the minted token\n * @param tokenId uint256 ID of the token to be minted\n */\n function _mint(address to, uint256 tokenId) internal {\n require(to != address(0));\n require(!_exists(tokenId));\n\n _tokenOwner[tokenId] = to;\n _ownedTokensCount[to] = _ownedTokensCount[to].add(1);\n\n emit Transfer(address(0), to, tokenId);\n }\n\n /**\n * @dev Internal function to burn a specific token\n * Reverts if the token does not exist\n * Deprecated, use _burn(uint256) instead.\n * @param owner owner of the token to burn\n * @param tokenId uint256 ID of the token being burned\n */\n function _burn(address owner, uint256 tokenId) internal {\n require(ownerOf(tokenId) == owner);\n\n _clearApproval(tokenId);\n\n _ownedTokensCount[owner] = _ownedTokensCount[owner].sub(1);\n _tokenOwner[tokenId] = address(0);\n\n emit Transfer(owner, address(0), tokenId);\n }\n\n /**\n * @dev Internal function to burn a specific token\n * Reverts if the token does not exist\n * @param tokenId uint256 ID of the token being burned\n */\n function _burn(uint256 tokenId) internal {\n _burn(ownerOf(tokenId), tokenId);\n }\n\n /**\n * @dev Internal function to transfer ownership of a given token ID to another address.\n * As opposed to transferFrom, this imposes no restrictions on msg.sender.\n * @param from current owner of the token\n * @param to address to receive the ownership of the given token ID\n * @param tokenId uint256 ID of the token to be transferred\n */\n function _transferFrom(address from, address to, uint256 tokenId) internal {\n require(ownerOf(tokenId) == from);\n require(to != address(0));\n\n _clearApproval(tokenId);\n\n _ownedTokensCount[from] = _ownedTokensCount[from].sub(1);\n _ownedTokensCount[to] = _ownedTokensCount[to].add(1);\n\n _tokenOwner[tokenId] = to;\n\n emit Transfer(from, to, tokenId);\n }\n\n /**\n * @dev Internal function to invoke `onERC721Received` on a target address\n * The call is not executed if the target address is not a contract\n * @param from address representing the previous owner of the given token ID\n * @param to target address that will receive the tokens\n * @param tokenId uint256 ID of the token to be transferred\n * @param _data bytes optional data to send along with the call\n * @return whether the call correctly returned the expected magic value\n */\n function _checkOnERC721Received(address from, address to, uint256 tokenId, bytes memory _data)\n internal returns (bool)\n {\n if (!to.isContract()) {\n return true;\n }\n\n bytes4 retval = IERC721Receiver(to).onERC721Received(msg.sender, from, tokenId, _data);\n return (retval == _ERC721_RECEIVED);\n }\n\n /**\n * @dev Private function to clear current approval of a given token ID\n * @param tokenId uint256 ID of the token to be transferred\n */\n function _clearApproval(uint256 tokenId) private {\n if (_tokenApprovals[tokenId] != address(0)) {\n _tokenApprovals[tokenId] = address(0);\n }\n }\n}\n", + "sourcePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/token/ERC721/ERC721.sol", + "ast": { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/token/ERC721/ERC721.sol", + "exportedSymbols": { + "ERC721": [ + 5854 + ] + }, + "id": 5855, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 5297, + "literals": [ + "solidity", + "^", + "0.5", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "0:23:50" + }, + { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/token/ERC721/IERC721.sol", + "file": "./IERC721.sol", + "id": 5298, + "nodeType": "ImportDirective", + "scope": 5855, + "sourceUnit": 6620, + "src": "25:23:50", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/token/ERC721/IERC721Receiver.sol", + "file": "./IERC721Receiver.sol", + "id": 5299, + "nodeType": "ImportDirective", + "scope": 5855, + "sourceUnit": 6698, + "src": "49:31:50", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/math/SafeMath.sol", + "file": "../../math/SafeMath.sol", + "id": 5300, + "nodeType": "ImportDirective", + "scope": 5855, + "sourceUnit": 3483, + "src": "81:33:50", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/utils/Address.sol", + "file": "../../utils/Address.sol", + "id": 5301, + "nodeType": "ImportDirective", + "scope": 5855, + "sourceUnit": 6717, + "src": "115:33:50", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/introspection/ERC165.sol", + "file": "../../introspection/ERC165.sol", + "id": 5302, + "nodeType": "ImportDirective", + "scope": 5855, + "sourceUnit": 3056, + "src": "149:40:50", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 5303, + "name": "ERC165", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 3055, + "src": "357:6:50", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC165_$3055", + "typeString": "contract ERC165" + } + }, + "id": 5304, + "nodeType": "InheritanceSpecifier", + "src": "357:6:50" + }, + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 5305, + "name": "IERC721", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 6619, + "src": "365:7:50", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC721_$6619", + "typeString": "contract IERC721" + } + }, + "id": 5306, + "nodeType": "InheritanceSpecifier", + "src": "365:7:50" + } + ], + "contractDependencies": [ + 3055, + 3202, + 6619 + ], + "contractKind": "contract", + "documentation": "@title ERC721 Non-Fungible Token Standard basic implementation\n@dev see https://github.com/ethereum/EIPs/blob/master/EIPS/eip-721.md", + "fullyImplemented": true, + "id": 5854, + "linearizedBaseContracts": [ + 5854, + 6619, + 3055, + 3202 + ], + "name": "ERC721", + "nodeType": "ContractDefinition", + "nodes": [ + { + "id": 5309, + "libraryName": { + "contractScope": null, + "id": 5307, + "name": "SafeMath", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 3482, + "src": "385:8:50", + "typeDescriptions": { + "typeIdentifier": "t_contract$_SafeMath_$3482", + "typeString": "library SafeMath" + } + }, + "nodeType": "UsingForDirective", + "src": "379:27:50", + "typeName": { + "id": 5308, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "398:7:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + { + "id": 5312, + "libraryName": { + "contractScope": null, + "id": 5310, + "name": "Address", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 6716, + "src": "417:7:50", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Address_$6716", + "typeString": "library Address" + } + }, + "nodeType": "UsingForDirective", + "src": "411:26:50", + "typeName": { + "id": 5311, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "429:7:50", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + { + "constant": true, + "id": 5315, + "name": "_ERC721_RECEIVED", + "nodeType": "VariableDeclaration", + "scope": 5854, + "src": "615:53:50", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "typeName": { + "id": 5313, + "name": "bytes4", + "nodeType": "ElementaryTypeName", + "src": "615:6:50", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "value": { + "argumentTypes": null, + "hexValue": "30783135306237613032", + "id": 5314, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "658:10:50", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_353073666_by_1", + "typeString": "int_const 353073666" + }, + "value": "0x150b7a02" + }, + "visibility": "private" + }, + { + "constant": false, + "id": 5319, + "name": "_tokenOwner", + "nodeType": "VariableDeclaration", + "scope": 5854, + "src": "713:48:50", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$", + "typeString": "mapping(uint256 => address)" + }, + "typeName": { + "id": 5318, + "keyType": { + "id": 5316, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "722:7:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Mapping", + "src": "713:28:50", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$", + "typeString": "mapping(uint256 => address)" + }, + "valueType": { + "id": 5317, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "733:7:50", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + "value": null, + "visibility": "private" + }, + { + "constant": false, + "id": 5323, + "name": "_tokenApprovals", + "nodeType": "VariableDeclaration", + "scope": 5854, + "src": "817:52:50", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$", + "typeString": "mapping(uint256 => address)" + }, + "typeName": { + "id": 5322, + "keyType": { + "id": 5320, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "826:7:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Mapping", + "src": "817:28:50", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$", + "typeString": "mapping(uint256 => address)" + }, + "valueType": { + "id": 5321, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "837:7:50", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + "value": null, + "visibility": "private" + }, + { + "constant": false, + "id": 5327, + "name": "_ownedTokensCount", + "nodeType": "VariableDeclaration", + "scope": 5854, + "src": "927:54:50", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + }, + "typeName": { + "id": 5326, + "keyType": { + "id": 5324, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "936:7:50", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "927:28:50", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + }, + "valueType": { + "id": 5325, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "947:7:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "value": null, + "visibility": "private" + }, + { + "constant": false, + "id": 5333, + "name": "_operatorApprovals", + "nodeType": "VariableDeclaration", + "scope": 5854, + "src": "1036:73:50", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$", + "typeString": "mapping(address => mapping(address => bool))" + }, + "typeName": { + "id": 5332, + "keyType": { + "id": 5328, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1045:7:50", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "1036:46:50", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$", + "typeString": "mapping(address => mapping(address => bool))" + }, + "valueType": { + "id": 5331, + "keyType": { + "id": 5329, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1065:7:50", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "1056:25:50", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + }, + "valueType": { + "id": 5330, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1076:4:50", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + } + }, + "value": null, + "visibility": "private" + }, + { + "constant": true, + "id": 5336, + "name": "_INTERFACE_ID_ERC721", + "nodeType": "VariableDeclaration", + "scope": 5854, + "src": "1116:57:50", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "typeName": { + "id": 5334, + "name": "bytes4", + "nodeType": "ElementaryTypeName", + "src": "1116:6:50", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "value": { + "argumentTypes": null, + "hexValue": "30783830616335386364", + "id": 5335, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1163:10:50", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_2158778573_by_1", + "typeString": "int_const 2158778573" + }, + "value": "0x80ac58cd" + }, + "visibility": "private" + }, + { + "body": { + "id": 5343, + "nodeType": "Block", + "src": "1819:134:50", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 5340, + "name": "_INTERFACE_ID_ERC721", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5336, + "src": "1925:20:50", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + ], + "id": 5339, + "name": "_registerInterface", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3054, + "src": "1906:18:50", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes4_$returns$__$", + "typeString": "function (bytes4)" + } + }, + "id": 5341, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1906:40:50", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5342, + "nodeType": "ExpressionStatement", + "src": "1906:40:50" + } + ] + }, + "documentation": null, + "id": 5344, + "implemented": true, + "kind": "constructor", + "modifiers": [], + "name": "", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5337, + "nodeType": "ParameterList", + "parameters": [], + "src": "1809:2:50" + }, + "returnParameters": { + "id": 5338, + "nodeType": "ParameterList", + "parameters": [], + "src": "1819:0:50" + }, + "scope": 5854, + "src": "1797:156:50", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 5363, + "nodeType": "Block", + "src": "2220:86:50", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 5356, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 5352, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5346, + "src": "2238:5:50", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 5354, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2255:1:50", + "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": 5353, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2247:7:50", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 5355, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2247:10:50", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "2238:19:50", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 5351, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6848, + 6849 + ], + "referencedDeclaration": 6848, + "src": "2230:7:50", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 5357, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2230:28:50", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5358, + "nodeType": "ExpressionStatement", + "src": "2230:28:50" + }, + { + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 5359, + "name": "_ownedTokensCount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5327, + "src": "2275:17:50", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 5361, + "indexExpression": { + "argumentTypes": null, + "id": 5360, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5346, + "src": "2293:5:50", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2275:24:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 5350, + "id": 5362, + "nodeType": "Return", + "src": "2268:31:50" + } + ] + }, + "documentation": "@dev Gets the balance of the specified address\n@param owner address to query the balance of\n@return uint256 representing the amount owned by the passed address", + "id": 5364, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "balanceOf", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5347, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5346, + "name": "owner", + "nodeType": "VariableDeclaration", + "scope": 5364, + "src": "2175:13:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5345, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2175:7:50", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2174:15:50" + }, + "returnParameters": { + "id": 5350, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5349, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 5364, + "src": "2211:7:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5348, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2211:7:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2210:9:50" + }, + "scope": 5854, + "src": "2156:150:50", + "stateMutability": "view", + "superFunction": 6552, + "visibility": "public" + }, + { + "body": { + "id": 5387, + "nodeType": "Block", + "src": "2594:113:50", + "statements": [ + { + "assignments": [ + 5372 + ], + "declarations": [ + { + "constant": false, + "id": 5372, + "name": "owner", + "nodeType": "VariableDeclaration", + "scope": 5387, + "src": "2604:13:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5371, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2604:7:50", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 5376, + "initialValue": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 5373, + "name": "_tokenOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5319, + "src": "2620:11:50", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$", + "typeString": "mapping(uint256 => address)" + } + }, + "id": 5375, + "indexExpression": { + "argumentTypes": null, + "id": 5374, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5366, + "src": "2632:7:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2620:20:50", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "2604:36:50" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 5382, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 5378, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5372, + "src": "2658:5:50", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 5380, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2675:1:50", + "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": 5379, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2667:7:50", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 5381, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2667:10:50", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "2658:19:50", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 5377, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6848, + 6849 + ], + "referencedDeclaration": 6848, + "src": "2650:7:50", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 5383, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2650:28:50", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5384, + "nodeType": "ExpressionStatement", + "src": "2650:28:50" + }, + { + "expression": { + "argumentTypes": null, + "id": 5385, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5372, + "src": "2695:5:50", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "functionReturnParameters": 5370, + "id": 5386, + "nodeType": "Return", + "src": "2688:12:50" + } + ] + }, + "documentation": "@dev Gets the owner of the specified token ID\n@param tokenId uint256 ID of the token to query the owner of\n@return owner address currently marked as the owner of the given token ID", + "id": 5388, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "ownerOf", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5367, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5366, + "name": "tokenId", + "nodeType": "VariableDeclaration", + "scope": 5388, + "src": "2547:15:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5365, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2547:7:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2546:17:50" + }, + "returnParameters": { + "id": 5370, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5369, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 5388, + "src": "2585:7:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5368, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2585:7:50", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2584:9:50" + }, + "scope": 5854, + "src": "2530:177:50", + "stateMutability": "view", + "superFunction": 6559, + "visibility": "public" + }, + { + "body": { + "id": 5432, + "nodeType": "Block", + "src": "3181:239:50", + "statements": [ + { + "assignments": [ + 5396 + ], + "declarations": [ + { + "constant": false, + "id": 5396, + "name": "owner", + "nodeType": "VariableDeclaration", + "scope": 5432, + "src": "3191:13:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5395, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3191:7:50", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 5400, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 5398, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5392, + "src": "3215:7:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 5397, + "name": "ownerOf", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 5388 + ], + "referencedDeclaration": 5388, + "src": "3207:7:50", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_address_$", + "typeString": "function (uint256) view returns (address)" + } + }, + "id": 5399, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3207:16:50", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "3191:32:50" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 5404, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 5402, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5390, + "src": "3241:2:50", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "id": 5403, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5396, + "src": "3247:5:50", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "3241:11:50", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 5401, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6848, + 6849 + ], + "referencedDeclaration": 6848, + "src": "3233:7:50", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 5405, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3233:20:50", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5406, + "nodeType": "ExpressionStatement", + "src": "3233:20:50" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 5417, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 5411, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 5408, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6845, + "src": "3271:3:50", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 5409, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "3271:10:50", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 5410, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5396, + "src": "3285:5:50", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "3271:19:50", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 5413, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5396, + "src": "3311:5:50", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 5414, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6845, + "src": "3318:3:50", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 5415, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "3318:10:50", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "id": 5412, + "name": "isApprovedForAll", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 5498 + ], + "referencedDeclaration": 5498, + "src": "3294:16:50", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$", + "typeString": "function (address,address) view returns (bool)" + } + }, + "id": 5416, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3294:35:50", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "3271:58:50", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 5407, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6848, + 6849 + ], + "referencedDeclaration": 6848, + "src": "3263:7:50", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 5418, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3263:67:50", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5419, + "nodeType": "ExpressionStatement", + "src": "3263:67:50" + }, + { + "expression": { + "argumentTypes": null, + "id": 5424, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 5420, + "name": "_tokenApprovals", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5323, + "src": "3341:15:50", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$", + "typeString": "mapping(uint256 => address)" + } + }, + "id": 5422, + "indexExpression": { + "argumentTypes": null, + "id": 5421, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5392, + "src": "3357:7:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "3341:24:50", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 5423, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5390, + "src": "3368:2:50", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "3341:29:50", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 5425, + "nodeType": "ExpressionStatement", + "src": "3341:29:50" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 5427, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5396, + "src": "3394:5:50", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 5428, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5390, + "src": "3401:2:50", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 5429, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5392, + "src": "3405:7:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 5426, + "name": "Approval", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6537, + "src": "3385:8:50", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 5430, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3385:28:50", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5431, + "nodeType": "EmitStatement", + "src": "3380:33:50" + } + ] + }, + "documentation": "@dev Approves another address to transfer the given token ID\nThe zero address indicates there is no approved address.\nThere can only be one approved address per token at a given time.\nCan only be called by the token owner or an approved operator.\n@param to address to be approved for the given token ID\n@param tokenId uint256 ID of the token to be approved", + "id": 5433, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "approve", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5393, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5390, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 5433, + "src": "3145:10:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5389, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3145:7:50", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5392, + "name": "tokenId", + "nodeType": "VariableDeclaration", + "scope": 5433, + "src": "3157:15:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5391, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3157:7:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3144:29:50" + }, + "returnParameters": { + "id": 5394, + "nodeType": "ParameterList", + "parameters": [], + "src": "3181:0:50" + }, + "scope": 5854, + "src": "3128:292:50", + "stateMutability": "nonpayable", + "superFunction": 6566, + "visibility": "public" + }, + { + "body": { + "id": 5450, + "nodeType": "Block", + "src": "3773:83:50", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 5442, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5435, + "src": "3799:7:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 5441, + "name": "_exists", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5586, + "src": "3791:7:50", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_bool_$", + "typeString": "function (uint256) view returns (bool)" + } + }, + "id": 5443, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3791:16:50", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 5440, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6848, + 6849 + ], + "referencedDeclaration": 6848, + "src": "3783:7:50", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 5444, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3783:25:50", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5445, + "nodeType": "ExpressionStatement", + "src": "3783:25:50" + }, + { + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 5446, + "name": "_tokenApprovals", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5323, + "src": "3825:15:50", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$", + "typeString": "mapping(uint256 => address)" + } + }, + "id": 5448, + "indexExpression": { + "argumentTypes": null, + "id": 5447, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5435, + "src": "3841:7:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3825:24:50", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "functionReturnParameters": 5439, + "id": 5449, + "nodeType": "Return", + "src": "3818:31:50" + } + ] + }, + "documentation": "@dev Gets the approved address for a token ID, or zero if no address set\nReverts if the token ID does not exist.\n@param tokenId uint256 ID of the token to query the approval of\n@return address currently approved for the given token ID", + "id": 5451, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getApproved", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5436, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5435, + "name": "tokenId", + "nodeType": "VariableDeclaration", + "scope": 5451, + "src": "3726:15:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5434, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3726:7:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3725:17:50" + }, + "returnParameters": { + "id": 5439, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5438, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 5451, + "src": "3764:7:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5437, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3764:7:50", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3763:9:50" + }, + "scope": 5854, + "src": "3705:151:50", + "stateMutability": "view", + "superFunction": 6573, + "visibility": "public" + }, + { + "body": { + "id": 5481, + "nodeType": "Block", + "src": "4209:152:50", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 5462, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 5459, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5453, + "src": "4227:2:50", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 5460, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6845, + "src": "4233:3:50", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 5461, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "4233:10:50", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "4227:16:50", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 5458, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6848, + 6849 + ], + "referencedDeclaration": 6848, + "src": "4219:7:50", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 5463, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4219:25:50", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5464, + "nodeType": "ExpressionStatement", + "src": "4219:25:50" + }, + { + "expression": { + "argumentTypes": null, + "id": 5472, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 5465, + "name": "_operatorApprovals", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5333, + "src": "4254:18:50", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$", + "typeString": "mapping(address => mapping(address => bool))" + } + }, + "id": 5469, + "indexExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 5466, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6845, + "src": "4273:3:50", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 5467, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "4273:10:50", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "4254:30:50", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 5470, + "indexExpression": { + "argumentTypes": null, + "id": 5468, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5453, + "src": "4285:2:50", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "4254:34:50", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 5471, + "name": "approved", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5455, + "src": "4291:8:50", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "4254:45:50", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 5473, + "nodeType": "ExpressionStatement", + "src": "4254:45:50" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 5475, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6845, + "src": "4329:3:50", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 5476, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "4329:10:50", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 5477, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5453, + "src": "4341:2:50", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 5478, + "name": "approved", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5455, + "src": "4345:8:50", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 5474, + "name": "ApprovalForAll", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6545, + "src": "4314:14:50", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_bool_$returns$__$", + "typeString": "function (address,address,bool)" + } + }, + "id": 5479, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4314:40:50", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5480, + "nodeType": "EmitStatement", + "src": "4309:45:50" + } + ] + }, + "documentation": "@dev Sets or unsets the approval of a given operator\nAn operator is allowed to transfer all tokens of the sender on their behalf\n@param to operator address to set the approval\n@param approved representing the status of the approval to be set", + "id": 5482, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "setApprovalForAll", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5456, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5453, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 5482, + "src": "4175:10:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5452, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4175:7:50", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5455, + "name": "approved", + "nodeType": "VariableDeclaration", + "scope": 5482, + "src": "4187:13:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 5454, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "4187:4:50", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4174:27:50" + }, + "returnParameters": { + "id": 5457, + "nodeType": "ParameterList", + "parameters": [], + "src": "4209:0:50" + }, + "scope": 5854, + "src": "4148:213:50", + "stateMutability": "nonpayable", + "superFunction": 6580, + "visibility": "public" + }, + { + "body": { + "id": 5497, + "nodeType": "Block", + "src": "4768:59:50", + "statements": [ + { + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 5491, + "name": "_operatorApprovals", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5333, + "src": "4785:18:50", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$", + "typeString": "mapping(address => mapping(address => bool))" + } + }, + "id": 5493, + "indexExpression": { + "argumentTypes": null, + "id": 5492, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5484, + "src": "4804:5:50", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "4785:25:50", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 5495, + "indexExpression": { + "argumentTypes": null, + "id": 5494, + "name": "operator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5486, + "src": "4811:8:50", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "4785:35:50", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 5490, + "id": 5496, + "nodeType": "Return", + "src": "4778:42:50" + } + ] + }, + "documentation": "@dev Tells whether an operator is approved by a given owner\n@param owner owner address which you want to query the approval of\n@param operator operator address which you want to query the approval of\n@return bool whether the given operator is approved by the given owner", + "id": 5498, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "isApprovedForAll", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5487, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5484, + "name": "owner", + "nodeType": "VariableDeclaration", + "scope": 5498, + "src": "4708:13:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5483, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4708:7:50", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5486, + "name": "operator", + "nodeType": "VariableDeclaration", + "scope": 5498, + "src": "4723:16:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5485, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4723:7:50", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4707:33:50" + }, + "returnParameters": { + "id": 5490, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5489, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 5498, + "src": "4762:4:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 5488, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "4762:4:50", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4761:6:50" + }, + "scope": 5854, + "src": "4682:145:50", + "stateMutability": "view", + "superFunction": 6589, + "visibility": "public" + }, + { + "body": { + "id": 5521, + "nodeType": "Block", + "src": "5332:108:50", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 5509, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6845, + "src": "5369:3:50", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 5510, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "5369:10:50", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 5511, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5504, + "src": "5381:7:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 5508, + "name": "_isApprovedOrOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5618, + "src": "5350:18:50", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,uint256) view returns (bool)" + } + }, + "id": 5512, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5350:39:50", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 5507, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6848, + 6849 + ], + "referencedDeclaration": 6848, + "src": "5342:7:50", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 5513, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5342:48:50", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5514, + "nodeType": "ExpressionStatement", + "src": "5342:48:50" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 5516, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5500, + "src": "5415:4:50", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 5517, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5502, + "src": "5421:2:50", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 5518, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5504, + "src": "5425:7:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 5515, + "name": "_transferFrom", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5790, + "src": "5401:13:50", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 5519, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5401:32:50", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5520, + "nodeType": "ExpressionStatement", + "src": "5401:32:50" + } + ] + }, + "documentation": "@dev Transfers the ownership of a given token ID to another address\nUsage of this method is discouraged, use `safeTransferFrom` whenever possible\nRequires the msg sender to be the owner, approved, or operator\n@param from current owner of the token\n@param to address to receive the ownership of the given token ID\n@param tokenId uint256 ID of the token to be transferred", + "id": 5522, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "transferFrom", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5505, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5500, + "name": "from", + "nodeType": "VariableDeclaration", + "scope": 5522, + "src": "5282:12:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5499, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5282:7:50", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5502, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 5522, + "src": "5296:10:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5501, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5296:7:50", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5504, + "name": "tokenId", + "nodeType": "VariableDeclaration", + "scope": 5522, + "src": "5308:15:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5503, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5308:7:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "5281:43:50" + }, + "returnParameters": { + "id": 5506, + "nodeType": "ParameterList", + "parameters": [], + "src": "5332:0:50" + }, + "scope": 5854, + "src": "5260:180:50", + "stateMutability": "nonpayable", + "superFunction": 6598, + "visibility": "public" + }, + { + "body": { + "id": 5538, + "nodeType": "Block", + "src": "6155:56:50", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 5532, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5524, + "src": "6182:4:50", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 5533, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5526, + "src": "6188:2:50", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 5534, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5528, + "src": "6192:7:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "hexValue": "", + "id": 5535, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6201:2:50", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", + "typeString": "literal_string \"\"" + }, + "value": "" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", + "typeString": "literal_string \"\"" + } + ], + "id": 5531, + "name": "safeTransferFrom", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 5539, + 5566 + ], + "referencedDeclaration": 5566, + "src": "6165:16:50", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$", + "typeString": "function (address,address,uint256,bytes memory)" + } + }, + "id": 5536, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6165:39:50", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5537, + "nodeType": "ExpressionStatement", + "src": "6165:39:50" + } + ] + }, + "documentation": "@dev Safely transfers the ownership of a given token ID to another address\nIf the target address is a contract, it must implement `onERC721Received`,\nwhich is called upon a safe transfer, and return the magic value\n`bytes4(keccak256(\"onERC721Received(address,address,uint256,bytes)\"))`; otherwise,\nthe transfer is reverted.\n * Requires the msg sender to be the owner, approved, or operator\n@param from current owner of the token\n@param to address to receive the ownership of the given token ID\n@param tokenId uint256 ID of the token to be transferred", + "id": 5539, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "safeTransferFrom", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5529, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5524, + "name": "from", + "nodeType": "VariableDeclaration", + "scope": 5539, + "src": "6105:12:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5523, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6105:7:50", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5526, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 5539, + "src": "6119:10:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5525, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6119:7:50", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5528, + "name": "tokenId", + "nodeType": "VariableDeclaration", + "scope": 5539, + "src": "6131:15:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5527, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6131:7:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "6104:43:50" + }, + "returnParameters": { + "id": 5530, + "nodeType": "ParameterList", + "parameters": [], + "src": "6155:0:50" + }, + "scope": 5854, + "src": "6079:132:50", + "stateMutability": "nonpayable", + "superFunction": 6607, + "visibility": "public" + }, + { + "body": { + "id": 5565, + "nodeType": "Block", + "src": "7012:115:50", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 5551, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5541, + "src": "7035:4:50", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 5552, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5543, + "src": "7041:2:50", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 5553, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5545, + "src": "7045:7:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 5550, + "name": "transferFrom", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 5522 + ], + "referencedDeclaration": 5522, + "src": "7022:12:50", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 5554, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7022:31:50", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5555, + "nodeType": "ExpressionStatement", + "src": "7022:31:50" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 5558, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5541, + "src": "7094:4:50", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 5559, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5543, + "src": "7100:2:50", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 5560, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5545, + "src": "7104:7:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 5561, + "name": "_data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5547, + "src": "7113:5:50", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 5557, + "name": "_checkOnERC721Received", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5830, + "src": "7071:22:50", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bool_$", + "typeString": "function (address,address,uint256,bytes memory) returns (bool)" + } + }, + "id": 5562, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7071:48:50", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 5556, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6848, + 6849 + ], + "referencedDeclaration": 6848, + "src": "7063:7:50", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 5563, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7063:57:50", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5564, + "nodeType": "ExpressionStatement", + "src": "7063:57:50" + } + ] + }, + "documentation": "@dev Safely transfers the ownership of a given token ID to another address\nIf the target address is a contract, it must implement `onERC721Received`,\nwhich is called upon a safe transfer, and return the magic value\n`bytes4(keccak256(\"onERC721Received(address,address,uint256,bytes)\"))`; otherwise,\nthe transfer is reverted.\nRequires the msg sender to be the owner, approved, or operator\n@param from current owner of the token\n@param to address to receive the ownership of the given token ID\n@param tokenId uint256 ID of the token to be transferred\n@param _data bytes data to send along with a safe transfer check", + "id": 5566, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "safeTransferFrom", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5548, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5541, + "name": "from", + "nodeType": "VariableDeclaration", + "scope": 5566, + "src": "6942:12:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5540, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6942:7:50", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5543, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 5566, + "src": "6956:10:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5542, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6956:7:50", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5545, + "name": "tokenId", + "nodeType": "VariableDeclaration", + "scope": 5566, + "src": "6968:15:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5544, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6968:7:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5547, + "name": "_data", + "nodeType": "VariableDeclaration", + "scope": 5566, + "src": "6985:18:50", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 5546, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "6985:5:50", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "6941:63:50" + }, + "returnParameters": { + "id": 5549, + "nodeType": "ParameterList", + "parameters": [], + "src": "7012:0:50" + }, + "scope": 5854, + "src": "6916:211:50", + "stateMutability": "nonpayable", + "superFunction": 6618, + "visibility": "public" + }, + { + "body": { + "id": 5585, + "nodeType": "Block", + "src": "7379:89:50", + "statements": [ + { + "assignments": [ + 5574 + ], + "declarations": [ + { + "constant": false, + "id": 5574, + "name": "owner", + "nodeType": "VariableDeclaration", + "scope": 5585, + "src": "7389:13:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5573, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7389:7:50", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 5578, + "initialValue": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 5575, + "name": "_tokenOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5319, + "src": "7405:11:50", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$", + "typeString": "mapping(uint256 => address)" + } + }, + "id": 5577, + "indexExpression": { + "argumentTypes": null, + "id": 5576, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5568, + "src": "7417:7:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "7405:20:50", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "7389:36:50" + }, + { + "expression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 5583, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 5579, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5574, + "src": "7442:5:50", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 5581, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "7459:1:50", + "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": 5580, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "7451:7:50", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 5582, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7451:10:50", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "7442:19:50", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 5572, + "id": 5584, + "nodeType": "Return", + "src": "7435:26:50" + } + ] + }, + "documentation": "@dev Returns whether the specified token exists\n@param tokenId uint256 ID of the token to query the existence of\n@return whether the token exists", + "id": 5586, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_exists", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5569, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5568, + "name": "tokenId", + "nodeType": "VariableDeclaration", + "scope": 5586, + "src": "7333:15:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5567, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7333:7:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "7332:17:50" + }, + "returnParameters": { + "id": 5572, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5571, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 5586, + "src": "7373:4:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 5570, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "7373:4:50", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "7372:6:50" + }, + "scope": 5854, + "src": "7316:152:50", + "stateMutability": "view", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 5617, + "nodeType": "Block", + "src": "7922:155:50", + "statements": [ + { + "assignments": [ + 5596 + ], + "declarations": [ + { + "constant": false, + "id": 5596, + "name": "owner", + "nodeType": "VariableDeclaration", + "scope": 5617, + "src": "7932:13:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5595, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7932:7:50", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 5600, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 5598, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5590, + "src": "7956:7:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 5597, + "name": "ownerOf", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 5388 + ], + "referencedDeclaration": 5388, + "src": "7948:7:50", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_address_$", + "typeString": "function (uint256) view returns (address)" + } + }, + "id": 5599, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7948:16:50", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "7932:32:50" + }, + { + "expression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 5614, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 5609, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 5603, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 5601, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5588, + "src": "7982:7:50", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 5602, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5596, + "src": "7993:5:50", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "7982:16:50", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 5608, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 5605, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5590, + "src": "8014:7:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 5604, + "name": "getApproved", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 5451 + ], + "referencedDeclaration": 5451, + "src": "8002:11:50", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_address_$", + "typeString": "function (uint256) view returns (address)" + } + }, + "id": 5606, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8002:20:50", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 5607, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5588, + "src": "8026:7:50", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "8002:31:50", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "7982:51:50", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 5611, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5596, + "src": "8054:5:50", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 5612, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5588, + "src": "8061:7:50", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 5610, + "name": "isApprovedForAll", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 5498 + ], + "referencedDeclaration": 5498, + "src": "8037:16:50", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$", + "typeString": "function (address,address) view returns (bool)" + } + }, + "id": 5613, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8037:32:50", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "7982:87:50", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "id": 5615, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "7981:89:50", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 5594, + "id": 5616, + "nodeType": "Return", + "src": "7974:96:50" + } + ] + }, + "documentation": "@dev Returns whether the given spender can transfer a given token ID\n@param spender address of the spender to query\n@param tokenId uint256 ID of the token to be transferred\n@return bool whether the msg.sender is approved for the given token ID,\n is an operator of the owner, or is the owner of the token", + "id": 5618, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_isApprovedOrOwner", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5591, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5588, + "name": "spender", + "nodeType": "VariableDeclaration", + "scope": 5618, + "src": "7859:15:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5587, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7859:7:50", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5590, + "name": "tokenId", + "nodeType": "VariableDeclaration", + "scope": 5618, + "src": "7876:15:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5589, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7876:7:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "7858:34:50" + }, + "returnParameters": { + "id": 5594, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5593, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 5618, + "src": "7916:4:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 5592, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "7916:4:50", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "7915:6:50" + }, + "scope": 5854, + "src": "7831:246:50", + "stateMutability": "view", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 5665, + "nodeType": "Block", + "src": "8373:225:50", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 5630, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 5626, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5620, + "src": "8391:2:50", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 5628, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8405:1:50", + "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": 5627, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "8397:7:50", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 5629, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8397:10:50", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "8391:16:50", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 5625, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6848, + 6849 + ], + "referencedDeclaration": 6848, + "src": "8383:7:50", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 5631, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8383:25:50", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5632, + "nodeType": "ExpressionStatement", + "src": "8383:25:50" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 5637, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "8426:17:50", + "subExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 5635, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5622, + "src": "8435:7:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 5634, + "name": "_exists", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5586, + "src": "8427:7:50", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_bool_$", + "typeString": "function (uint256) view returns (bool)" + } + }, + "id": 5636, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8427:16:50", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 5633, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6848, + 6849 + ], + "referencedDeclaration": 6848, + "src": "8418:7:50", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 5638, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8418:26:50", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5639, + "nodeType": "ExpressionStatement", + "src": "8418:26:50" + }, + { + "expression": { + "argumentTypes": null, + "id": 5644, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 5640, + "name": "_tokenOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5319, + "src": "8455:11:50", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$", + "typeString": "mapping(uint256 => address)" + } + }, + "id": 5642, + "indexExpression": { + "argumentTypes": null, + "id": 5641, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5622, + "src": "8467:7:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "8455:20:50", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 5643, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5620, + "src": "8478:2:50", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "8455:25:50", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 5645, + "nodeType": "ExpressionStatement", + "src": "8455:25:50" + }, + { + "expression": { + "argumentTypes": null, + "id": 5655, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 5646, + "name": "_ownedTokensCount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5327, + "src": "8490:17:50", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 5648, + "indexExpression": { + "argumentTypes": null, + "id": 5647, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5620, + "src": "8508:2:50", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "8490:21:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "31", + "id": 5653, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8540:1:50", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + } + ], + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 5649, + "name": "_ownedTokensCount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5327, + "src": "8514:17:50", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 5651, + "indexExpression": { + "argumentTypes": null, + "id": 5650, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5620, + "src": "8532:2:50", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "8514:21:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 5652, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 3461, + "src": "8514:25:50", + "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": 5654, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8514:28:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "8490:52:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 5656, + "nodeType": "ExpressionStatement", + "src": "8490:52:50" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 5659, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8575:1:50", + "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": 5658, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "8567:7:50", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 5660, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8567:10:50", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 5661, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5620, + "src": "8579:2:50", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 5662, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5622, + "src": "8583:7:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 5657, + "name": "Transfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6529, + "src": "8558:8:50", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 5663, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8558:33:50", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5664, + "nodeType": "EmitStatement", + "src": "8553:38:50" + } + ] + }, + "documentation": "@dev Internal function to mint a new token\nReverts if the given token ID already exists\n@param to The address that will own the minted token\n@param tokenId uint256 ID of the token to be minted", + "id": 5666, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_mint", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5623, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5620, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 5666, + "src": "8335:10:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5619, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8335:7:50", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5622, + "name": "tokenId", + "nodeType": "VariableDeclaration", + "scope": 5666, + "src": "8347:15:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5621, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8347:7:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "8334:29:50" + }, + "returnParameters": { + "id": 5624, + "nodeType": "ParameterList", + "parameters": [], + "src": "8373:0:50" + }, + "scope": 5854, + "src": "8320:278:50", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 5712, + "nodeType": "Block", + "src": "8927:249:50", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 5678, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 5675, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5670, + "src": "8953:7:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 5674, + "name": "ownerOf", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 5388 + ], + "referencedDeclaration": 5388, + "src": "8945:7:50", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_address_$", + "typeString": "function (uint256) view returns (address)" + } + }, + "id": 5676, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8945:16:50", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 5677, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5668, + "src": "8965:5:50", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "8945:25:50", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 5673, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6848, + 6849 + ], + "referencedDeclaration": 6848, + "src": "8937:7:50", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 5679, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8937:34:50", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5680, + "nodeType": "ExpressionStatement", + "src": "8937:34:50" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 5682, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5670, + "src": "8997:7:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 5681, + "name": "_clearApproval", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5853, + "src": "8982:14:50", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$__$", + "typeString": "function (uint256)" + } + }, + "id": 5683, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8982:23:50", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5684, + "nodeType": "ExpressionStatement", + "src": "8982:23:50" + }, + { + "expression": { + "argumentTypes": null, + "id": 5694, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 5685, + "name": "_ownedTokensCount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5327, + "src": "9016:17:50", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 5687, + "indexExpression": { + "argumentTypes": null, + "id": 5686, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5668, + "src": "9034:5:50", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "9016:24:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "31", + "id": 5692, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9072:1:50", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + } + ], + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 5688, + "name": "_ownedTokensCount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5327, + "src": "9043:17:50", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 5690, + "indexExpression": { + "argumentTypes": null, + "id": 5689, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5668, + "src": "9061:5:50", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "9043:24:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 5691, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sub", + "nodeType": "MemberAccess", + "referencedDeclaration": 3437, + "src": "9043:28:50", + "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": 5693, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9043:31:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "9016:58:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 5695, + "nodeType": "ExpressionStatement", + "src": "9016:58:50" + }, + { + "expression": { + "argumentTypes": null, + "id": 5702, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 5696, + "name": "_tokenOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5319, + "src": "9084:11:50", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$", + "typeString": "mapping(uint256 => address)" + } + }, + "id": 5698, + "indexExpression": { + "argumentTypes": null, + "id": 5697, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5670, + "src": "9096:7:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "9084:20:50", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 5700, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9115:1:50", + "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": 5699, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "9107:7:50", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 5701, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9107:10:50", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "9084:33:50", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 5703, + "nodeType": "ExpressionStatement", + "src": "9084:33:50" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 5705, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5668, + "src": "9142:5:50", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 5707, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9157:1:50", + "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": 5706, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "9149:7:50", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 5708, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9149:10:50", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 5709, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5670, + "src": "9161:7:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 5704, + "name": "Transfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6529, + "src": "9133:8:50", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 5710, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9133:36:50", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5711, + "nodeType": "EmitStatement", + "src": "9128:41:50" + } + ] + }, + "documentation": "@dev Internal function to burn a specific token\nReverts if the token does not exist\nDeprecated, use _burn(uint256) instead.\n@param owner owner of the token to burn\n@param tokenId uint256 ID of the token being burned", + "id": 5713, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_burn", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5671, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5668, + "name": "owner", + "nodeType": "VariableDeclaration", + "scope": 5713, + "src": "8886:13:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5667, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8886:7:50", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5670, + "name": "tokenId", + "nodeType": "VariableDeclaration", + "scope": 5713, + "src": "8901:15:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5669, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8901:7:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "8885:32:50" + }, + "returnParameters": { + "id": 5672, + "nodeType": "ParameterList", + "parameters": [], + "src": "8927:0:50" + }, + "scope": 5854, + "src": "8871:305:50", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 5725, + "nodeType": "Block", + "src": "9396:49:50", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 5720, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5715, + "src": "9420:7:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 5719, + "name": "ownerOf", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 5388 + ], + "referencedDeclaration": 5388, + "src": "9412:7:50", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_address_$", + "typeString": "function (uint256) view returns (address)" + } + }, + "id": 5721, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9412:16:50", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 5722, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5715, + "src": "9430:7:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 5718, + "name": "_burn", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 5713, + 5726 + ], + "referencedDeclaration": 5713, + "src": "9406:5:50", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 5723, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9406:32:50", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5724, + "nodeType": "ExpressionStatement", + "src": "9406:32:50" + } + ] + }, + "documentation": "@dev Internal function to burn a specific token\nReverts if the token does not exist\n@param tokenId uint256 ID of the token being burned", + "id": 5726, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_burn", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5716, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5715, + "name": "tokenId", + "nodeType": "VariableDeclaration", + "scope": 5726, + "src": "9370:15:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5714, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "9370:7:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "9369:17:50" + }, + "returnParameters": { + "id": 5717, + "nodeType": "ParameterList", + "parameters": [], + "src": "9396:0:50" + }, + "scope": 5854, + "src": "9355:90:50", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 5789, + "nodeType": "Block", + "src": "9894:327:50", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 5740, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 5737, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5732, + "src": "9920:7:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 5736, + "name": "ownerOf", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 5388 + ], + "referencedDeclaration": 5388, + "src": "9912:7:50", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_address_$", + "typeString": "function (uint256) view returns (address)" + } + }, + "id": 5738, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9912:16:50", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 5739, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5728, + "src": "9932:4:50", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "9912:24:50", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 5735, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6848, + 6849 + ], + "referencedDeclaration": 6848, + "src": "9904:7:50", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 5741, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9904:33:50", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5742, + "nodeType": "ExpressionStatement", + "src": "9904:33:50" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 5748, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 5744, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5730, + "src": "9955:2:50", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 5746, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9969:1:50", + "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": 5745, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "9961:7:50", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 5747, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9961:10:50", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "9955:16:50", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 5743, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6848, + 6849 + ], + "referencedDeclaration": 6848, + "src": "9947:7:50", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 5749, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9947:25:50", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5750, + "nodeType": "ExpressionStatement", + "src": "9947:25:50" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 5752, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5732, + "src": "9998:7:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 5751, + "name": "_clearApproval", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5853, + "src": "9983:14:50", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$__$", + "typeString": "function (uint256)" + } + }, + "id": 5753, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9983:23:50", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5754, + "nodeType": "ExpressionStatement", + "src": "9983:23:50" + }, + { + "expression": { + "argumentTypes": null, + "id": 5764, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 5755, + "name": "_ownedTokensCount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5327, + "src": "10017:17:50", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 5757, + "indexExpression": { + "argumentTypes": null, + "id": 5756, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5728, + "src": "10035:4:50", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "10017:23:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "31", + "id": 5762, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10071:1:50", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + } + ], + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 5758, + "name": "_ownedTokensCount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5327, + "src": "10043:17:50", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 5760, + "indexExpression": { + "argumentTypes": null, + "id": 5759, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5728, + "src": "10061:4:50", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "10043:23:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 5761, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sub", + "nodeType": "MemberAccess", + "referencedDeclaration": 3437, + "src": "10043:27:50", + "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": 5763, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10043:30:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "10017:56:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 5765, + "nodeType": "ExpressionStatement", + "src": "10017:56:50" + }, + { + "expression": { + "argumentTypes": null, + "id": 5775, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 5766, + "name": "_ownedTokensCount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5327, + "src": "10083:17:50", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 5768, + "indexExpression": { + "argumentTypes": null, + "id": 5767, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5730, + "src": "10101:2:50", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "10083:21:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "31", + "id": 5773, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10133:1:50", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + } + ], + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 5769, + "name": "_ownedTokensCount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5327, + "src": "10107:17:50", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 5771, + "indexExpression": { + "argumentTypes": null, + "id": 5770, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5730, + "src": "10125:2:50", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "10107:21:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 5772, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 3461, + "src": "10107:25:50", + "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": 5774, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10107:28:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "10083:52:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 5776, + "nodeType": "ExpressionStatement", + "src": "10083:52:50" + }, + { + "expression": { + "argumentTypes": null, + "id": 5781, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 5777, + "name": "_tokenOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5319, + "src": "10146:11:50", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$", + "typeString": "mapping(uint256 => address)" + } + }, + "id": 5779, + "indexExpression": { + "argumentTypes": null, + "id": 5778, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5732, + "src": "10158:7:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "10146:20:50", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 5780, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5730, + "src": "10169:2:50", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "10146:25:50", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 5782, + "nodeType": "ExpressionStatement", + "src": "10146:25:50" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 5784, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5728, + "src": "10196:4:50", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 5785, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5730, + "src": "10202:2:50", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 5786, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5732, + "src": "10206:7:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 5783, + "name": "Transfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6529, + "src": "10187:8:50", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 5787, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10187:27:50", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5788, + "nodeType": "EmitStatement", + "src": "10182:32:50" + } + ] + }, + "documentation": "@dev Internal function to transfer ownership of a given token ID to another address.\nAs opposed to transferFrom, this imposes no restrictions on msg.sender.\n@param from current owner of the token\n@param to address to receive the ownership of the given token ID\n@param tokenId uint256 ID of the token to be transferred", + "id": 5790, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_transferFrom", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5733, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5728, + "name": "from", + "nodeType": "VariableDeclaration", + "scope": 5790, + "src": "9842:12:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5727, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "9842:7:50", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5730, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 5790, + "src": "9856:10:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5729, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "9856:7:50", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5732, + "name": "tokenId", + "nodeType": "VariableDeclaration", + "scope": 5790, + "src": "9868:15:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5731, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "9868:7:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "9841:43:50" + }, + "returnParameters": { + "id": 5734, + "nodeType": "ParameterList", + "parameters": [], + "src": "9894:0:50" + }, + "scope": 5854, + "src": "9819:402:50", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 5829, + "nodeType": "Block", + "src": "10875:216:50", + "statements": [ + { + "condition": { + "argumentTypes": null, + "id": 5806, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "10889:16:50", + "subExpression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "argumentTypes": null, + "id": 5803, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5794, + "src": "10890:2:50", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 5804, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "isContract", + "nodeType": "MemberAccess", + "referencedDeclaration": 6715, + "src": "10890:13:50", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$bound_to$_t_address_$", + "typeString": "function (address) view returns (bool)" + } + }, + "id": 5805, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10890:15:50", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 5810, + "nodeType": "IfStatement", + "src": "10885:58:50", + "trueBody": { + "id": 5809, + "nodeType": "Block", + "src": "10907:36:50", + "statements": [ + { + "expression": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 5807, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10928:4:50", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 5802, + "id": 5808, + "nodeType": "Return", + "src": "10921:11:50" + } + ] + } + }, + { + "assignments": [ + 5812 + ], + "declarations": [ + { + "constant": false, + "id": 5812, + "name": "retval", + "nodeType": "VariableDeclaration", + "scope": 5829, + "src": "10953:13:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "typeName": { + "id": 5811, + "name": "bytes4", + "nodeType": "ElementaryTypeName", + "src": "10953:6:50", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 5823, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 5817, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6845, + "src": "11006:3:50", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 5818, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "11006:10:50", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 5819, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5792, + "src": "11018:4:50", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 5820, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5796, + "src": "11024:7:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 5821, + "name": "_data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5798, + "src": "11033:5:50", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 5814, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5794, + "src": "10985:2:50", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 5813, + "name": "IERC721Receiver", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6697, + "src": "10969:15:50", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IERC721Receiver_$6697_$", + "typeString": "type(contract IERC721Receiver)" + } + }, + "id": 5815, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10969:19:50", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC721Receiver_$6697", + "typeString": "contract IERC721Receiver" + } + }, + "id": 5816, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "onERC721Received", + "nodeType": "MemberAccess", + "referencedDeclaration": 6696, + "src": "10969:36:50", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bytes4_$", + "typeString": "function (address,address,uint256,bytes memory) external returns (bytes4)" + } + }, + "id": 5822, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10969:70:50", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "10953:86:50" + }, + { + "expression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "id": 5826, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 5824, + "name": "retval", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5812, + "src": "11057:6:50", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 5825, + "name": "_ERC721_RECEIVED", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5315, + "src": "11067:16:50", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "src": "11057:26:50", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "id": 5827, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "11056:28:50", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 5802, + "id": 5828, + "nodeType": "Return", + "src": "11049:35:50" + } + ] + }, + "documentation": "@dev Internal function to invoke `onERC721Received` on a target address\nThe call is not executed if the target address is not a contract\n@param from address representing the previous owner of the given token ID\n@param to target address that will receive the tokens\n@param tokenId uint256 ID of the token to be transferred\n@param _data bytes optional data to send along with the call\n@return whether the call correctly returned the expected magic value", + "id": 5830, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_checkOnERC721Received", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5799, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5792, + "name": "from", + "nodeType": "VariableDeclaration", + "scope": 5830, + "src": "10776:12:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5791, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "10776:7:50", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5794, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 5830, + "src": "10790:10:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5793, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "10790:7:50", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5796, + "name": "tokenId", + "nodeType": "VariableDeclaration", + "scope": 5830, + "src": "10802:15:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5795, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "10802:7:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5798, + "name": "_data", + "nodeType": "VariableDeclaration", + "scope": 5830, + "src": "10819:18:50", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 5797, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "10819:5:50", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "10775:63:50" + }, + "returnParameters": { + "id": 5802, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5801, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 5830, + "src": "10865:4:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 5800, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "10865:4:50", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "10864:6:50" + }, + "scope": 5854, + "src": "10744:347:50", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 5852, + "nodeType": "Block", + "src": "11301:122:50", + "statements": [ + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 5841, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 5835, + "name": "_tokenApprovals", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5323, + "src": "11315:15:50", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$", + "typeString": "mapping(uint256 => address)" + } + }, + "id": 5837, + "indexExpression": { + "argumentTypes": null, + "id": 5836, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5832, + "src": "11331:7:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "11315:24:50", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 5839, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "11351:1:50", + "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": 5838, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "11343:7:50", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 5840, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "11343:10:50", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "11315:38:50", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 5851, + "nodeType": "IfStatement", + "src": "11311:106:50", + "trueBody": { + "id": 5850, + "nodeType": "Block", + "src": "11355:62:50", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 5848, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 5842, + "name": "_tokenApprovals", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5323, + "src": "11369:15:50", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$", + "typeString": "mapping(uint256 => address)" + } + }, + "id": 5844, + "indexExpression": { + "argumentTypes": null, + "id": 5843, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5832, + "src": "11385:7:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "11369:24:50", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 5846, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "11404:1:50", + "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": 5845, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "11396:7:50", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 5847, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "11396:10:50", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "11369:37:50", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 5849, + "nodeType": "ExpressionStatement", + "src": "11369:37:50" + } + ] + } + } + ] + }, + "documentation": "@dev Private function to clear current approval of a given token ID\n@param tokenId uint256 ID of the token to be transferred", + "id": 5853, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_clearApproval", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5833, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5832, + "name": "tokenId", + "nodeType": "VariableDeclaration", + "scope": 5853, + "src": "11276:15:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5831, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "11276:7:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "11275:17:50" + }, + "returnParameters": { + "id": 5834, + "nodeType": "ParameterList", + "parameters": [], + "src": "11301:0:50" + }, + "scope": 5854, + "src": "11252:171:50", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "private" + } + ], + "scope": 5855, + "src": "338:11087:50" + } + ], + "src": "0:11426:50" + }, + "legacyAST": { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/token/ERC721/ERC721.sol", + "exportedSymbols": { + "ERC721": [ + 5854 + ] + }, + "id": 5855, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 5297, + "literals": [ + "solidity", + "^", + "0.5", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "0:23:50" + }, + { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/token/ERC721/IERC721.sol", + "file": "./IERC721.sol", + "id": 5298, + "nodeType": "ImportDirective", + "scope": 5855, + "sourceUnit": 6620, + "src": "25:23:50", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/token/ERC721/IERC721Receiver.sol", + "file": "./IERC721Receiver.sol", + "id": 5299, + "nodeType": "ImportDirective", + "scope": 5855, + "sourceUnit": 6698, + "src": "49:31:50", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/math/SafeMath.sol", + "file": "../../math/SafeMath.sol", + "id": 5300, + "nodeType": "ImportDirective", + "scope": 5855, + "sourceUnit": 3483, + "src": "81:33:50", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/utils/Address.sol", + "file": "../../utils/Address.sol", + "id": 5301, + "nodeType": "ImportDirective", + "scope": 5855, + "sourceUnit": 6717, + "src": "115:33:50", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/introspection/ERC165.sol", + "file": "../../introspection/ERC165.sol", + "id": 5302, + "nodeType": "ImportDirective", + "scope": 5855, + "sourceUnit": 3056, + "src": "149:40:50", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 5303, + "name": "ERC165", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 3055, + "src": "357:6:50", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC165_$3055", + "typeString": "contract ERC165" + } + }, + "id": 5304, + "nodeType": "InheritanceSpecifier", + "src": "357:6:50" + }, + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 5305, + "name": "IERC721", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 6619, + "src": "365:7:50", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC721_$6619", + "typeString": "contract IERC721" + } + }, + "id": 5306, + "nodeType": "InheritanceSpecifier", + "src": "365:7:50" + } + ], + "contractDependencies": [ + 3055, + 3202, + 6619 + ], + "contractKind": "contract", + "documentation": "@title ERC721 Non-Fungible Token Standard basic implementation\n@dev see https://github.com/ethereum/EIPs/blob/master/EIPS/eip-721.md", + "fullyImplemented": true, + "id": 5854, + "linearizedBaseContracts": [ + 5854, + 6619, + 3055, + 3202 + ], + "name": "ERC721", + "nodeType": "ContractDefinition", + "nodes": [ + { + "id": 5309, + "libraryName": { + "contractScope": null, + "id": 5307, + "name": "SafeMath", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 3482, + "src": "385:8:50", + "typeDescriptions": { + "typeIdentifier": "t_contract$_SafeMath_$3482", + "typeString": "library SafeMath" + } + }, + "nodeType": "UsingForDirective", + "src": "379:27:50", + "typeName": { + "id": 5308, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "398:7:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + { + "id": 5312, + "libraryName": { + "contractScope": null, + "id": 5310, + "name": "Address", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 6716, + "src": "417:7:50", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Address_$6716", + "typeString": "library Address" + } + }, + "nodeType": "UsingForDirective", + "src": "411:26:50", + "typeName": { + "id": 5311, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "429:7:50", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + { + "constant": true, + "id": 5315, + "name": "_ERC721_RECEIVED", + "nodeType": "VariableDeclaration", + "scope": 5854, + "src": "615:53:50", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "typeName": { + "id": 5313, + "name": "bytes4", + "nodeType": "ElementaryTypeName", + "src": "615:6:50", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "value": { + "argumentTypes": null, + "hexValue": "30783135306237613032", + "id": 5314, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "658:10:50", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_353073666_by_1", + "typeString": "int_const 353073666" + }, + "value": "0x150b7a02" + }, + "visibility": "private" + }, + { + "constant": false, + "id": 5319, + "name": "_tokenOwner", + "nodeType": "VariableDeclaration", + "scope": 5854, + "src": "713:48:50", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$", + "typeString": "mapping(uint256 => address)" + }, + "typeName": { + "id": 5318, + "keyType": { + "id": 5316, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "722:7:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Mapping", + "src": "713:28:50", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$", + "typeString": "mapping(uint256 => address)" + }, + "valueType": { + "id": 5317, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "733:7:50", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + "value": null, + "visibility": "private" + }, + { + "constant": false, + "id": 5323, + "name": "_tokenApprovals", + "nodeType": "VariableDeclaration", + "scope": 5854, + "src": "817:52:50", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$", + "typeString": "mapping(uint256 => address)" + }, + "typeName": { + "id": 5322, + "keyType": { + "id": 5320, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "826:7:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Mapping", + "src": "817:28:50", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$", + "typeString": "mapping(uint256 => address)" + }, + "valueType": { + "id": 5321, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "837:7:50", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + "value": null, + "visibility": "private" + }, + { + "constant": false, + "id": 5327, + "name": "_ownedTokensCount", + "nodeType": "VariableDeclaration", + "scope": 5854, + "src": "927:54:50", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + }, + "typeName": { + "id": 5326, + "keyType": { + "id": 5324, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "936:7:50", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "927:28:50", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + }, + "valueType": { + "id": 5325, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "947:7:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "value": null, + "visibility": "private" + }, + { + "constant": false, + "id": 5333, + "name": "_operatorApprovals", + "nodeType": "VariableDeclaration", + "scope": 5854, + "src": "1036:73:50", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$", + "typeString": "mapping(address => mapping(address => bool))" + }, + "typeName": { + "id": 5332, + "keyType": { + "id": 5328, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1045:7:50", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "1036:46:50", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$", + "typeString": "mapping(address => mapping(address => bool))" + }, + "valueType": { + "id": 5331, + "keyType": { + "id": 5329, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1065:7:50", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "1056:25:50", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + }, + "valueType": { + "id": 5330, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1076:4:50", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + } + }, + "value": null, + "visibility": "private" + }, + { + "constant": true, + "id": 5336, + "name": "_INTERFACE_ID_ERC721", + "nodeType": "VariableDeclaration", + "scope": 5854, + "src": "1116:57:50", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "typeName": { + "id": 5334, + "name": "bytes4", + "nodeType": "ElementaryTypeName", + "src": "1116:6:50", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "value": { + "argumentTypes": null, + "hexValue": "30783830616335386364", + "id": 5335, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1163:10:50", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_2158778573_by_1", + "typeString": "int_const 2158778573" + }, + "value": "0x80ac58cd" + }, + "visibility": "private" + }, + { + "body": { + "id": 5343, + "nodeType": "Block", + "src": "1819:134:50", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 5340, + "name": "_INTERFACE_ID_ERC721", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5336, + "src": "1925:20:50", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + ], + "id": 5339, + "name": "_registerInterface", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3054, + "src": "1906:18:50", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes4_$returns$__$", + "typeString": "function (bytes4)" + } + }, + "id": 5341, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1906:40:50", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5342, + "nodeType": "ExpressionStatement", + "src": "1906:40:50" + } + ] + }, + "documentation": null, + "id": 5344, + "implemented": true, + "kind": "constructor", + "modifiers": [], + "name": "", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5337, + "nodeType": "ParameterList", + "parameters": [], + "src": "1809:2:50" + }, + "returnParameters": { + "id": 5338, + "nodeType": "ParameterList", + "parameters": [], + "src": "1819:0:50" + }, + "scope": 5854, + "src": "1797:156:50", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 5363, + "nodeType": "Block", + "src": "2220:86:50", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 5356, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 5352, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5346, + "src": "2238:5:50", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 5354, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2255:1:50", + "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": 5353, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2247:7:50", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 5355, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2247:10:50", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "2238:19:50", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 5351, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6848, + 6849 + ], + "referencedDeclaration": 6848, + "src": "2230:7:50", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 5357, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2230:28:50", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5358, + "nodeType": "ExpressionStatement", + "src": "2230:28:50" + }, + { + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 5359, + "name": "_ownedTokensCount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5327, + "src": "2275:17:50", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 5361, + "indexExpression": { + "argumentTypes": null, + "id": 5360, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5346, + "src": "2293:5:50", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2275:24:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 5350, + "id": 5362, + "nodeType": "Return", + "src": "2268:31:50" + } + ] + }, + "documentation": "@dev Gets the balance of the specified address\n@param owner address to query the balance of\n@return uint256 representing the amount owned by the passed address", + "id": 5364, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "balanceOf", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5347, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5346, + "name": "owner", + "nodeType": "VariableDeclaration", + "scope": 5364, + "src": "2175:13:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5345, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2175:7:50", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2174:15:50" + }, + "returnParameters": { + "id": 5350, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5349, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 5364, + "src": "2211:7:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5348, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2211:7:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2210:9:50" + }, + "scope": 5854, + "src": "2156:150:50", + "stateMutability": "view", + "superFunction": 6552, + "visibility": "public" + }, + { + "body": { + "id": 5387, + "nodeType": "Block", + "src": "2594:113:50", + "statements": [ + { + "assignments": [ + 5372 + ], + "declarations": [ + { + "constant": false, + "id": 5372, + "name": "owner", + "nodeType": "VariableDeclaration", + "scope": 5387, + "src": "2604:13:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5371, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2604:7:50", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 5376, + "initialValue": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 5373, + "name": "_tokenOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5319, + "src": "2620:11:50", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$", + "typeString": "mapping(uint256 => address)" + } + }, + "id": 5375, + "indexExpression": { + "argumentTypes": null, + "id": 5374, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5366, + "src": "2632:7:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2620:20:50", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "2604:36:50" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 5382, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 5378, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5372, + "src": "2658:5:50", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 5380, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2675:1:50", + "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": 5379, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2667:7:50", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 5381, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2667:10:50", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "2658:19:50", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 5377, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6848, + 6849 + ], + "referencedDeclaration": 6848, + "src": "2650:7:50", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 5383, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2650:28:50", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5384, + "nodeType": "ExpressionStatement", + "src": "2650:28:50" + }, + { + "expression": { + "argumentTypes": null, + "id": 5385, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5372, + "src": "2695:5:50", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "functionReturnParameters": 5370, + "id": 5386, + "nodeType": "Return", + "src": "2688:12:50" + } + ] + }, + "documentation": "@dev Gets the owner of the specified token ID\n@param tokenId uint256 ID of the token to query the owner of\n@return owner address currently marked as the owner of the given token ID", + "id": 5388, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "ownerOf", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5367, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5366, + "name": "tokenId", + "nodeType": "VariableDeclaration", + "scope": 5388, + "src": "2547:15:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5365, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2547:7:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2546:17:50" + }, + "returnParameters": { + "id": 5370, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5369, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 5388, + "src": "2585:7:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5368, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2585:7:50", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2584:9:50" + }, + "scope": 5854, + "src": "2530:177:50", + "stateMutability": "view", + "superFunction": 6559, + "visibility": "public" + }, + { + "body": { + "id": 5432, + "nodeType": "Block", + "src": "3181:239:50", + "statements": [ + { + "assignments": [ + 5396 + ], + "declarations": [ + { + "constant": false, + "id": 5396, + "name": "owner", + "nodeType": "VariableDeclaration", + "scope": 5432, + "src": "3191:13:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5395, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3191:7:50", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 5400, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 5398, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5392, + "src": "3215:7:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 5397, + "name": "ownerOf", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 5388 + ], + "referencedDeclaration": 5388, + "src": "3207:7:50", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_address_$", + "typeString": "function (uint256) view returns (address)" + } + }, + "id": 5399, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3207:16:50", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "3191:32:50" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 5404, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 5402, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5390, + "src": "3241:2:50", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "id": 5403, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5396, + "src": "3247:5:50", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "3241:11:50", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 5401, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6848, + 6849 + ], + "referencedDeclaration": 6848, + "src": "3233:7:50", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 5405, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3233:20:50", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5406, + "nodeType": "ExpressionStatement", + "src": "3233:20:50" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 5417, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 5411, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 5408, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6845, + "src": "3271:3:50", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 5409, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "3271:10:50", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 5410, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5396, + "src": "3285:5:50", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "3271:19:50", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 5413, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5396, + "src": "3311:5:50", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 5414, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6845, + "src": "3318:3:50", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 5415, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "3318:10:50", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "id": 5412, + "name": "isApprovedForAll", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 5498 + ], + "referencedDeclaration": 5498, + "src": "3294:16:50", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$", + "typeString": "function (address,address) view returns (bool)" + } + }, + "id": 5416, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3294:35:50", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "3271:58:50", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 5407, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6848, + 6849 + ], + "referencedDeclaration": 6848, + "src": "3263:7:50", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 5418, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3263:67:50", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5419, + "nodeType": "ExpressionStatement", + "src": "3263:67:50" + }, + { + "expression": { + "argumentTypes": null, + "id": 5424, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 5420, + "name": "_tokenApprovals", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5323, + "src": "3341:15:50", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$", + "typeString": "mapping(uint256 => address)" + } + }, + "id": 5422, + "indexExpression": { + "argumentTypes": null, + "id": 5421, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5392, + "src": "3357:7:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "3341:24:50", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 5423, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5390, + "src": "3368:2:50", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "3341:29:50", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 5425, + "nodeType": "ExpressionStatement", + "src": "3341:29:50" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 5427, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5396, + "src": "3394:5:50", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 5428, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5390, + "src": "3401:2:50", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 5429, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5392, + "src": "3405:7:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 5426, + "name": "Approval", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6537, + "src": "3385:8:50", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 5430, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3385:28:50", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5431, + "nodeType": "EmitStatement", + "src": "3380:33:50" + } + ] + }, + "documentation": "@dev Approves another address to transfer the given token ID\nThe zero address indicates there is no approved address.\nThere can only be one approved address per token at a given time.\nCan only be called by the token owner or an approved operator.\n@param to address to be approved for the given token ID\n@param tokenId uint256 ID of the token to be approved", + "id": 5433, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "approve", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5393, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5390, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 5433, + "src": "3145:10:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5389, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3145:7:50", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5392, + "name": "tokenId", + "nodeType": "VariableDeclaration", + "scope": 5433, + "src": "3157:15:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5391, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3157:7:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3144:29:50" + }, + "returnParameters": { + "id": 5394, + "nodeType": "ParameterList", + "parameters": [], + "src": "3181:0:50" + }, + "scope": 5854, + "src": "3128:292:50", + "stateMutability": "nonpayable", + "superFunction": 6566, + "visibility": "public" + }, + { + "body": { + "id": 5450, + "nodeType": "Block", + "src": "3773:83:50", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 5442, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5435, + "src": "3799:7:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 5441, + "name": "_exists", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5586, + "src": "3791:7:50", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_bool_$", + "typeString": "function (uint256) view returns (bool)" + } + }, + "id": 5443, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3791:16:50", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 5440, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6848, + 6849 + ], + "referencedDeclaration": 6848, + "src": "3783:7:50", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 5444, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3783:25:50", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5445, + "nodeType": "ExpressionStatement", + "src": "3783:25:50" + }, + { + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 5446, + "name": "_tokenApprovals", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5323, + "src": "3825:15:50", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$", + "typeString": "mapping(uint256 => address)" + } + }, + "id": 5448, + "indexExpression": { + "argumentTypes": null, + "id": 5447, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5435, + "src": "3841:7:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3825:24:50", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "functionReturnParameters": 5439, + "id": 5449, + "nodeType": "Return", + "src": "3818:31:50" + } + ] + }, + "documentation": "@dev Gets the approved address for a token ID, or zero if no address set\nReverts if the token ID does not exist.\n@param tokenId uint256 ID of the token to query the approval of\n@return address currently approved for the given token ID", + "id": 5451, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getApproved", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5436, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5435, + "name": "tokenId", + "nodeType": "VariableDeclaration", + "scope": 5451, + "src": "3726:15:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5434, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3726:7:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3725:17:50" + }, + "returnParameters": { + "id": 5439, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5438, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 5451, + "src": "3764:7:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5437, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3764:7:50", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3763:9:50" + }, + "scope": 5854, + "src": "3705:151:50", + "stateMutability": "view", + "superFunction": 6573, + "visibility": "public" + }, + { + "body": { + "id": 5481, + "nodeType": "Block", + "src": "4209:152:50", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 5462, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 5459, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5453, + "src": "4227:2:50", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 5460, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6845, + "src": "4233:3:50", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 5461, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "4233:10:50", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "4227:16:50", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 5458, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6848, + 6849 + ], + "referencedDeclaration": 6848, + "src": "4219:7:50", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 5463, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4219:25:50", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5464, + "nodeType": "ExpressionStatement", + "src": "4219:25:50" + }, + { + "expression": { + "argumentTypes": null, + "id": 5472, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 5465, + "name": "_operatorApprovals", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5333, + "src": "4254:18:50", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$", + "typeString": "mapping(address => mapping(address => bool))" + } + }, + "id": 5469, + "indexExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 5466, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6845, + "src": "4273:3:50", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 5467, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "4273:10:50", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "4254:30:50", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 5470, + "indexExpression": { + "argumentTypes": null, + "id": 5468, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5453, + "src": "4285:2:50", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "4254:34:50", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 5471, + "name": "approved", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5455, + "src": "4291:8:50", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "4254:45:50", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 5473, + "nodeType": "ExpressionStatement", + "src": "4254:45:50" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 5475, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6845, + "src": "4329:3:50", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 5476, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "4329:10:50", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 5477, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5453, + "src": "4341:2:50", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 5478, + "name": "approved", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5455, + "src": "4345:8:50", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 5474, + "name": "ApprovalForAll", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6545, + "src": "4314:14:50", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_bool_$returns$__$", + "typeString": "function (address,address,bool)" + } + }, + "id": 5479, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4314:40:50", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5480, + "nodeType": "EmitStatement", + "src": "4309:45:50" + } + ] + }, + "documentation": "@dev Sets or unsets the approval of a given operator\nAn operator is allowed to transfer all tokens of the sender on their behalf\n@param to operator address to set the approval\n@param approved representing the status of the approval to be set", + "id": 5482, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "setApprovalForAll", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5456, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5453, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 5482, + "src": "4175:10:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5452, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4175:7:50", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5455, + "name": "approved", + "nodeType": "VariableDeclaration", + "scope": 5482, + "src": "4187:13:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 5454, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "4187:4:50", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4174:27:50" + }, + "returnParameters": { + "id": 5457, + "nodeType": "ParameterList", + "parameters": [], + "src": "4209:0:50" + }, + "scope": 5854, + "src": "4148:213:50", + "stateMutability": "nonpayable", + "superFunction": 6580, + "visibility": "public" + }, + { + "body": { + "id": 5497, + "nodeType": "Block", + "src": "4768:59:50", + "statements": [ + { + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 5491, + "name": "_operatorApprovals", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5333, + "src": "4785:18:50", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$", + "typeString": "mapping(address => mapping(address => bool))" + } + }, + "id": 5493, + "indexExpression": { + "argumentTypes": null, + "id": 5492, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5484, + "src": "4804:5:50", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "4785:25:50", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 5495, + "indexExpression": { + "argumentTypes": null, + "id": 5494, + "name": "operator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5486, + "src": "4811:8:50", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "4785:35:50", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 5490, + "id": 5496, + "nodeType": "Return", + "src": "4778:42:50" + } + ] + }, + "documentation": "@dev Tells whether an operator is approved by a given owner\n@param owner owner address which you want to query the approval of\n@param operator operator address which you want to query the approval of\n@return bool whether the given operator is approved by the given owner", + "id": 5498, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "isApprovedForAll", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5487, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5484, + "name": "owner", + "nodeType": "VariableDeclaration", + "scope": 5498, + "src": "4708:13:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5483, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4708:7:50", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5486, + "name": "operator", + "nodeType": "VariableDeclaration", + "scope": 5498, + "src": "4723:16:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5485, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4723:7:50", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4707:33:50" + }, + "returnParameters": { + "id": 5490, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5489, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 5498, + "src": "4762:4:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 5488, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "4762:4:50", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4761:6:50" + }, + "scope": 5854, + "src": "4682:145:50", + "stateMutability": "view", + "superFunction": 6589, + "visibility": "public" + }, + { + "body": { + "id": 5521, + "nodeType": "Block", + "src": "5332:108:50", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 5509, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6845, + "src": "5369:3:50", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 5510, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "5369:10:50", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 5511, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5504, + "src": "5381:7:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 5508, + "name": "_isApprovedOrOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5618, + "src": "5350:18:50", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,uint256) view returns (bool)" + } + }, + "id": 5512, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5350:39:50", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 5507, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6848, + 6849 + ], + "referencedDeclaration": 6848, + "src": "5342:7:50", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 5513, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5342:48:50", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5514, + "nodeType": "ExpressionStatement", + "src": "5342:48:50" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 5516, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5500, + "src": "5415:4:50", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 5517, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5502, + "src": "5421:2:50", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 5518, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5504, + "src": "5425:7:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 5515, + "name": "_transferFrom", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5790, + "src": "5401:13:50", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 5519, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5401:32:50", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5520, + "nodeType": "ExpressionStatement", + "src": "5401:32:50" + } + ] + }, + "documentation": "@dev Transfers the ownership of a given token ID to another address\nUsage of this method is discouraged, use `safeTransferFrom` whenever possible\nRequires the msg sender to be the owner, approved, or operator\n@param from current owner of the token\n@param to address to receive the ownership of the given token ID\n@param tokenId uint256 ID of the token to be transferred", + "id": 5522, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "transferFrom", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5505, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5500, + "name": "from", + "nodeType": "VariableDeclaration", + "scope": 5522, + "src": "5282:12:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5499, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5282:7:50", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5502, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 5522, + "src": "5296:10:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5501, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5296:7:50", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5504, + "name": "tokenId", + "nodeType": "VariableDeclaration", + "scope": 5522, + "src": "5308:15:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5503, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5308:7:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "5281:43:50" + }, + "returnParameters": { + "id": 5506, + "nodeType": "ParameterList", + "parameters": [], + "src": "5332:0:50" + }, + "scope": 5854, + "src": "5260:180:50", + "stateMutability": "nonpayable", + "superFunction": 6598, + "visibility": "public" + }, + { + "body": { + "id": 5538, + "nodeType": "Block", + "src": "6155:56:50", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 5532, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5524, + "src": "6182:4:50", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 5533, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5526, + "src": "6188:2:50", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 5534, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5528, + "src": "6192:7:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "hexValue": "", + "id": 5535, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6201:2:50", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", + "typeString": "literal_string \"\"" + }, + "value": "" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", + "typeString": "literal_string \"\"" + } + ], + "id": 5531, + "name": "safeTransferFrom", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 5539, + 5566 + ], + "referencedDeclaration": 5566, + "src": "6165:16:50", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$", + "typeString": "function (address,address,uint256,bytes memory)" + } + }, + "id": 5536, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6165:39:50", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5537, + "nodeType": "ExpressionStatement", + "src": "6165:39:50" + } + ] + }, + "documentation": "@dev Safely transfers the ownership of a given token ID to another address\nIf the target address is a contract, it must implement `onERC721Received`,\nwhich is called upon a safe transfer, and return the magic value\n`bytes4(keccak256(\"onERC721Received(address,address,uint256,bytes)\"))`; otherwise,\nthe transfer is reverted.\n * Requires the msg sender to be the owner, approved, or operator\n@param from current owner of the token\n@param to address to receive the ownership of the given token ID\n@param tokenId uint256 ID of the token to be transferred", + "id": 5539, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "safeTransferFrom", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5529, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5524, + "name": "from", + "nodeType": "VariableDeclaration", + "scope": 5539, + "src": "6105:12:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5523, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6105:7:50", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5526, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 5539, + "src": "6119:10:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5525, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6119:7:50", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5528, + "name": "tokenId", + "nodeType": "VariableDeclaration", + "scope": 5539, + "src": "6131:15:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5527, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6131:7:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "6104:43:50" + }, + "returnParameters": { + "id": 5530, + "nodeType": "ParameterList", + "parameters": [], + "src": "6155:0:50" + }, + "scope": 5854, + "src": "6079:132:50", + "stateMutability": "nonpayable", + "superFunction": 6607, + "visibility": "public" + }, + { + "body": { + "id": 5565, + "nodeType": "Block", + "src": "7012:115:50", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 5551, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5541, + "src": "7035:4:50", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 5552, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5543, + "src": "7041:2:50", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 5553, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5545, + "src": "7045:7:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 5550, + "name": "transferFrom", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 5522 + ], + "referencedDeclaration": 5522, + "src": "7022:12:50", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 5554, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7022:31:50", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5555, + "nodeType": "ExpressionStatement", + "src": "7022:31:50" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 5558, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5541, + "src": "7094:4:50", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 5559, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5543, + "src": "7100:2:50", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 5560, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5545, + "src": "7104:7:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 5561, + "name": "_data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5547, + "src": "7113:5:50", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 5557, + "name": "_checkOnERC721Received", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5830, + "src": "7071:22:50", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bool_$", + "typeString": "function (address,address,uint256,bytes memory) returns (bool)" + } + }, + "id": 5562, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7071:48:50", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 5556, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6848, + 6849 + ], + "referencedDeclaration": 6848, + "src": "7063:7:50", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 5563, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7063:57:50", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5564, + "nodeType": "ExpressionStatement", + "src": "7063:57:50" + } + ] + }, + "documentation": "@dev Safely transfers the ownership of a given token ID to another address\nIf the target address is a contract, it must implement `onERC721Received`,\nwhich is called upon a safe transfer, and return the magic value\n`bytes4(keccak256(\"onERC721Received(address,address,uint256,bytes)\"))`; otherwise,\nthe transfer is reverted.\nRequires the msg sender to be the owner, approved, or operator\n@param from current owner of the token\n@param to address to receive the ownership of the given token ID\n@param tokenId uint256 ID of the token to be transferred\n@param _data bytes data to send along with a safe transfer check", + "id": 5566, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "safeTransferFrom", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5548, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5541, + "name": "from", + "nodeType": "VariableDeclaration", + "scope": 5566, + "src": "6942:12:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5540, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6942:7:50", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5543, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 5566, + "src": "6956:10:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5542, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6956:7:50", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5545, + "name": "tokenId", + "nodeType": "VariableDeclaration", + "scope": 5566, + "src": "6968:15:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5544, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6968:7:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5547, + "name": "_data", + "nodeType": "VariableDeclaration", + "scope": 5566, + "src": "6985:18:50", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 5546, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "6985:5:50", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "6941:63:50" + }, + "returnParameters": { + "id": 5549, + "nodeType": "ParameterList", + "parameters": [], + "src": "7012:0:50" + }, + "scope": 5854, + "src": "6916:211:50", + "stateMutability": "nonpayable", + "superFunction": 6618, + "visibility": "public" + }, + { + "body": { + "id": 5585, + "nodeType": "Block", + "src": "7379:89:50", + "statements": [ + { + "assignments": [ + 5574 + ], + "declarations": [ + { + "constant": false, + "id": 5574, + "name": "owner", + "nodeType": "VariableDeclaration", + "scope": 5585, + "src": "7389:13:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5573, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7389:7:50", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 5578, + "initialValue": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 5575, + "name": "_tokenOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5319, + "src": "7405:11:50", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$", + "typeString": "mapping(uint256 => address)" + } + }, + "id": 5577, + "indexExpression": { + "argumentTypes": null, + "id": 5576, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5568, + "src": "7417:7:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "7405:20:50", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "7389:36:50" + }, + { + "expression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 5583, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 5579, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5574, + "src": "7442:5:50", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 5581, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "7459:1:50", + "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": 5580, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "7451:7:50", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 5582, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7451:10:50", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "7442:19:50", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 5572, + "id": 5584, + "nodeType": "Return", + "src": "7435:26:50" + } + ] + }, + "documentation": "@dev Returns whether the specified token exists\n@param tokenId uint256 ID of the token to query the existence of\n@return whether the token exists", + "id": 5586, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_exists", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5569, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5568, + "name": "tokenId", + "nodeType": "VariableDeclaration", + "scope": 5586, + "src": "7333:15:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5567, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7333:7:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "7332:17:50" + }, + "returnParameters": { + "id": 5572, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5571, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 5586, + "src": "7373:4:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 5570, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "7373:4:50", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "7372:6:50" + }, + "scope": 5854, + "src": "7316:152:50", + "stateMutability": "view", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 5617, + "nodeType": "Block", + "src": "7922:155:50", + "statements": [ + { + "assignments": [ + 5596 + ], + "declarations": [ + { + "constant": false, + "id": 5596, + "name": "owner", + "nodeType": "VariableDeclaration", + "scope": 5617, + "src": "7932:13:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5595, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7932:7:50", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 5600, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 5598, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5590, + "src": "7956:7:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 5597, + "name": "ownerOf", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 5388 + ], + "referencedDeclaration": 5388, + "src": "7948:7:50", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_address_$", + "typeString": "function (uint256) view returns (address)" + } + }, + "id": 5599, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7948:16:50", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "7932:32:50" + }, + { + "expression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 5614, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 5609, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 5603, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 5601, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5588, + "src": "7982:7:50", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 5602, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5596, + "src": "7993:5:50", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "7982:16:50", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 5608, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 5605, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5590, + "src": "8014:7:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 5604, + "name": "getApproved", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 5451 + ], + "referencedDeclaration": 5451, + "src": "8002:11:50", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_address_$", + "typeString": "function (uint256) view returns (address)" + } + }, + "id": 5606, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8002:20:50", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 5607, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5588, + "src": "8026:7:50", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "8002:31:50", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "7982:51:50", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 5611, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5596, + "src": "8054:5:50", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 5612, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5588, + "src": "8061:7:50", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 5610, + "name": "isApprovedForAll", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 5498 + ], + "referencedDeclaration": 5498, + "src": "8037:16:50", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$", + "typeString": "function (address,address) view returns (bool)" + } + }, + "id": 5613, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8037:32:50", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "7982:87:50", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "id": 5615, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "7981:89:50", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 5594, + "id": 5616, + "nodeType": "Return", + "src": "7974:96:50" + } + ] + }, + "documentation": "@dev Returns whether the given spender can transfer a given token ID\n@param spender address of the spender to query\n@param tokenId uint256 ID of the token to be transferred\n@return bool whether the msg.sender is approved for the given token ID,\n is an operator of the owner, or is the owner of the token", + "id": 5618, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_isApprovedOrOwner", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5591, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5588, + "name": "spender", + "nodeType": "VariableDeclaration", + "scope": 5618, + "src": "7859:15:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5587, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7859:7:50", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5590, + "name": "tokenId", + "nodeType": "VariableDeclaration", + "scope": 5618, + "src": "7876:15:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5589, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7876:7:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "7858:34:50" + }, + "returnParameters": { + "id": 5594, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5593, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 5618, + "src": "7916:4:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 5592, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "7916:4:50", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "7915:6:50" + }, + "scope": 5854, + "src": "7831:246:50", + "stateMutability": "view", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 5665, + "nodeType": "Block", + "src": "8373:225:50", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 5630, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 5626, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5620, + "src": "8391:2:50", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 5628, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8405:1:50", + "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": 5627, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "8397:7:50", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 5629, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8397:10:50", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "8391:16:50", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 5625, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6848, + 6849 + ], + "referencedDeclaration": 6848, + "src": "8383:7:50", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 5631, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8383:25:50", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5632, + "nodeType": "ExpressionStatement", + "src": "8383:25:50" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 5637, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "8426:17:50", + "subExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 5635, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5622, + "src": "8435:7:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 5634, + "name": "_exists", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5586, + "src": "8427:7:50", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_bool_$", + "typeString": "function (uint256) view returns (bool)" + } + }, + "id": 5636, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8427:16:50", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 5633, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6848, + 6849 + ], + "referencedDeclaration": 6848, + "src": "8418:7:50", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 5638, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8418:26:50", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5639, + "nodeType": "ExpressionStatement", + "src": "8418:26:50" + }, + { + "expression": { + "argumentTypes": null, + "id": 5644, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 5640, + "name": "_tokenOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5319, + "src": "8455:11:50", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$", + "typeString": "mapping(uint256 => address)" + } + }, + "id": 5642, + "indexExpression": { + "argumentTypes": null, + "id": 5641, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5622, + "src": "8467:7:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "8455:20:50", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 5643, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5620, + "src": "8478:2:50", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "8455:25:50", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 5645, + "nodeType": "ExpressionStatement", + "src": "8455:25:50" + }, + { + "expression": { + "argumentTypes": null, + "id": 5655, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 5646, + "name": "_ownedTokensCount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5327, + "src": "8490:17:50", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 5648, + "indexExpression": { + "argumentTypes": null, + "id": 5647, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5620, + "src": "8508:2:50", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "8490:21:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "31", + "id": 5653, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8540:1:50", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + } + ], + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 5649, + "name": "_ownedTokensCount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5327, + "src": "8514:17:50", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 5651, + "indexExpression": { + "argumentTypes": null, + "id": 5650, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5620, + "src": "8532:2:50", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "8514:21:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 5652, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 3461, + "src": "8514:25:50", + "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": 5654, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8514:28:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "8490:52:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 5656, + "nodeType": "ExpressionStatement", + "src": "8490:52:50" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 5659, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8575:1:50", + "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": 5658, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "8567:7:50", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 5660, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8567:10:50", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 5661, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5620, + "src": "8579:2:50", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 5662, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5622, + "src": "8583:7:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 5657, + "name": "Transfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6529, + "src": "8558:8:50", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 5663, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8558:33:50", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5664, + "nodeType": "EmitStatement", + "src": "8553:38:50" + } + ] + }, + "documentation": "@dev Internal function to mint a new token\nReverts if the given token ID already exists\n@param to The address that will own the minted token\n@param tokenId uint256 ID of the token to be minted", + "id": 5666, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_mint", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5623, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5620, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 5666, + "src": "8335:10:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5619, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8335:7:50", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5622, + "name": "tokenId", + "nodeType": "VariableDeclaration", + "scope": 5666, + "src": "8347:15:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5621, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8347:7:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "8334:29:50" + }, + "returnParameters": { + "id": 5624, + "nodeType": "ParameterList", + "parameters": [], + "src": "8373:0:50" + }, + "scope": 5854, + "src": "8320:278:50", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 5712, + "nodeType": "Block", + "src": "8927:249:50", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 5678, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 5675, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5670, + "src": "8953:7:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 5674, + "name": "ownerOf", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 5388 + ], + "referencedDeclaration": 5388, + "src": "8945:7:50", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_address_$", + "typeString": "function (uint256) view returns (address)" + } + }, + "id": 5676, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8945:16:50", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 5677, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5668, + "src": "8965:5:50", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "8945:25:50", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 5673, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6848, + 6849 + ], + "referencedDeclaration": 6848, + "src": "8937:7:50", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 5679, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8937:34:50", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5680, + "nodeType": "ExpressionStatement", + "src": "8937:34:50" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 5682, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5670, + "src": "8997:7:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 5681, + "name": "_clearApproval", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5853, + "src": "8982:14:50", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$__$", + "typeString": "function (uint256)" + } + }, + "id": 5683, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8982:23:50", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5684, + "nodeType": "ExpressionStatement", + "src": "8982:23:50" + }, + { + "expression": { + "argumentTypes": null, + "id": 5694, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 5685, + "name": "_ownedTokensCount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5327, + "src": "9016:17:50", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 5687, + "indexExpression": { + "argumentTypes": null, + "id": 5686, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5668, + "src": "9034:5:50", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "9016:24:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "31", + "id": 5692, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9072:1:50", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + } + ], + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 5688, + "name": "_ownedTokensCount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5327, + "src": "9043:17:50", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 5690, + "indexExpression": { + "argumentTypes": null, + "id": 5689, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5668, + "src": "9061:5:50", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "9043:24:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 5691, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sub", + "nodeType": "MemberAccess", + "referencedDeclaration": 3437, + "src": "9043:28:50", + "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": 5693, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9043:31:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "9016:58:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 5695, + "nodeType": "ExpressionStatement", + "src": "9016:58:50" + }, + { + "expression": { + "argumentTypes": null, + "id": 5702, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 5696, + "name": "_tokenOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5319, + "src": "9084:11:50", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$", + "typeString": "mapping(uint256 => address)" + } + }, + "id": 5698, + "indexExpression": { + "argumentTypes": null, + "id": 5697, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5670, + "src": "9096:7:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "9084:20:50", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 5700, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9115:1:50", + "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": 5699, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "9107:7:50", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 5701, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9107:10:50", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "9084:33:50", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 5703, + "nodeType": "ExpressionStatement", + "src": "9084:33:50" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 5705, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5668, + "src": "9142:5:50", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 5707, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9157:1:50", + "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": 5706, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "9149:7:50", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 5708, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9149:10:50", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 5709, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5670, + "src": "9161:7:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 5704, + "name": "Transfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6529, + "src": "9133:8:50", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 5710, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9133:36:50", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5711, + "nodeType": "EmitStatement", + "src": "9128:41:50" + } + ] + }, + "documentation": "@dev Internal function to burn a specific token\nReverts if the token does not exist\nDeprecated, use _burn(uint256) instead.\n@param owner owner of the token to burn\n@param tokenId uint256 ID of the token being burned", + "id": 5713, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_burn", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5671, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5668, + "name": "owner", + "nodeType": "VariableDeclaration", + "scope": 5713, + "src": "8886:13:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5667, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8886:7:50", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5670, + "name": "tokenId", + "nodeType": "VariableDeclaration", + "scope": 5713, + "src": "8901:15:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5669, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8901:7:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "8885:32:50" + }, + "returnParameters": { + "id": 5672, + "nodeType": "ParameterList", + "parameters": [], + "src": "8927:0:50" + }, + "scope": 5854, + "src": "8871:305:50", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 5725, + "nodeType": "Block", + "src": "9396:49:50", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 5720, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5715, + "src": "9420:7:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 5719, + "name": "ownerOf", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 5388 + ], + "referencedDeclaration": 5388, + "src": "9412:7:50", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_address_$", + "typeString": "function (uint256) view returns (address)" + } + }, + "id": 5721, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9412:16:50", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 5722, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5715, + "src": "9430:7:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 5718, + "name": "_burn", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 5713, + 5726 + ], + "referencedDeclaration": 5713, + "src": "9406:5:50", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 5723, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9406:32:50", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5724, + "nodeType": "ExpressionStatement", + "src": "9406:32:50" + } + ] + }, + "documentation": "@dev Internal function to burn a specific token\nReverts if the token does not exist\n@param tokenId uint256 ID of the token being burned", + "id": 5726, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_burn", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5716, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5715, + "name": "tokenId", + "nodeType": "VariableDeclaration", + "scope": 5726, + "src": "9370:15:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5714, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "9370:7:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "9369:17:50" + }, + "returnParameters": { + "id": 5717, + "nodeType": "ParameterList", + "parameters": [], + "src": "9396:0:50" + }, + "scope": 5854, + "src": "9355:90:50", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 5789, + "nodeType": "Block", + "src": "9894:327:50", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 5740, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 5737, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5732, + "src": "9920:7:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 5736, + "name": "ownerOf", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 5388 + ], + "referencedDeclaration": 5388, + "src": "9912:7:50", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_address_$", + "typeString": "function (uint256) view returns (address)" + } + }, + "id": 5738, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9912:16:50", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 5739, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5728, + "src": "9932:4:50", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "9912:24:50", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 5735, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6848, + 6849 + ], + "referencedDeclaration": 6848, + "src": "9904:7:50", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 5741, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9904:33:50", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5742, + "nodeType": "ExpressionStatement", + "src": "9904:33:50" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 5748, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 5744, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5730, + "src": "9955:2:50", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 5746, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9969:1:50", + "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": 5745, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "9961:7:50", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 5747, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9961:10:50", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "9955:16:50", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 5743, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6848, + 6849 + ], + "referencedDeclaration": 6848, + "src": "9947:7:50", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 5749, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9947:25:50", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5750, + "nodeType": "ExpressionStatement", + "src": "9947:25:50" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 5752, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5732, + "src": "9998:7:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 5751, + "name": "_clearApproval", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5853, + "src": "9983:14:50", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$__$", + "typeString": "function (uint256)" + } + }, + "id": 5753, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9983:23:50", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5754, + "nodeType": "ExpressionStatement", + "src": "9983:23:50" + }, + { + "expression": { + "argumentTypes": null, + "id": 5764, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 5755, + "name": "_ownedTokensCount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5327, + "src": "10017:17:50", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 5757, + "indexExpression": { + "argumentTypes": null, + "id": 5756, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5728, + "src": "10035:4:50", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "10017:23:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "31", + "id": 5762, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10071:1:50", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + } + ], + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 5758, + "name": "_ownedTokensCount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5327, + "src": "10043:17:50", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 5760, + "indexExpression": { + "argumentTypes": null, + "id": 5759, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5728, + "src": "10061:4:50", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "10043:23:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 5761, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sub", + "nodeType": "MemberAccess", + "referencedDeclaration": 3437, + "src": "10043:27:50", + "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": 5763, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10043:30:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "10017:56:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 5765, + "nodeType": "ExpressionStatement", + "src": "10017:56:50" + }, + { + "expression": { + "argumentTypes": null, + "id": 5775, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 5766, + "name": "_ownedTokensCount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5327, + "src": "10083:17:50", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 5768, + "indexExpression": { + "argumentTypes": null, + "id": 5767, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5730, + "src": "10101:2:50", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "10083:21:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "31", + "id": 5773, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10133:1:50", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + } + ], + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 5769, + "name": "_ownedTokensCount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5327, + "src": "10107:17:50", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 5771, + "indexExpression": { + "argumentTypes": null, + "id": 5770, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5730, + "src": "10125:2:50", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "10107:21:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 5772, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 3461, + "src": "10107:25:50", + "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": 5774, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10107:28:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "10083:52:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 5776, + "nodeType": "ExpressionStatement", + "src": "10083:52:50" + }, + { + "expression": { + "argumentTypes": null, + "id": 5781, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 5777, + "name": "_tokenOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5319, + "src": "10146:11:50", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$", + "typeString": "mapping(uint256 => address)" + } + }, + "id": 5779, + "indexExpression": { + "argumentTypes": null, + "id": 5778, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5732, + "src": "10158:7:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "10146:20:50", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 5780, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5730, + "src": "10169:2:50", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "10146:25:50", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 5782, + "nodeType": "ExpressionStatement", + "src": "10146:25:50" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 5784, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5728, + "src": "10196:4:50", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 5785, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5730, + "src": "10202:2:50", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 5786, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5732, + "src": "10206:7:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 5783, + "name": "Transfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6529, + "src": "10187:8:50", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 5787, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10187:27:50", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5788, + "nodeType": "EmitStatement", + "src": "10182:32:50" + } + ] + }, + "documentation": "@dev Internal function to transfer ownership of a given token ID to another address.\nAs opposed to transferFrom, this imposes no restrictions on msg.sender.\n@param from current owner of the token\n@param to address to receive the ownership of the given token ID\n@param tokenId uint256 ID of the token to be transferred", + "id": 5790, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_transferFrom", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5733, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5728, + "name": "from", + "nodeType": "VariableDeclaration", + "scope": 5790, + "src": "9842:12:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5727, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "9842:7:50", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5730, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 5790, + "src": "9856:10:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5729, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "9856:7:50", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5732, + "name": "tokenId", + "nodeType": "VariableDeclaration", + "scope": 5790, + "src": "9868:15:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5731, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "9868:7:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "9841:43:50" + }, + "returnParameters": { + "id": 5734, + "nodeType": "ParameterList", + "parameters": [], + "src": "9894:0:50" + }, + "scope": 5854, + "src": "9819:402:50", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 5829, + "nodeType": "Block", + "src": "10875:216:50", + "statements": [ + { + "condition": { + "argumentTypes": null, + "id": 5806, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "10889:16:50", + "subExpression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "argumentTypes": null, + "id": 5803, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5794, + "src": "10890:2:50", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 5804, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "isContract", + "nodeType": "MemberAccess", + "referencedDeclaration": 6715, + "src": "10890:13:50", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$bound_to$_t_address_$", + "typeString": "function (address) view returns (bool)" + } + }, + "id": 5805, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10890:15:50", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 5810, + "nodeType": "IfStatement", + "src": "10885:58:50", + "trueBody": { + "id": 5809, + "nodeType": "Block", + "src": "10907:36:50", + "statements": [ + { + "expression": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 5807, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10928:4:50", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 5802, + "id": 5808, + "nodeType": "Return", + "src": "10921:11:50" + } + ] + } + }, + { + "assignments": [ + 5812 + ], + "declarations": [ + { + "constant": false, + "id": 5812, + "name": "retval", + "nodeType": "VariableDeclaration", + "scope": 5829, + "src": "10953:13:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "typeName": { + "id": 5811, + "name": "bytes4", + "nodeType": "ElementaryTypeName", + "src": "10953:6:50", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 5823, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 5817, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6845, + "src": "11006:3:50", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 5818, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "11006:10:50", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 5819, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5792, + "src": "11018:4:50", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 5820, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5796, + "src": "11024:7:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 5821, + "name": "_data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5798, + "src": "11033:5:50", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 5814, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5794, + "src": "10985:2:50", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 5813, + "name": "IERC721Receiver", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6697, + "src": "10969:15:50", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IERC721Receiver_$6697_$", + "typeString": "type(contract IERC721Receiver)" + } + }, + "id": 5815, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10969:19:50", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC721Receiver_$6697", + "typeString": "contract IERC721Receiver" + } + }, + "id": 5816, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "onERC721Received", + "nodeType": "MemberAccess", + "referencedDeclaration": 6696, + "src": "10969:36:50", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bytes4_$", + "typeString": "function (address,address,uint256,bytes memory) external returns (bytes4)" + } + }, + "id": 5822, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10969:70:50", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "10953:86:50" + }, + { + "expression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "id": 5826, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 5824, + "name": "retval", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5812, + "src": "11057:6:50", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 5825, + "name": "_ERC721_RECEIVED", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5315, + "src": "11067:16:50", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "src": "11057:26:50", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "id": 5827, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "11056:28:50", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 5802, + "id": 5828, + "nodeType": "Return", + "src": "11049:35:50" + } + ] + }, + "documentation": "@dev Internal function to invoke `onERC721Received` on a target address\nThe call is not executed if the target address is not a contract\n@param from address representing the previous owner of the given token ID\n@param to target address that will receive the tokens\n@param tokenId uint256 ID of the token to be transferred\n@param _data bytes optional data to send along with the call\n@return whether the call correctly returned the expected magic value", + "id": 5830, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_checkOnERC721Received", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5799, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5792, + "name": "from", + "nodeType": "VariableDeclaration", + "scope": 5830, + "src": "10776:12:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5791, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "10776:7:50", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5794, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 5830, + "src": "10790:10:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5793, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "10790:7:50", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5796, + "name": "tokenId", + "nodeType": "VariableDeclaration", + "scope": 5830, + "src": "10802:15:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5795, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "10802:7:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5798, + "name": "_data", + "nodeType": "VariableDeclaration", + "scope": 5830, + "src": "10819:18:50", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 5797, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "10819:5:50", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "10775:63:50" + }, + "returnParameters": { + "id": 5802, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5801, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 5830, + "src": "10865:4:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 5800, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "10865:4:50", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "10864:6:50" + }, + "scope": 5854, + "src": "10744:347:50", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 5852, + "nodeType": "Block", + "src": "11301:122:50", + "statements": [ + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 5841, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 5835, + "name": "_tokenApprovals", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5323, + "src": "11315:15:50", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$", + "typeString": "mapping(uint256 => address)" + } + }, + "id": 5837, + "indexExpression": { + "argumentTypes": null, + "id": 5836, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5832, + "src": "11331:7:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "11315:24:50", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 5839, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "11351:1:50", + "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": 5838, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "11343:7:50", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 5840, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "11343:10:50", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "11315:38:50", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 5851, + "nodeType": "IfStatement", + "src": "11311:106:50", + "trueBody": { + "id": 5850, + "nodeType": "Block", + "src": "11355:62:50", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 5848, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 5842, + "name": "_tokenApprovals", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5323, + "src": "11369:15:50", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$", + "typeString": "mapping(uint256 => address)" + } + }, + "id": 5844, + "indexExpression": { + "argumentTypes": null, + "id": 5843, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5832, + "src": "11385:7:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "11369:24:50", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 5846, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "11404:1:50", + "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": 5845, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "11396:7:50", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 5847, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "11396:10:50", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "11369:37:50", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 5849, + "nodeType": "ExpressionStatement", + "src": "11369:37:50" + } + ] + } + } + ] + }, + "documentation": "@dev Private function to clear current approval of a given token ID\n@param tokenId uint256 ID of the token to be transferred", + "id": 5853, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_clearApproval", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5833, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5832, + "name": "tokenId", + "nodeType": "VariableDeclaration", + "scope": 5853, + "src": "11276:15:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5831, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "11276:7:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "11275:17:50" + }, + "returnParameters": { + "id": 5834, + "nodeType": "ParameterList", + "parameters": [], + "src": "11301:0:50" + }, + "scope": 5854, + "src": "11252:171:50", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "private" + } + ], + "scope": 5855, + "src": "338:11087:50" + } + ], + "src": "0:11426:50" + }, + "compiler": { + "name": "solc", + "version": "0.5.0+commit.1d4f565a.Emscripten.clang" + }, + "networks": {}, + "schemaVersion": "3.0.0", + "updatedAt": "2019-01-04T21:44:02.894Z", + "devdoc": { + "details": "see https://github.com/ethereum/EIPs/blob/master/EIPS/eip-721.md", + "methods": { + "approve(address,uint256)": { + "details": "Approves another address to transfer the given token ID The zero address indicates there is no approved address. There can only be one approved address per token at a given time. Can only be called by the token owner or an approved operator.", + "params": { + "to": "address to be approved for the given token ID", + "tokenId": "uint256 ID of the token to be approved" + } + }, + "balanceOf(address)": { + "details": "Gets the balance of the specified address", + "params": { + "owner": "address to query the balance of" + }, + "return": "uint256 representing the amount owned by the passed address" + }, + "getApproved(uint256)": { + "details": "Gets the approved address for a token ID, or zero if no address set Reverts if the token ID does not exist.", + "params": { + "tokenId": "uint256 ID of the token to query the approval of" + }, + "return": "address currently approved for the given token ID" + }, + "isApprovedForAll(address,address)": { + "details": "Tells whether an operator is approved by a given owner", + "params": { + "operator": "operator address which you want to query the approval of", + "owner": "owner address which you want to query the approval of" + }, + "return": "bool whether the given operator is approved by the given owner" + }, + "ownerOf(uint256)": { + "details": "Gets the owner of the specified token ID", + "params": { + "tokenId": "uint256 ID of the token to query the owner of" + }, + "return": "owner address currently marked as the owner of the given token ID" + }, + "safeTransferFrom(address,address,uint256)": { + "details": "Safely transfers the ownership of a given token ID to another address If the target address is a contract, it must implement `onERC721Received`, which is called upon a safe transfer, and return the magic value `bytes4(keccak256(\"onERC721Received(address,address,uint256,bytes)\"))`; otherwise, the transfer is reverted. * Requires the msg sender to be the owner, approved, or operator", + "params": { + "from": "current owner of the token", + "to": "address to receive the ownership of the given token ID", + "tokenId": "uint256 ID of the token to be transferred" + } + }, + "safeTransferFrom(address,address,uint256,bytes)": { + "details": "Safely transfers the ownership of a given token ID to another address If the target address is a contract, it must implement `onERC721Received`, which is called upon a safe transfer, and return the magic value `bytes4(keccak256(\"onERC721Received(address,address,uint256,bytes)\"))`; otherwise, the transfer is reverted. Requires the msg sender to be the owner, approved, or operator", + "params": { + "_data": "bytes data to send along with a safe transfer check", + "from": "current owner of the token", + "to": "address to receive the ownership of the given token ID", + "tokenId": "uint256 ID of the token to be transferred" + } + }, + "setApprovalForAll(address,bool)": { + "details": "Sets or unsets the approval of a given operator An operator is allowed to transfer all tokens of the sender on their behalf", + "params": { + "approved": "representing the status of the approval to be set", + "to": "operator address to set the approval" + } + }, + "supportsInterface(bytes4)": { + "details": "implement supportsInterface(bytes4) using a lookup table" + }, + "transferFrom(address,address,uint256)": { + "details": "Transfers the ownership of a given token ID to another address Usage of this method is discouraged, use `safeTransferFrom` whenever possible Requires the msg sender to be the owner, approved, or operator", + "params": { + "from": "current owner of the token", + "to": "address to receive the ownership of the given token ID", + "tokenId": "uint256 ID of the token to be transferred" + } + } + }, + "title": "ERC721 Non-Fungible Token Standard basic implementation" + }, + "userdoc": { + "methods": {} + } +} \ No newline at end of file diff --git a/node_modules/openzeppelin-solidity/build/contracts/ERC721Burnable.json b/node_modules/openzeppelin-solidity/build/contracts/ERC721Burnable.json new file mode 100644 index 0000000..d67b773 --- /dev/null +++ b/node_modules/openzeppelin-solidity/build/contracts/ERC721Burnable.json @@ -0,0 +1,1035 @@ +{ + "contractName": "ERC721Burnable", + "abi": [ + { + "constant": true, + "inputs": [ + { + "name": "interfaceId", + "type": "bytes4" + } + ], + "name": "supportsInterface", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "tokenId", + "type": "uint256" + } + ], + "name": "getApproved", + "outputs": [ + { + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "to", + "type": "address" + }, + { + "name": "tokenId", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "from", + "type": "address" + }, + { + "name": "to", + "type": "address" + }, + { + "name": "tokenId", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "from", + "type": "address" + }, + { + "name": "to", + "type": "address" + }, + { + "name": "tokenId", + "type": "uint256" + } + ], + "name": "safeTransferFrom", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "tokenId", + "type": "uint256" + } + ], + "name": "ownerOf", + "outputs": [ + { + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "owner", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "to", + "type": "address" + }, + { + "name": "approved", + "type": "bool" + } + ], + "name": "setApprovalForAll", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "from", + "type": "address" + }, + { + "name": "to", + "type": "address" + }, + { + "name": "tokenId", + "type": "uint256" + }, + { + "name": "_data", + "type": "bytes" + } + ], + "name": "safeTransferFrom", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "owner", + "type": "address" + }, + { + "name": "operator", + "type": "address" + } + ], + "name": "isApprovedForAll", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "from", + "type": "address" + }, + { + "indexed": true, + "name": "to", + "type": "address" + }, + { + "indexed": true, + "name": "tokenId", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "name": "approved", + "type": "address" + }, + { + "indexed": true, + "name": "tokenId", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "name": "operator", + "type": "address" + }, + { + "indexed": false, + "name": "approved", + "type": "bool" + } + ], + "name": "ApprovalForAll", + "type": "event" + }, + { + "constant": false, + "inputs": [ + { + "name": "tokenId", + "type": "uint256" + } + ], + "name": "burn", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x608060405261003f6301ffc9a77c01000000000000000000000000000000000000000000000000000000000261007f640100000000026401000000009004565b61007a6380ac58cd7c01000000000000000000000000000000000000000000000000000000000261007f640100000000026401000000009004565b61013c565b63ffffffff7c010000000000000000000000000000000000000000000000000000000002817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916141515156100d057600080fd5b6001600080837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6113dd8061014b6000396000f3fe6080604052600436106100af576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806301ffc9a7146100b4578063081812fc14610126578063095ea7b3146101a157806323b872dd146101fc57806342842e0e1461027757806342966c68146102f25780636352211e1461032d57806370a08231146103a8578063a22cb4651461040d578063b88d4fde1461046a578063e985e9c51461057c575b600080fd5b3480156100c057600080fd5b5061010c600480360360208110156100d757600080fd5b8101908080357bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19169060200190929190505050610605565b604051808215151515815260200191505060405180910390f35b34801561013257600080fd5b5061015f6004803603602081101561014957600080fd5b810190808035906020019092919050505061066c565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156101ad57600080fd5b506101fa600480360360408110156101c457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506106bd565b005b34801561020857600080fd5b506102756004803603606081101561021f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610802565b005b34801561028357600080fd5b506102f06004803603606081101561029a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610827565b005b3480156102fe57600080fd5b5061032b6004803603602081101561031557600080fd5b8101908080359060200190929190505050610848565b005b34801561033957600080fd5b506103666004803603602081101561035057600080fd5b8101908080359060200190929190505050610869565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156103b457600080fd5b506103f7600480360360208110156103cb57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506108e7565b6040518082815260200191505060405180910390f35b34801561041957600080fd5b506104686004803603604081101561043057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080351515906020019092919050505061096b565b005b34801561047657600080fd5b5061057a6004803603608081101561048d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001906401000000008111156104f457600080fd5b82018360208201111561050657600080fd5b8035906020019184600183028401116401000000008311171561052857600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050610aa7565b005b34801561058857600080fd5b506105eb6004803603604081101561059f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610acf565b604051808215151515815260200191505060405180910390f35b6000806000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060009054906101000a900460ff169050919050565b600061067782610b63565b151561068257600080fd5b6002600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b60006106c882610869565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415151561070557600080fd5b8073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061074557506107448133610acf565b5b151561075057600080fd5b826002600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a4505050565b61080c3382610bd5565b151561081757600080fd5b610822838383610c6a565b505050565b6108438383836020604051908101604052806000815250610aa7565b505050565b6108523382610bd5565b151561085d57600080fd5b61086681610ecf565b50565b6000806001600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515156108de57600080fd5b80915050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415151561092457600080fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b3373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141515156109a657600080fd5b80600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051808215151515815260200191505060405180910390a35050565b610ab2848484610802565b610abe84848484610ee4565b1515610ac957600080fd5b50505050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6000806001600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415915050919050565b600080610be183610869565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480610c5057508373ffffffffffffffffffffffffffffffffffffffff16610c388461066c565b73ffffffffffffffffffffffffffffffffffffffff16145b80610c615750610c608185610acf565b5b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff16610c8a82610869565b73ffffffffffffffffffffffffffffffffffffffff16141515610cac57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614151515610ce857600080fd5b610cf181611107565b610d446001600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546111c790919063ffffffff16565b600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610dda6001600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546111e990919063ffffffff16565b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816001600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b610ee1610edb82610869565b8261120a565b50565b6000610f058473ffffffffffffffffffffffffffffffffffffffff1661139e565b1515610f1457600190506110ff565b60008473ffffffffffffffffffffffffffffffffffffffff1663150b7a02338887876040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561100b578082015181840152602081019050610ff0565b50505050905090810190601f1680156110385780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b15801561105a57600080fd5b505af115801561106e573d6000803e3d6000fd5b505050506040513d602081101561108457600080fd5b8101908080519060200190929190505050905063150b7a027c0100000000000000000000000000000000000000000000000000000000027bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149150505b949350505050565b600073ffffffffffffffffffffffffffffffffffffffff166002600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156111c45760006002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b50565b60008282111515156111d857600080fd5b600082840390508091505092915050565b600080828401905083811015151561120057600080fd5b8091505092915050565b8173ffffffffffffffffffffffffffffffffffffffff1661122a82610869565b73ffffffffffffffffffffffffffffffffffffffff1614151561124c57600080fd5b61125581611107565b6112a86001600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546111c790919063ffffffff16565b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060006001600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b600080823b90506000811191505091905056fea165627a7a723058200029be41762449151c5f930a663cf4bdd11fa51a51c699ea7886221b6b9f7f9a0029", + "deployedBytecode": "0x6080604052600436106100af576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806301ffc9a7146100b4578063081812fc14610126578063095ea7b3146101a157806323b872dd146101fc57806342842e0e1461027757806342966c68146102f25780636352211e1461032d57806370a08231146103a8578063a22cb4651461040d578063b88d4fde1461046a578063e985e9c51461057c575b600080fd5b3480156100c057600080fd5b5061010c600480360360208110156100d757600080fd5b8101908080357bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19169060200190929190505050610605565b604051808215151515815260200191505060405180910390f35b34801561013257600080fd5b5061015f6004803603602081101561014957600080fd5b810190808035906020019092919050505061066c565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156101ad57600080fd5b506101fa600480360360408110156101c457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506106bd565b005b34801561020857600080fd5b506102756004803603606081101561021f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610802565b005b34801561028357600080fd5b506102f06004803603606081101561029a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610827565b005b3480156102fe57600080fd5b5061032b6004803603602081101561031557600080fd5b8101908080359060200190929190505050610848565b005b34801561033957600080fd5b506103666004803603602081101561035057600080fd5b8101908080359060200190929190505050610869565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156103b457600080fd5b506103f7600480360360208110156103cb57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506108e7565b6040518082815260200191505060405180910390f35b34801561041957600080fd5b506104686004803603604081101561043057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080351515906020019092919050505061096b565b005b34801561047657600080fd5b5061057a6004803603608081101561048d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001906401000000008111156104f457600080fd5b82018360208201111561050657600080fd5b8035906020019184600183028401116401000000008311171561052857600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050610aa7565b005b34801561058857600080fd5b506105eb6004803603604081101561059f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610acf565b604051808215151515815260200191505060405180910390f35b6000806000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060009054906101000a900460ff169050919050565b600061067782610b63565b151561068257600080fd5b6002600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b60006106c882610869565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415151561070557600080fd5b8073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061074557506107448133610acf565b5b151561075057600080fd5b826002600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a4505050565b61080c3382610bd5565b151561081757600080fd5b610822838383610c6a565b505050565b6108438383836020604051908101604052806000815250610aa7565b505050565b6108523382610bd5565b151561085d57600080fd5b61086681610ecf565b50565b6000806001600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515156108de57600080fd5b80915050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415151561092457600080fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b3373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141515156109a657600080fd5b80600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051808215151515815260200191505060405180910390a35050565b610ab2848484610802565b610abe84848484610ee4565b1515610ac957600080fd5b50505050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6000806001600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415915050919050565b600080610be183610869565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480610c5057508373ffffffffffffffffffffffffffffffffffffffff16610c388461066c565b73ffffffffffffffffffffffffffffffffffffffff16145b80610c615750610c608185610acf565b5b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff16610c8a82610869565b73ffffffffffffffffffffffffffffffffffffffff16141515610cac57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614151515610ce857600080fd5b610cf181611107565b610d446001600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546111c790919063ffffffff16565b600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610dda6001600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546111e990919063ffffffff16565b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816001600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b610ee1610edb82610869565b8261120a565b50565b6000610f058473ffffffffffffffffffffffffffffffffffffffff1661139e565b1515610f1457600190506110ff565b60008473ffffffffffffffffffffffffffffffffffffffff1663150b7a02338887876040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561100b578082015181840152602081019050610ff0565b50505050905090810190601f1680156110385780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b15801561105a57600080fd5b505af115801561106e573d6000803e3d6000fd5b505050506040513d602081101561108457600080fd5b8101908080519060200190929190505050905063150b7a027c0100000000000000000000000000000000000000000000000000000000027bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149150505b949350505050565b600073ffffffffffffffffffffffffffffffffffffffff166002600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156111c45760006002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b50565b60008282111515156111d857600080fd5b600082840390508091505092915050565b600080828401905083811015151561120057600080fd5b8091505092915050565b8173ffffffffffffffffffffffffffffffffffffffff1661122a82610869565b73ffffffffffffffffffffffffffffffffffffffff1614151561124c57600080fd5b61125581611107565b6112a86001600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546111c790919063ffffffff16565b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060006001600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b600080823b90506000811191505091905056fea165627a7a723058200029be41762449151c5f930a663cf4bdd11fa51a51c699ea7886221b6b9f7f9a0029", + "sourceMap": "155:295:51:-;;;640:40:28;236:10;659:20;;640:18;;;:40;;;:::i;:::-;1906::50;1163:10;1925:20;;1906:18;;;:40;;;:::i;:::-;155:295:51;;990:158:28;1080:10;1065:25;;:11;:25;;;;;1057:34;;;;;;;;1137:4;1101:20;:33;1122:11;1101:33;;;;;;;;;;;;;;;;;;:40;;;;;;;;;;;;;;;;;;990:158;:::o;155:295:51:-;;;;;;;", + "deployedSourceMap": "155:295:51:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;778:133:28;;8:9:-1;5:2;;;30:1;27;20:12;5:2;778:133:28;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;778:133:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3705:151:50;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3705:151:50;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3705:151:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3128:292;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3128:292:50;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3128:292:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5260:180;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5260:180:50;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;5260:180:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6079:132;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6079:132:50;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;6079:132:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;321:127:51;;8:9:-1;5:2;;;30:1;27;20:12;5:2;321:127:51;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;321:127:51;;;;;;;;;;;;;;;;;;;;2530:177:50;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2530:177:50;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2530:177:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2156:150;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2156:150:50;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2156:150:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4148:213;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4148:213:50;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4148:213:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6916:211;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6916:211:50;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;6916:211:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;6916:211:50;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;6916:211:50;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;6916:211:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;6916:211:50;;;;;;;;;;;;;;;;;;4682:145;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4682:145:50;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4682:145:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;778:133:28;848:4;871:20;:33;892:11;871:33;;;;;;;;;;;;;;;;;;;;;;;;;;;864:40;;778:133;;;:::o;3705:151:50:-;3764:7;3791:16;3799:7;3791;:16::i;:::-;3783:25;;;;;;;;3825:15;:24;3841:7;3825:24;;;;;;;;;;;;;;;;;;;;;3818:31;;3705:151;;;:::o;3128:292::-;3191:13;3207:16;3215:7;3207;:16::i;:::-;3191:32;;3247:5;3241:11;;:2;:11;;;;3233:20;;;;;;;;3285:5;3271:19;;:10;:19;;;:58;;;;3294:35;3311:5;3318:10;3294:16;:35::i;:::-;3271:58;3263:67;;;;;;;;3368:2;3341:15;:24;3357:7;3341:24;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;3405:7;3401:2;3385:28;;3394:5;3385:28;;;;;;;;;;;;3128:292;;;:::o;5260:180::-;5350:39;5369:10;5381:7;5350:18;:39::i;:::-;5342:48;;;;;;;;5401:32;5415:4;5421:2;5425:7;5401:13;:32::i;:::-;5260:180;;;:::o;6079:132::-;6165:39;6182:4;6188:2;6192:7;6165:39;;;;;;;;;;;;;:16;:39::i;:::-;6079:132;;;:::o;321:127:51:-;377:39;396:10;408:7;377:18;:39::i;:::-;369:48;;;;;;;;427:14;433:7;427:5;:14::i;:::-;321:127;:::o;2530:177:50:-;2585:7;2604:13;2620:11;:20;2632:7;2620:20;;;;;;;;;;;;;;;;;;;;;2604:36;;2675:1;2658:19;;:5;:19;;;;2650:28;;;;;;;;2695:5;2688:12;;;2530:177;;;:::o;2156:150::-;2211:7;2255:1;2238:19;;:5;:19;;;;2230:28;;;;;;;;2275:17;:24;2293:5;2275:24;;;;;;;;;;;;;;;;2268:31;;2156:150;;;:::o;4148:213::-;4233:10;4227:16;;:2;:16;;;;4219:25;;;;;;;;4291:8;4254:18;:30;4273:10;4254:30;;;;;;;;;;;;;;;:34;4285:2;4254:34;;;;;;;;;;;;;;;;:45;;;;;;;;;;;;;;;;;;4341:2;4314:40;;4329:10;4314:40;;;4345:8;4314:40;;;;;;;;;;;;;;;;;;;;;;4148:213;;:::o;6916:211::-;7022:31;7035:4;7041:2;7045:7;7022:12;:31::i;:::-;7071:48;7094:4;7100:2;7104:7;7113:5;7071:22;:48::i;:::-;7063:57;;;;;;;;6916:211;;;;:::o;4682:145::-;4762:4;4785:18;:25;4804:5;4785:25;;;;;;;;;;;;;;;:35;4811:8;4785:35;;;;;;;;;;;;;;;;;;;;;;;;;4778:42;;4682:145;;;;:::o;7316:152::-;7373:4;7389:13;7405:11;:20;7417:7;7405:20;;;;;;;;;;;;;;;;;;;;;7389:36;;7459:1;7442:19;;:5;:19;;;;7435:26;;;7316:152;;;:::o;7831:246::-;7916:4;7932:13;7948:16;7956:7;7948;:16::i;:::-;7932:32;;7993:5;7982:16;;:7;:16;;;:51;;;;8026:7;8002:31;;:20;8014:7;8002:11;:20::i;:::-;:31;;;7982:51;:87;;;;8037:32;8054:5;8061:7;8037:16;:32::i;:::-;7982:87;7974:96;;;7831:246;;;;:::o;9819:402::-;9932:4;9912:24;;:16;9920:7;9912;:16::i;:::-;:24;;;9904:33;;;;;;;;9969:1;9955:16;;:2;:16;;;;9947:25;;;;;;;;9983:23;9998:7;9983:14;:23::i;:::-;10043:30;10071:1;10043:17;:23;10061:4;10043:23;;;;;;;;;;;;;;;;:27;;:30;;;;:::i;:::-;10017:17;:23;10035:4;10017:23;;;;;;;;;;;;;;;:56;;;;10107:28;10133:1;10107:17;:21;10125:2;10107:21;;;;;;;;;;;;;;;;:25;;:28;;;;:::i;:::-;10083:17;:21;10101:2;10083:21;;;;;;;;;;;;;;;:52;;;;10169:2;10146:11;:20;10158:7;10146:20;;;;;;;;;;;;:25;;;;;;;;;;;;;;;;;;10206:7;10202:2;10187:27;;10196:4;10187:27;;;;;;;;;;;;9819:402;;;:::o;9355:90::-;9406:32;9412:16;9420:7;9412;:16::i;:::-;9430:7;9406:5;:32::i;:::-;9355:90;:::o;10744:347::-;10865:4;10890:15;:2;:13;;;:15::i;:::-;10889:16;10885:58;;;10928:4;10921:11;;;;10885:58;10953:13;10985:2;10969:36;;;11006:10;11018:4;11024:7;11033:5;10969:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;10969:70:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10969:70:50;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;10969:70:50;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;10969:70:50;;;;;;;;;;;;;;;;10953:86;;658:10;11067:16;;11057:26;;;:6;:26;;;;11049:35;;;10744:347;;;;;;;:::o;11252:171::-;11351:1;11315:38;;:15;:24;11331:7;11315:24;;;;;;;;;;;;;;;;;;;;;:38;;;;11311:106;;;11404:1;11369:15;:24;11385:7;11369:24;;;;;;;;;;;;:37;;;;;;;;;;;;;;;;;;11311:106;11252:171;:::o;1205:145:33:-;1263:7;1295:1;1290;:6;;1282:15;;;;;;;;1307:9;1323:1;1319;:5;1307:17;;1342:1;1335:8;;;1205:145;;;;:::o;1431:::-;1489:7;1508:9;1524:1;1520;:5;1508:17;;1548:1;1543;:6;;1535:15;;;;;;;;1568:1;1561:8;;;1431:145;;;;:::o;8871:305:50:-;8965:5;8945:25;;:16;8953:7;8945;:16::i;:::-;:25;;;8937:34;;;;;;;;8982:23;8997:7;8982:14;:23::i;:::-;9043:31;9072:1;9043:17;:24;9061:5;9043:24;;;;;;;;;;;;;;;;:28;;:31;;;;:::i;:::-;9016:17;:24;9034:5;9016:24;;;;;;;;;;;;;;;:58;;;;9115:1;9084:11;:20;9096:7;9084:20;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;9161:7;9157:1;9133:36;;9142:5;9133:36;;;;;;;;;;;;8871:305;;:::o;463:616:64:-;523:4;539:12;1038:7;1026:20;1018:28;;1071:1;1064:4;:8;1057:15;;;463:616;;;:::o", + "source": "pragma solidity ^0.5.0;\n\nimport \"./ERC721.sol\";\n\n/**\n * @title ERC721 Burnable Token\n * @dev ERC721 Token that can be irreversibly burned (destroyed).\n */\ncontract ERC721Burnable is ERC721 {\n /**\n * @dev Burns a specific ERC721 token.\n * @param tokenId uint256 id of the ERC721 token to be burned.\n */\n function burn(uint256 tokenId) public {\n require(_isApprovedOrOwner(msg.sender, tokenId));\n _burn(tokenId);\n }\n}\n", + "sourcePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/token/ERC721/ERC721Burnable.sol", + "ast": { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/token/ERC721/ERC721Burnable.sol", + "exportedSymbols": { + "ERC721Burnable": [ + 5878 + ] + }, + "id": 5879, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 5856, + "literals": [ + "solidity", + "^", + "0.5", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "0:23:51" + }, + { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/token/ERC721/ERC721.sol", + "file": "./ERC721.sol", + "id": 5857, + "nodeType": "ImportDirective", + "scope": 5879, + "sourceUnit": 5855, + "src": "25:22:51", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 5858, + "name": "ERC721", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 5854, + "src": "182:6:51", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC721_$5854", + "typeString": "contract ERC721" + } + }, + "id": 5859, + "nodeType": "InheritanceSpecifier", + "src": "182:6:51" + } + ], + "contractDependencies": [ + 3055, + 3202, + 5854, + 6619 + ], + "contractKind": "contract", + "documentation": "@title ERC721 Burnable Token\n@dev ERC721 Token that can be irreversibly burned (destroyed).", + "fullyImplemented": true, + "id": 5878, + "linearizedBaseContracts": [ + 5878, + 5854, + 6619, + 3055, + 3202 + ], + "name": "ERC721Burnable", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": { + "id": 5876, + "nodeType": "Block", + "src": "359:89:51", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 5866, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6845, + "src": "396:3:51", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 5867, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "396:10:51", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 5868, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5861, + "src": "408:7:51", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 5865, + "name": "_isApprovedOrOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5618, + "src": "377:18:51", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,uint256) view returns (bool)" + } + }, + "id": 5869, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "377:39:51", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 5864, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6848, + 6849 + ], + "referencedDeclaration": 6848, + "src": "369:7:51", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 5870, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "369:48:51", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5871, + "nodeType": "ExpressionStatement", + "src": "369:48:51" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 5873, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5861, + "src": "433:7:51", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 5872, + "name": "_burn", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 5713, + 5726 + ], + "referencedDeclaration": 5726, + "src": "427:5:51", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$__$", + "typeString": "function (uint256)" + } + }, + "id": 5874, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "427:14:51", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5875, + "nodeType": "ExpressionStatement", + "src": "427:14:51" + } + ] + }, + "documentation": "@dev Burns a specific ERC721 token.\n@param tokenId uint256 id of the ERC721 token to be burned.", + "id": 5877, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "burn", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5862, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5861, + "name": "tokenId", + "nodeType": "VariableDeclaration", + "scope": 5877, + "src": "335:15:51", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5860, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "335:7:51", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "334:17:51" + }, + "returnParameters": { + "id": 5863, + "nodeType": "ParameterList", + "parameters": [], + "src": "359:0:51" + }, + "scope": 5878, + "src": "321:127:51", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + } + ], + "scope": 5879, + "src": "155:295:51" + } + ], + "src": "0:451:51" + }, + "legacyAST": { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/token/ERC721/ERC721Burnable.sol", + "exportedSymbols": { + "ERC721Burnable": [ + 5878 + ] + }, + "id": 5879, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 5856, + "literals": [ + "solidity", + "^", + "0.5", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "0:23:51" + }, + { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/token/ERC721/ERC721.sol", + "file": "./ERC721.sol", + "id": 5857, + "nodeType": "ImportDirective", + "scope": 5879, + "sourceUnit": 5855, + "src": "25:22:51", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 5858, + "name": "ERC721", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 5854, + "src": "182:6:51", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC721_$5854", + "typeString": "contract ERC721" + } + }, + "id": 5859, + "nodeType": "InheritanceSpecifier", + "src": "182:6:51" + } + ], + "contractDependencies": [ + 3055, + 3202, + 5854, + 6619 + ], + "contractKind": "contract", + "documentation": "@title ERC721 Burnable Token\n@dev ERC721 Token that can be irreversibly burned (destroyed).", + "fullyImplemented": true, + "id": 5878, + "linearizedBaseContracts": [ + 5878, + 5854, + 6619, + 3055, + 3202 + ], + "name": "ERC721Burnable", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": { + "id": 5876, + "nodeType": "Block", + "src": "359:89:51", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 5866, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6845, + "src": "396:3:51", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 5867, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "396:10:51", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 5868, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5861, + "src": "408:7:51", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 5865, + "name": "_isApprovedOrOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5618, + "src": "377:18:51", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,uint256) view returns (bool)" + } + }, + "id": 5869, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "377:39:51", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 5864, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6848, + 6849 + ], + "referencedDeclaration": 6848, + "src": "369:7:51", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 5870, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "369:48:51", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5871, + "nodeType": "ExpressionStatement", + "src": "369:48:51" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 5873, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5861, + "src": "433:7:51", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 5872, + "name": "_burn", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 5713, + 5726 + ], + "referencedDeclaration": 5726, + "src": "427:5:51", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$__$", + "typeString": "function (uint256)" + } + }, + "id": 5874, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "427:14:51", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5875, + "nodeType": "ExpressionStatement", + "src": "427:14:51" + } + ] + }, + "documentation": "@dev Burns a specific ERC721 token.\n@param tokenId uint256 id of the ERC721 token to be burned.", + "id": 5877, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "burn", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5862, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5861, + "name": "tokenId", + "nodeType": "VariableDeclaration", + "scope": 5877, + "src": "335:15:51", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5860, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "335:7:51", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "334:17:51" + }, + "returnParameters": { + "id": 5863, + "nodeType": "ParameterList", + "parameters": [], + "src": "359:0:51" + }, + "scope": 5878, + "src": "321:127:51", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + } + ], + "scope": 5879, + "src": "155:295:51" + } + ], + "src": "0:451:51" + }, + "compiler": { + "name": "solc", + "version": "0.5.0+commit.1d4f565a.Emscripten.clang" + }, + "networks": {}, + "schemaVersion": "3.0.0", + "updatedAt": "2019-01-04T21:44:02.896Z", + "devdoc": { + "details": "ERC721 Token that can be irreversibly burned (destroyed).", + "methods": { + "approve(address,uint256)": { + "details": "Approves another address to transfer the given token ID The zero address indicates there is no approved address. There can only be one approved address per token at a given time. Can only be called by the token owner or an approved operator.", + "params": { + "to": "address to be approved for the given token ID", + "tokenId": "uint256 ID of the token to be approved" + } + }, + "balanceOf(address)": { + "details": "Gets the balance of the specified address", + "params": { + "owner": "address to query the balance of" + }, + "return": "uint256 representing the amount owned by the passed address" + }, + "burn(uint256)": { + "details": "Burns a specific ERC721 token.", + "params": { + "tokenId": "uint256 id of the ERC721 token to be burned." + } + }, + "getApproved(uint256)": { + "details": "Gets the approved address for a token ID, or zero if no address set Reverts if the token ID does not exist.", + "params": { + "tokenId": "uint256 ID of the token to query the approval of" + }, + "return": "address currently approved for the given token ID" + }, + "isApprovedForAll(address,address)": { + "details": "Tells whether an operator is approved by a given owner", + "params": { + "operator": "operator address which you want to query the approval of", + "owner": "owner address which you want to query the approval of" + }, + "return": "bool whether the given operator is approved by the given owner" + }, + "ownerOf(uint256)": { + "details": "Gets the owner of the specified token ID", + "params": { + "tokenId": "uint256 ID of the token to query the owner of" + }, + "return": "owner address currently marked as the owner of the given token ID" + }, + "safeTransferFrom(address,address,uint256)": { + "details": "Safely transfers the ownership of a given token ID to another address If the target address is a contract, it must implement `onERC721Received`, which is called upon a safe transfer, and return the magic value `bytes4(keccak256(\"onERC721Received(address,address,uint256,bytes)\"))`; otherwise, the transfer is reverted. * Requires the msg sender to be the owner, approved, or operator", + "params": { + "from": "current owner of the token", + "to": "address to receive the ownership of the given token ID", + "tokenId": "uint256 ID of the token to be transferred" + } + }, + "safeTransferFrom(address,address,uint256,bytes)": { + "details": "Safely transfers the ownership of a given token ID to another address If the target address is a contract, it must implement `onERC721Received`, which is called upon a safe transfer, and return the magic value `bytes4(keccak256(\"onERC721Received(address,address,uint256,bytes)\"))`; otherwise, the transfer is reverted. Requires the msg sender to be the owner, approved, or operator", + "params": { + "_data": "bytes data to send along with a safe transfer check", + "from": "current owner of the token", + "to": "address to receive the ownership of the given token ID", + "tokenId": "uint256 ID of the token to be transferred" + } + }, + "setApprovalForAll(address,bool)": { + "details": "Sets or unsets the approval of a given operator An operator is allowed to transfer all tokens of the sender on their behalf", + "params": { + "approved": "representing the status of the approval to be set", + "to": "operator address to set the approval" + } + }, + "supportsInterface(bytes4)": { + "details": "implement supportsInterface(bytes4) using a lookup table" + }, + "transferFrom(address,address,uint256)": { + "details": "Transfers the ownership of a given token ID to another address Usage of this method is discouraged, use `safeTransferFrom` whenever possible Requires the msg sender to be the owner, approved, or operator", + "params": { + "from": "current owner of the token", + "to": "address to receive the ownership of the given token ID", + "tokenId": "uint256 ID of the token to be transferred" + } + } + }, + "title": "ERC721 Burnable Token" + }, + "userdoc": { + "methods": {} + } +} \ No newline at end of file diff --git a/node_modules/openzeppelin-solidity/build/contracts/ERC721Enumerable.json b/node_modules/openzeppelin-solidity/build/contracts/ERC721Enumerable.json new file mode 100644 index 0000000..1fc472e --- /dev/null +++ b/node_modules/openzeppelin-solidity/build/contracts/ERC721Enumerable.json @@ -0,0 +1,8715 @@ +{ + "contractName": "ERC721Enumerable", + "abi": [ + { + "constant": true, + "inputs": [ + { + "name": "interfaceId", + "type": "bytes4" + } + ], + "name": "supportsInterface", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "tokenId", + "type": "uint256" + } + ], + "name": "getApproved", + "outputs": [ + { + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "to", + "type": "address" + }, + { + "name": "tokenId", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "from", + "type": "address" + }, + { + "name": "to", + "type": "address" + }, + { + "name": "tokenId", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "from", + "type": "address" + }, + { + "name": "to", + "type": "address" + }, + { + "name": "tokenId", + "type": "uint256" + } + ], + "name": "safeTransferFrom", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "tokenId", + "type": "uint256" + } + ], + "name": "ownerOf", + "outputs": [ + { + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "owner", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "to", + "type": "address" + }, + { + "name": "approved", + "type": "bool" + } + ], + "name": "setApprovalForAll", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "from", + "type": "address" + }, + { + "name": "to", + "type": "address" + }, + { + "name": "tokenId", + "type": "uint256" + }, + { + "name": "_data", + "type": "bytes" + } + ], + "name": "safeTransferFrom", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "owner", + "type": "address" + }, + { + "name": "operator", + "type": "address" + } + ], + "name": "isApprovedForAll", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "from", + "type": "address" + }, + { + "indexed": true, + "name": "to", + "type": "address" + }, + { + "indexed": true, + "name": "tokenId", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "name": "approved", + "type": "address" + }, + { + "indexed": true, + "name": "tokenId", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "name": "operator", + "type": "address" + }, + { + "indexed": false, + "name": "approved", + "type": "bool" + } + ], + "name": "ApprovalForAll", + "type": "event" + }, + { + "constant": true, + "inputs": [ + { + "name": "owner", + "type": "address" + }, + { + "name": "index", + "type": "uint256" + } + ], + "name": "tokenOfOwnerByIndex", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "index", + "type": "uint256" + } + ], + "name": "tokenByIndex", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + } + ], + "bytecode": "0x608060405234801561001057600080fd5b5061004c6301ffc9a77c0100000000000000000000000000000000000000000000000000000000026100c7640100000000026401000000009004565b6100876380ac58cd7c0100000000000000000000000000000000000000000000000000000000026100c7640100000000026401000000009004565b6100c263780e9d637c0100000000000000000000000000000000000000000000000000000000026100c7640100000000026401000000009004565b610184565b63ffffffff7c010000000000000000000000000000000000000000000000000000000002817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161415151561011857600080fd5b6001600080837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b611673806101936000396000f3fe6080604052600436106100c5576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806301ffc9a7146100ca578063081812fc1461013c578063095ea7b3146101b757806318160ddd1461021257806323b872dd1461023d5780632f745c59146102b857806342842e0e146103275780634f6ccce7146103a25780636352211e146103f157806370a082311461046c578063a22cb465146104d1578063b88d4fde1461052e578063e985e9c514610640575b600080fd5b3480156100d657600080fd5b50610122600480360360208110156100ed57600080fd5b8101908080357bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690602001909291905050506106c9565b604051808215151515815260200191505060405180910390f35b34801561014857600080fd5b506101756004803603602081101561015f57600080fd5b8101908080359060200190929190505050610730565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156101c357600080fd5b50610210600480360360408110156101da57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610781565b005b34801561021e57600080fd5b506102276108c6565b6040518082815260200191505060405180910390f35b34801561024957600080fd5b506102b66004803603606081101561026057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506108d3565b005b3480156102c457600080fd5b50610311600480360360408110156102db57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506108f8565b6040518082815260200191505060405180910390f35b34801561033357600080fd5b506103a06004803603606081101561034a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061096f565b005b3480156103ae57600080fd5b506103db600480360360208110156103c557600080fd5b8101908080359060200190929190505050610990565b6040518082815260200191505060405180910390f35b3480156103fd57600080fd5b5061042a6004803603602081101561041457600080fd5b81019080803590602001909291905050506109c8565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561047857600080fd5b506104bb6004803603602081101561048f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610a46565b6040518082815260200191505060405180910390f35b3480156104dd57600080fd5b5061052c600480360360408110156104f457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803515159060200190929190505050610aca565b005b34801561053a57600080fd5b5061063e6004803603608081101561055157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001906401000000008111156105b857600080fd5b8201836020820111156105ca57600080fd5b803590602001918460018302840111640100000000831117156105ec57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050610c06565b005b34801561064c57600080fd5b506106af6004803603604081101561066357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610c2e565b604051808215151515815260200191505060405180910390f35b6000806000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060009054906101000a900460ff169050919050565b600061073b82610cc2565b151561074657600080fd5b6002600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b600061078c826109c8565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141515156107c957600080fd5b8073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061080957506108088133610c2e565b5b151561081457600080fd5b826002600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a4505050565b6000600780549050905090565b6108dd3382610d34565b15156108e857600080fd5b6108f3838383610dc9565b505050565b600061090383610a46565b8210151561091057600080fd5b600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208281548110151561095c57fe5b9060005260206000200154905092915050565b61098b8383836020604051908101604052806000815250610c06565b505050565b600061099a6108c6565b821015156109a757600080fd5b6007828154811015156109b657fe5b90600052602060002001549050919050565b6000806001600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515610a3d57600080fd5b80915050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614151515610a8357600080fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b3373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614151515610b0557600080fd5b80600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051808215151515815260200191505060405180910390a35050565b610c118484846108d3565b610c1d84848484610ded565b1515610c2857600080fd5b50505050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6000806001600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415915050919050565b600080610d40836109c8565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480610daf57508373ffffffffffffffffffffffffffffffffffffffff16610d9784610730565b73ffffffffffffffffffffffffffffffffffffffff16145b80610dc05750610dbf8185610c2e565b5b91505092915050565b610dd4838383611010565b610dde8382611275565b610de88282611419565b505050565b6000610e0e8473ffffffffffffffffffffffffffffffffffffffff166114e0565b1515610e1d5760019050611008565b60008473ffffffffffffffffffffffffffffffffffffffff1663150b7a02338887876040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b83811015610f14578082015181840152602081019050610ef9565b50505050905090810190601f168015610f415780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b158015610f6357600080fd5b505af1158015610f77573d6000803e3d6000fd5b505050506040513d6020811015610f8d57600080fd5b8101908080519060200190929190505050905063150b7a027c0100000000000000000000000000000000000000000000000000000000027bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149150505b949350505050565b8273ffffffffffffffffffffffffffffffffffffffff16611030826109c8565b73ffffffffffffffffffffffffffffffffffffffff1614151561105257600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415151561108e57600080fd5b611097816114f3565b6110ea6001600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546115b390919063ffffffff16565b600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506111806001600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546115d590919063ffffffff16565b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816001600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b60006112cd6001600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805490506115b390919063ffffffff16565b905060006006600084815260200190815260200160002054905081811415156113c0576000600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208381548110151561133e57fe5b9060005260206000200154905080600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208381548110151561139857fe5b9060005260206000200181905550816006600083815260200190815260200160002081905550505b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080548091906001900361141291906115f6565b5050505050565b600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805490506006600083815260200190815260200160002081905550600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190806001815401808255809150509060018203906000526020600020016000909192909190915055505050565b600080823b905060008111915050919050565b600073ffffffffffffffffffffffffffffffffffffffff166002600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156115b05760006002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b50565b60008282111515156115c457600080fd5b600082840390508091505092915050565b60008082840190508381101515156115ec57600080fd5b8091505092915050565b81548183558181111561161d5781836000526020600020918201910161161c9190611622565b5b505050565b61164491905b80821115611640576000816000905550600101611628565b5090565b9056fea165627a7a723058201f4242e1da50435b1aa265b8751b8a068db9907132b97b82b5fd5937bb2624bf0029", + "deployedBytecode": "0x6080604052600436106100c5576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806301ffc9a7146100ca578063081812fc1461013c578063095ea7b3146101b757806318160ddd1461021257806323b872dd1461023d5780632f745c59146102b857806342842e0e146103275780634f6ccce7146103a25780636352211e146103f157806370a082311461046c578063a22cb465146104d1578063b88d4fde1461052e578063e985e9c514610640575b600080fd5b3480156100d657600080fd5b50610122600480360360208110156100ed57600080fd5b8101908080357bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690602001909291905050506106c9565b604051808215151515815260200191505060405180910390f35b34801561014857600080fd5b506101756004803603602081101561015f57600080fd5b8101908080359060200190929190505050610730565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156101c357600080fd5b50610210600480360360408110156101da57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610781565b005b34801561021e57600080fd5b506102276108c6565b6040518082815260200191505060405180910390f35b34801561024957600080fd5b506102b66004803603606081101561026057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506108d3565b005b3480156102c457600080fd5b50610311600480360360408110156102db57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506108f8565b6040518082815260200191505060405180910390f35b34801561033357600080fd5b506103a06004803603606081101561034a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061096f565b005b3480156103ae57600080fd5b506103db600480360360208110156103c557600080fd5b8101908080359060200190929190505050610990565b6040518082815260200191505060405180910390f35b3480156103fd57600080fd5b5061042a6004803603602081101561041457600080fd5b81019080803590602001909291905050506109c8565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561047857600080fd5b506104bb6004803603602081101561048f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610a46565b6040518082815260200191505060405180910390f35b3480156104dd57600080fd5b5061052c600480360360408110156104f457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803515159060200190929190505050610aca565b005b34801561053a57600080fd5b5061063e6004803603608081101561055157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001906401000000008111156105b857600080fd5b8201836020820111156105ca57600080fd5b803590602001918460018302840111640100000000831117156105ec57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050610c06565b005b34801561064c57600080fd5b506106af6004803603604081101561066357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610c2e565b604051808215151515815260200191505060405180910390f35b6000806000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060009054906101000a900460ff169050919050565b600061073b82610cc2565b151561074657600080fd5b6002600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b600061078c826109c8565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141515156107c957600080fd5b8073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061080957506108088133610c2e565b5b151561081457600080fd5b826002600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a4505050565b6000600780549050905090565b6108dd3382610d34565b15156108e857600080fd5b6108f3838383610dc9565b505050565b600061090383610a46565b8210151561091057600080fd5b600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208281548110151561095c57fe5b9060005260206000200154905092915050565b61098b8383836020604051908101604052806000815250610c06565b505050565b600061099a6108c6565b821015156109a757600080fd5b6007828154811015156109b657fe5b90600052602060002001549050919050565b6000806001600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515610a3d57600080fd5b80915050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614151515610a8357600080fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b3373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614151515610b0557600080fd5b80600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051808215151515815260200191505060405180910390a35050565b610c118484846108d3565b610c1d84848484610ded565b1515610c2857600080fd5b50505050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6000806001600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415915050919050565b600080610d40836109c8565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480610daf57508373ffffffffffffffffffffffffffffffffffffffff16610d9784610730565b73ffffffffffffffffffffffffffffffffffffffff16145b80610dc05750610dbf8185610c2e565b5b91505092915050565b610dd4838383611010565b610dde8382611275565b610de88282611419565b505050565b6000610e0e8473ffffffffffffffffffffffffffffffffffffffff166114e0565b1515610e1d5760019050611008565b60008473ffffffffffffffffffffffffffffffffffffffff1663150b7a02338887876040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b83811015610f14578082015181840152602081019050610ef9565b50505050905090810190601f168015610f415780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b158015610f6357600080fd5b505af1158015610f77573d6000803e3d6000fd5b505050506040513d6020811015610f8d57600080fd5b8101908080519060200190929190505050905063150b7a027c0100000000000000000000000000000000000000000000000000000000027bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149150505b949350505050565b8273ffffffffffffffffffffffffffffffffffffffff16611030826109c8565b73ffffffffffffffffffffffffffffffffffffffff1614151561105257600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415151561108e57600080fd5b611097816114f3565b6110ea6001600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546115b390919063ffffffff16565b600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506111806001600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546115d590919063ffffffff16565b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816001600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b60006112cd6001600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805490506115b390919063ffffffff16565b905060006006600084815260200190815260200160002054905081811415156113c0576000600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208381548110151561133e57fe5b9060005260206000200154905080600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208381548110151561139857fe5b9060005260206000200181905550816006600083815260200190815260200160002081905550505b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080548091906001900361141291906115f6565b5050505050565b600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805490506006600083815260200190815260200160002081905550600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190806001815401808255809150509060018203906000526020600020016000909192909190915055505050565b600080823b905060008111915050919050565b600073ffffffffffffffffffffffffffffffffffffffff166002600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156115b05760006002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b50565b60008282111515156115c457600080fd5b600082840390508091505092915050565b60008082840190508381101515156115ec57600080fd5b8091505092915050565b81548183558181111561161d5781836000526020600020918201910161161c9190611622565b5b505050565b61164491905b80821115611640576000816000905550600101611628565b5090565b9056fea165627a7a723058201f4242e1da50435b1aa265b8751b8a068db9907132b97b82b5fd5937bb2624bf0029", + "sourceMap": "284:8258:52:-;;;1132:166;8:9:-1;5:2;;;30:1;27;20:12;5:2;1132:166:52;640:40:28;236:10;659:20;;640:18;;;:40;;;:::i;:::-;1906::50;1163:10;1925:20;;1906:18;;;:40;;;:::i;:::-;1240:51:52;855:10;1259:31;;1240:18;;;:51;;;:::i;:::-;284:8258;;990:158:28;1080:10;1065:25;;:11;:25;;;;;1057:34;;;;;;;;1137:4;1101:20;:33;1122:11;1101:33;;;;;;;;;;;;;;;;;;:40;;;;;;;;;;;;;;;;;;990:158;:::o;284:8258:52:-;;;;;;;", + "deployedSourceMap": "284:8258:52:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;778:133:28;;8:9:-1;5:2;;;30:1;27;20:12;5:2;778:133:28;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;778:133:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3705:151:50;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3705:151:50;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3705:151:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3128:292;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3128:292:50;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3128:292:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2005:94:52;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2005:94:52;;;;;;;;;;;;;;;;;;;;;;;5260:180:50;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5260:180:50;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;5260:180:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1671:182:52;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1671:182:52;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1671:182:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6079:132:50;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6079:132:50;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;6079:132:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2436:148:52;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2436:148:52;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2436:148:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2530:177:50;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2530:177:50;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2530:177:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2156:150;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2156:150:50;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2156:150:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4148:213;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4148:213:50;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4148:213:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6916:211;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6916:211:50;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;6916:211:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;6916:211:50;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;6916:211:50;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;6916:211:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;6916:211:50;;;;;;;;;;;;;;;;;;4682:145;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4682:145:50;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4682:145:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;778:133:28;848:4;871:20;:33;892:11;871:33;;;;;;;;;;;;;;;;;;;;;;;;;;;864:40;;778:133;;;:::o;3705:151:50:-;3764:7;3791:16;3799:7;3791;:16::i;:::-;3783:25;;;;;;;;3825:15;:24;3841:7;3825:24;;;;;;;;;;;;;;;;;;;;;3818:31;;3705:151;;;:::o;3128:292::-;3191:13;3207:16;3215:7;3207;:16::i;:::-;3191:32;;3247:5;3241:11;;:2;:11;;;;3233:20;;;;;;;;3285:5;3271:19;;:10;:19;;;:58;;;;3294:35;3311:5;3318:10;3294:16;:35::i;:::-;3271:58;3263:67;;;;;;;;3368:2;3341:15;:24;3357:7;3341:24;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;3405:7;3401:2;3385:28;;3394:5;3385:28;;;;;;;;;;;;3128:292;;;:::o;2005:94:52:-;2049:7;2075:10;:17;;;;2068:24;;2005:94;:::o;5260:180:50:-;5350:39;5369:10;5381:7;5350:18;:39::i;:::-;5342:48;;;;;;;;5401:32;5415:4;5421:2;5425:7;5401:13;:32::i;:::-;5260:180;;;:::o;1671:182:52:-;1751:7;1786:16;1796:5;1786:9;:16::i;:::-;1778:5;:24;1770:33;;;;;;;;1820:12;:19;1833:5;1820:19;;;;;;;;;;;;;;;1840:5;1820:26;;;;;;;;;;;;;;;;;;1813:33;;1671:182;;;;:::o;6079:132:50:-;6165:39;6182:4;6188:2;6192:7;6165:39;;;;;;;;;;;;;:16;:39::i;:::-;6079:132;;;:::o;2436:148:52:-;2494:7;2529:13;:11;:13::i;:::-;2521:5;:21;2513:30;;;;;;;;2560:10;2571:5;2560:17;;;;;;;;;;;;;;;;;;2553:24;;2436:148;;;:::o;2530:177:50:-;2585:7;2604:13;2620:11;:20;2632:7;2620:20;;;;;;;;;;;;;;;;;;;;;2604:36;;2675:1;2658:19;;:5;:19;;;;2650:28;;;;;;;;2695:5;2688:12;;;2530:177;;;:::o;2156:150::-;2211:7;2255:1;2238:19;;:5;:19;;;;2230:28;;;;;;;;2275:17;:24;2293:5;2275:24;;;;;;;;;;;;;;;;2268:31;;2156:150;;;:::o;4148:213::-;4233:10;4227:16;;:2;:16;;;;4219:25;;;;;;;;4291:8;4254:18;:30;4273:10;4254:30;;;;;;;;;;;;;;;:34;4285:2;4254:34;;;;;;;;;;;;;;;;:45;;;;;;;;;;;;;;;;;;4341:2;4314:40;;4329:10;4314:40;;;4345:8;4314:40;;;;;;;;;;;;;;;;;;;;;;4148:213;;:::o;6916:211::-;7022:31;7035:4;7041:2;7045:7;7022:12;:31::i;:::-;7071:48;7094:4;7100:2;7104:7;7113:5;7071:22;:48::i;:::-;7063:57;;;;;;;;6916:211;;;;:::o;4682:145::-;4762:4;4785:18;:25;4804:5;4785:25;;;;;;;;;;;;;;;:35;4811:8;4785:35;;;;;;;;;;;;;;;;;;;;;;;;;4778:42;;4682:145;;;;:::o;7316:152::-;7373:4;7389:13;7405:11;:20;7417:7;7405:20;;;;;;;;;;;;;;;;;;;;;7389:36;;7459:1;7442:19;;:5;:19;;;;7435:26;;;7316:152;;;:::o;7831:246::-;7916:4;7932:13;7948:16;7956:7;7948;:16::i;:::-;7932:32;;7993:5;7982:16;;:7;:16;;;:51;;;;8026:7;8002:31;;:20;8014:7;8002:11;:20::i;:::-;:31;;;7982:51;:87;;;;8037:32;8054:5;8061:7;8037:16;:32::i;:::-;7982:87;7974:96;;;7831:246;;;;:::o;2958:239:52:-;3043:38;3063:4;3069:2;3073:7;3043:19;:38::i;:::-;3092:47;3125:4;3131:7;3092:32;:47::i;:::-;3150:40;3178:2;3182:7;3150:27;:40::i;:::-;2958:239;;;:::o;10744:347:50:-;10865:4;10890:15;:2;:13;;;:15::i;:::-;10889:16;10885:58;;;10928:4;10921:11;;;;10885:58;10953:13;10985:2;10969:36;;;11006:10;11018:4;11024:7;11033:5;10969:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;10969:70:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10969:70:50;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;10969:70:50;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;10969:70:50;;;;;;;;;;;;;;;;10953:86;;658:10;11067:16;;11057:26;;;:6;:26;;;;11049:35;;;10744:347;;;;;;;:::o;9819:402::-;9932:4;9912:24;;:16;9920:7;9912;:16::i;:::-;:24;;;9904:33;;;;;;;;9969:1;9955:16;;:2;:16;;;;9947:25;;;;;;;;9983:23;9998:7;9983:14;:23::i;:::-;10043:30;10071:1;10043:17;:23;10061:4;10043:23;;;;;;;;;;;;;;;;:27;;:30;;;;:::i;:::-;10017:17;:23;10035:4;10017:23;;;;;;;;;;;;;;;:56;;;;10107:28;10133:1;10107:17;:21;10125:2;10107:21;;;;;;;;;;;;;;;;:25;;:28;;;;:::i;:::-;10083:17;:21;10101:2;10083:21;;;;;;;;;;;;;;;:52;;;;10169:2;10146:11;:20;10158:7;10146:20;;;;;;;;;;;;:25;;;;;;;;;;;;;;;;;;10206:7;10202:2;10187:27;;10196:4;10187:27;;;;;;;;;;;;9819:402;;;:::o;6060:1128:52:-;6322:22;6347:32;6377:1;6347:12;:18;6360:4;6347:18;;;;;;;;;;;;;;;:25;;;;:29;;:32;;;;:::i;:::-;6322:57;;6389:18;6410:17;:26;6428:7;6410:26;;;;;;;;;;;;6389:47;;6554:14;6540:10;:28;;6536:323;;;6584:19;6606:12;:18;6619:4;6606:18;;;;;;;;;;;;;;;6625:14;6606:34;;;;;;;;;;;;;;;;;;6584:56;;6688:11;6655:12;:18;6668:4;6655:18;;;;;;;;;;;;;;;6674:10;6655:30;;;;;;;;;;;;;;;;;:44;;;;6804:10;6771:17;:30;6789:11;6771:30;;;;;;;;;;;:43;;;;6536:323;;6945:12;:18;6958:4;6945:18;;;;;;;;;;;;;;;:27;;;;;;;;;;;;:::i;:::-;;6060:1128;;;;:::o;4906:183::-;5019:12;:16;5032:2;5019:16;;;;;;;;;;;;;;;:23;;;;4990:17;:26;5008:7;4990:26;;;;;;;;;;;:52;;;;5052:12;:16;5065:2;5052:16;;;;;;;;;;;;;;;5074:7;5052:30;;39:1:-1;33:3;27:10;23:18;57:10;52:3;45:23;79:10;72:17;;0:93;5052:30:52;;;;;;;;;;;;;;;;;;;;;;4906:183;;:::o;463:616:64:-;523:4;539:12;1038:7;1026:20;1018:28;;1071:1;1064:4;:8;1057:15;;;463:616;;;:::o;11252:171:50:-;11351:1;11315:38;;:15;:24;11331:7;11315:24;;;;;;;;;;;;;;;;;;;;;:38;;;;11311:106;;;11404:1;11369:15;:24;11385:7;11369:24;;;;;;;;;;;;:37;;;;;;;;;;;;;;;;;;11311:106;11252:171;:::o;1205:145:33:-;1263:7;1295:1;1290;:6;;1282:15;;;;;;;;1307:9;1323:1;1319;:5;1307:17;;1342:1;1335:8;;;1205:145;;;;:::o;1431:::-;1489:7;1508:9;1524:1;1520;:5;1508:17;;1548:1;1543;:6;;1535:15;;;;;;;;1568:1;1561:8;;;1431:145;;;;:::o;284:8258:52:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o", + "source": "pragma solidity ^0.5.0;\n\nimport \"./IERC721Enumerable.sol\";\nimport \"./ERC721.sol\";\nimport \"../../introspection/ERC165.sol\";\n\n/**\n * @title ERC-721 Non-Fungible Token with optional enumeration extension logic\n * @dev See https://github.com/ethereum/EIPs/blob/master/EIPS/eip-721.md\n */\ncontract ERC721Enumerable is ERC165, ERC721, IERC721Enumerable {\n // Mapping from owner to list of owned token IDs\n mapping(address => uint256[]) private _ownedTokens;\n\n // Mapping from token ID to index of the owner tokens list\n mapping(uint256 => uint256) private _ownedTokensIndex;\n\n // Array with all token ids, used for enumeration\n uint256[] private _allTokens;\n\n // Mapping from token id to position in the allTokens array\n mapping(uint256 => uint256) private _allTokensIndex;\n\n bytes4 private constant _INTERFACE_ID_ERC721_ENUMERABLE = 0x780e9d63;\n /**\n * 0x780e9d63 ===\n * bytes4(keccak256('totalSupply()')) ^\n * bytes4(keccak256('tokenOfOwnerByIndex(address,uint256)')) ^\n * bytes4(keccak256('tokenByIndex(uint256)'))\n */\n\n /**\n * @dev Constructor function\n */\n constructor () public {\n // register the supported interface to conform to ERC721 via ERC165\n _registerInterface(_INTERFACE_ID_ERC721_ENUMERABLE);\n }\n\n /**\n * @dev Gets the token ID at a given index of the tokens list of the requested owner\n * @param owner address owning the tokens list to be accessed\n * @param index uint256 representing the index to be accessed of the requested tokens list\n * @return uint256 token ID at the given index of the tokens list owned by the requested address\n */\n function tokenOfOwnerByIndex(address owner, uint256 index) public view returns (uint256) {\n require(index < balanceOf(owner));\n return _ownedTokens[owner][index];\n }\n\n /**\n * @dev Gets the total amount of tokens stored by the contract\n * @return uint256 representing the total amount of tokens\n */\n function totalSupply() public view returns (uint256) {\n return _allTokens.length;\n }\n\n /**\n * @dev Gets the token ID at a given index of all the tokens in this contract\n * Reverts if the index is greater or equal to the total number of tokens\n * @param index uint256 representing the index to be accessed of the tokens list\n * @return uint256 token ID at the given index of the tokens list\n */\n function tokenByIndex(uint256 index) public view returns (uint256) {\n require(index < totalSupply());\n return _allTokens[index];\n }\n\n /**\n * @dev Internal function to transfer ownership of a given token ID to another address.\n * As opposed to transferFrom, this imposes no restrictions on msg.sender.\n * @param from current owner of the token\n * @param to address to receive the ownership of the given token ID\n * @param tokenId uint256 ID of the token to be transferred\n */\n function _transferFrom(address from, address to, uint256 tokenId) internal {\n super._transferFrom(from, to, tokenId);\n\n _removeTokenFromOwnerEnumeration(from, tokenId);\n\n _addTokenToOwnerEnumeration(to, tokenId);\n }\n\n /**\n * @dev Internal function to mint a new token\n * Reverts if the given token ID already exists\n * @param to address the beneficiary that will own the minted token\n * @param tokenId uint256 ID of the token to be minted\n */\n function _mint(address to, uint256 tokenId) internal {\n super._mint(to, tokenId);\n\n _addTokenToOwnerEnumeration(to, tokenId);\n\n _addTokenToAllTokensEnumeration(tokenId);\n }\n\n /**\n * @dev Internal function to burn a specific token\n * Reverts if the token does not exist\n * Deprecated, use _burn(uint256) instead\n * @param owner owner of the token to burn\n * @param tokenId uint256 ID of the token being burned\n */\n function _burn(address owner, uint256 tokenId) internal {\n super._burn(owner, tokenId);\n\n _removeTokenFromOwnerEnumeration(owner, tokenId);\n // Since tokenId will be deleted, we can clear its slot in _ownedTokensIndex to trigger a gas refund\n _ownedTokensIndex[tokenId] = 0;\n\n _removeTokenFromAllTokensEnumeration(tokenId);\n }\n\n /**\n * @dev Gets the list of token IDs of the requested owner\n * @param owner address owning the tokens\n * @return uint256[] List of token IDs owned by the requested address\n */\n function _tokensOfOwner(address owner) internal view returns (uint256[] storage) {\n return _ownedTokens[owner];\n }\n\n /**\n * @dev Private function to add a token to this extension's ownership-tracking data structures.\n * @param to address representing the new owner of the given token ID\n * @param tokenId uint256 ID of the token to be added to the tokens list of the given address\n */\n function _addTokenToOwnerEnumeration(address to, uint256 tokenId) private {\n _ownedTokensIndex[tokenId] = _ownedTokens[to].length;\n _ownedTokens[to].push(tokenId);\n }\n\n /**\n * @dev Private function to add a token to this extension's token tracking data structures.\n * @param tokenId uint256 ID of the token to be added to the tokens list\n */\n function _addTokenToAllTokensEnumeration(uint256 tokenId) private {\n _allTokensIndex[tokenId] = _allTokens.length;\n _allTokens.push(tokenId);\n }\n\n /**\n * @dev Private function to remove a token from this extension's ownership-tracking data structures. Note that\n * while the token is not assigned a new owner, the _ownedTokensIndex mapping is _not_ updated: this allows for\n * gas optimizations e.g. when performing a transfer operation (avoiding double writes).\n * This has O(1) time complexity, but alters the order of the _ownedTokens array.\n * @param from address representing the previous owner of the given token ID\n * @param tokenId uint256 ID of the token to be removed from the tokens list of the given address\n */\n function _removeTokenFromOwnerEnumeration(address from, uint256 tokenId) private {\n // To prevent a gap in from's tokens array, we store the last token in the index of the token to delete, and\n // then delete the last slot (swap and pop).\n\n uint256 lastTokenIndex = _ownedTokens[from].length.sub(1);\n uint256 tokenIndex = _ownedTokensIndex[tokenId];\n\n // When the token to delete is the last token, the swap operation is unnecessary\n if (tokenIndex != lastTokenIndex) {\n uint256 lastTokenId = _ownedTokens[from][lastTokenIndex];\n\n _ownedTokens[from][tokenIndex] = lastTokenId; // Move the last token to the slot of the to-delete token\n _ownedTokensIndex[lastTokenId] = tokenIndex; // Update the moved token's index\n }\n\n // This also deletes the contents at the last position of the array\n _ownedTokens[from].length--;\n\n // Note that _ownedTokensIndex[tokenId] hasn't been cleared: it still points to the old slot (now occcupied by\n // lasTokenId, or just over the end of the array if the token was the last one).\n }\n\n /**\n * @dev Private function to remove a token from this extension's token tracking data structures.\n * This has O(1) time complexity, but alters the order of the _allTokens array.\n * @param tokenId uint256 ID of the token to be removed from the tokens list\n */\n function _removeTokenFromAllTokensEnumeration(uint256 tokenId) private {\n // To prevent a gap in the tokens array, we store the last token in the index of the token to delete, and\n // then delete the last slot (swap and pop).\n\n uint256 lastTokenIndex = _allTokens.length.sub(1);\n uint256 tokenIndex = _allTokensIndex[tokenId];\n\n // When the token to delete is the last token, the swap operation is unnecessary. However, since this occurs so\n // rarely (when the last minted token is burnt) that we still do the swap here to avoid the gas cost of adding\n // an 'if' statement (like in _removeTokenFromOwnerEnumeration)\n uint256 lastTokenId = _allTokens[lastTokenIndex];\n\n _allTokens[tokenIndex] = lastTokenId; // Move the last token to the slot of the to-delete token\n _allTokensIndex[lastTokenId] = tokenIndex; // Update the moved token's index\n\n // This also deletes the contents at the last position of the array\n _allTokens.length--;\n _allTokensIndex[tokenId] = 0;\n }\n}\n", + "sourcePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/token/ERC721/ERC721Enumerable.sol", + "ast": { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/token/ERC721/ERC721Enumerable.sol", + "exportedSymbols": { + "ERC721Enumerable": [ + 6213 + ] + }, + "id": 6214, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 5880, + "literals": [ + "solidity", + "^", + "0.5", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "0:23:52" + }, + { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/token/ERC721/IERC721Enumerable.sol", + "file": "./IERC721Enumerable.sol", + "id": 5881, + "nodeType": "ImportDirective", + "scope": 6214, + "sourceUnit": 6647, + "src": "25:33:52", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/token/ERC721/ERC721.sol", + "file": "./ERC721.sol", + "id": 5882, + "nodeType": "ImportDirective", + "scope": 6214, + "sourceUnit": 5855, + "src": "59:22:52", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/introspection/ERC165.sol", + "file": "../../introspection/ERC165.sol", + "id": 5883, + "nodeType": "ImportDirective", + "scope": 6214, + "sourceUnit": 3056, + "src": "82:40:52", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 5884, + "name": "ERC165", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 3055, + "src": "313:6:52", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC165_$3055", + "typeString": "contract ERC165" + } + }, + "id": 5885, + "nodeType": "InheritanceSpecifier", + "src": "313:6:52" + }, + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 5886, + "name": "ERC721", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 5854, + "src": "321:6:52", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC721_$5854", + "typeString": "contract ERC721" + } + }, + "id": 5887, + "nodeType": "InheritanceSpecifier", + "src": "321:6:52" + }, + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 5888, + "name": "IERC721Enumerable", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 6646, + "src": "329:17:52", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC721Enumerable_$6646", + "typeString": "contract IERC721Enumerable" + } + }, + "id": 5889, + "nodeType": "InheritanceSpecifier", + "src": "329:17:52" + } + ], + "contractDependencies": [ + 3055, + 3202, + 5854, + 6619, + 6646 + ], + "contractKind": "contract", + "documentation": "@title ERC-721 Non-Fungible Token with optional enumeration extension logic\n@dev See https://github.com/ethereum/EIPs/blob/master/EIPS/eip-721.md", + "fullyImplemented": true, + "id": 6213, + "linearizedBaseContracts": [ + 6213, + 6646, + 5854, + 6619, + 3055, + 3202 + ], + "name": "ERC721Enumerable", + "nodeType": "ContractDefinition", + "nodes": [ + { + "constant": false, + "id": 5894, + "name": "_ownedTokens", + "nodeType": "VariableDeclaration", + "scope": 6213, + "src": "406:50:52", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_uint256_$dyn_storage_$", + "typeString": "mapping(address => uint256[])" + }, + "typeName": { + "id": 5893, + "keyType": { + "id": 5890, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "414:7:52", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "406:29:52", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_uint256_$dyn_storage_$", + "typeString": "mapping(address => uint256[])" + }, + "valueType": { + "baseType": { + "id": 5891, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "425:7:52", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 5892, + "length": null, + "nodeType": "ArrayTypeName", + "src": "425:9:52", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + } + }, + "value": null, + "visibility": "private" + }, + { + "constant": false, + "id": 5898, + "name": "_ownedTokensIndex", + "nodeType": "VariableDeclaration", + "scope": 6213, + "src": "526:53:52", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$", + "typeString": "mapping(uint256 => uint256)" + }, + "typeName": { + "id": 5897, + "keyType": { + "id": 5895, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "534:7:52", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Mapping", + "src": "526:27:52", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$", + "typeString": "mapping(uint256 => uint256)" + }, + "valueType": { + "id": 5896, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "545:7:52", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "value": null, + "visibility": "private" + }, + { + "constant": false, + "id": 5901, + "name": "_allTokens", + "nodeType": "VariableDeclaration", + "scope": 6213, + "src": "640:28:52", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 5899, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "640:7:52", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 5900, + "length": null, + "nodeType": "ArrayTypeName", + "src": "640:9:52", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "value": null, + "visibility": "private" + }, + { + "constant": false, + "id": 5905, + "name": "_allTokensIndex", + "nodeType": "VariableDeclaration", + "scope": 6213, + "src": "739:51:52", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$", + "typeString": "mapping(uint256 => uint256)" + }, + "typeName": { + "id": 5904, + "keyType": { + "id": 5902, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "747:7:52", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Mapping", + "src": "739:27:52", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$", + "typeString": "mapping(uint256 => uint256)" + }, + "valueType": { + "id": 5903, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "758:7:52", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "value": null, + "visibility": "private" + }, + { + "constant": true, + "id": 5908, + "name": "_INTERFACE_ID_ERC721_ENUMERABLE", + "nodeType": "VariableDeclaration", + "scope": 6213, + "src": "797:68:52", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "typeName": { + "id": 5906, + "name": "bytes4", + "nodeType": "ElementaryTypeName", + "src": "797:6:52", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "value": { + "argumentTypes": null, + "hexValue": "30783738306539643633", + "id": 5907, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "855:10:52", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_2014223715_by_1", + "typeString": "int_const 2014223715" + }, + "value": "0x780e9d63" + }, + "visibility": "private" + }, + { + "body": { + "id": 5915, + "nodeType": "Block", + "src": "1154:144:52", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 5912, + "name": "_INTERFACE_ID_ERC721_ENUMERABLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5908, + "src": "1259:31:52", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + ], + "id": 5911, + "name": "_registerInterface", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3054, + "src": "1240:18:52", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes4_$returns$__$", + "typeString": "function (bytes4)" + } + }, + "id": 5913, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1240:51:52", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5914, + "nodeType": "ExpressionStatement", + "src": "1240:51:52" + } + ] + }, + "documentation": "@dev Constructor function", + "id": 5916, + "implemented": true, + "kind": "constructor", + "modifiers": [], + "name": "", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5909, + "nodeType": "ParameterList", + "parameters": [], + "src": "1144:2:52" + }, + "returnParameters": { + "id": 5910, + "nodeType": "ParameterList", + "parameters": [], + "src": "1154:0:52" + }, + "scope": 6213, + "src": "1132:166:52", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 5939, + "nodeType": "Block", + "src": "1760:93:52", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 5930, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 5926, + "name": "index", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5920, + "src": "1778:5:52", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 5928, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5918, + "src": "1796:5:52", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 5927, + "name": "balanceOf", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 5364 + ], + "referencedDeclaration": 5364, + "src": "1786:9:52", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_uint256_$", + "typeString": "function (address) view returns (uint256)" + } + }, + "id": 5929, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1786:16:52", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1778:24:52", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 5925, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6848, + 6849 + ], + "referencedDeclaration": 6848, + "src": "1770:7:52", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 5931, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1770:33:52", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5932, + "nodeType": "ExpressionStatement", + "src": "1770:33:52" + }, + { + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 5933, + "name": "_ownedTokens", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5894, + "src": "1820:12:52", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_uint256_$dyn_storage_$", + "typeString": "mapping(address => uint256[] storage ref)" + } + }, + "id": 5935, + "indexExpression": { + "argumentTypes": null, + "id": 5934, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5918, + "src": "1833:5:52", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "1820:19:52", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage", + "typeString": "uint256[] storage ref" + } + }, + "id": 5937, + "indexExpression": { + "argumentTypes": null, + "id": 5936, + "name": "index", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5920, + "src": "1840:5:52", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "1820:26:52", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 5924, + "id": 5938, + "nodeType": "Return", + "src": "1813:33:52" + } + ] + }, + "documentation": "@dev Gets the token ID at a given index of the tokens list of the requested owner\n@param owner address owning the tokens list to be accessed\n@param index uint256 representing the index to be accessed of the requested tokens list\n@return uint256 token ID at the given index of the tokens list owned by the requested address", + "id": 5940, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "tokenOfOwnerByIndex", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5921, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5918, + "name": "owner", + "nodeType": "VariableDeclaration", + "scope": 5940, + "src": "1700:13:52", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5917, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1700:7:52", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5920, + "name": "index", + "nodeType": "VariableDeclaration", + "scope": 5940, + "src": "1715:13:52", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5919, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1715:7:52", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1699:30:52" + }, + "returnParameters": { + "id": 5924, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5923, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 5940, + "src": "1751:7:52", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5922, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1751:7:52", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1750:9:52" + }, + "scope": 6213, + "src": "1671:182:52", + "stateMutability": "view", + "superFunction": 6638, + "visibility": "public" + }, + { + "body": { + "id": 5948, + "nodeType": "Block", + "src": "2058:41:52", + "statements": [ + { + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 5945, + "name": "_allTokens", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5901, + "src": "2075:10:52", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage", + "typeString": "uint256[] storage ref" + } + }, + "id": 5946, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2075:17:52", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 5944, + "id": 5947, + "nodeType": "Return", + "src": "2068:24:52" + } + ] + }, + "documentation": "@dev Gets the total amount of tokens stored by the contract\n@return uint256 representing the total amount of tokens", + "id": 5949, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "totalSupply", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5941, + "nodeType": "ParameterList", + "parameters": [], + "src": "2025:2:52" + }, + "returnParameters": { + "id": 5944, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5943, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 5949, + "src": "2049:7:52", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5942, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2049:7:52", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2048:9:52" + }, + "scope": 6213, + "src": "2005:94:52", + "stateMutability": "view", + "superFunction": 6629, + "visibility": "public" + }, + { + "body": { + "id": 5967, + "nodeType": "Block", + "src": "2503:81:52", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 5960, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 5957, + "name": "index", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5951, + "src": "2521:5:52", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 5958, + "name": "totalSupply", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 5949 + ], + "referencedDeclaration": 5949, + "src": "2529:11:52", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$", + "typeString": "function () view returns (uint256)" + } + }, + "id": 5959, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2529:13:52", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2521:21:52", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 5956, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6848, + 6849 + ], + "referencedDeclaration": 6848, + "src": "2513:7:52", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 5961, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2513:30:52", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5962, + "nodeType": "ExpressionStatement", + "src": "2513:30:52" + }, + { + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 5963, + "name": "_allTokens", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5901, + "src": "2560:10:52", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage", + "typeString": "uint256[] storage ref" + } + }, + "id": 5965, + "indexExpression": { + "argumentTypes": null, + "id": 5964, + "name": "index", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5951, + "src": "2571:5:52", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2560:17:52", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 5955, + "id": 5966, + "nodeType": "Return", + "src": "2553:24:52" + } + ] + }, + "documentation": "@dev Gets the token ID at a given index of all the tokens in this contract\nReverts if the index is greater or equal to the total number of tokens\n@param index uint256 representing the index to be accessed of the tokens list\n@return uint256 token ID at the given index of the tokens list", + "id": 5968, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "tokenByIndex", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5952, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5951, + "name": "index", + "nodeType": "VariableDeclaration", + "scope": 5968, + "src": "2458:13:52", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5950, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2458:7:52", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2457:15:52" + }, + "returnParameters": { + "id": 5955, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5954, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 5968, + "src": "2494:7:52", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5953, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2494:7:52", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2493:9:52" + }, + "scope": 6213, + "src": "2436:148:52", + "stateMutability": "view", + "superFunction": 6645, + "visibility": "public" + }, + { + "body": { + "id": 5995, + "nodeType": "Block", + "src": "3033:164:52", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 5980, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5970, + "src": "3063:4:52", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 5981, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5972, + "src": "3069:2:52", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 5982, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5974, + "src": "3073:7:52", + "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": 5977, + "name": "super", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6975, + "src": "3043:5:52", + "typeDescriptions": { + "typeIdentifier": "t_super$_ERC721Enumerable_$6213", + "typeString": "contract super ERC721Enumerable" + } + }, + "id": 5979, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "_transferFrom", + "nodeType": "MemberAccess", + "referencedDeclaration": 5790, + "src": "3043:19:52", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 5983, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3043:38:52", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5984, + "nodeType": "ExpressionStatement", + "src": "3043:38:52" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 5986, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5970, + "src": "3125:4:52", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 5987, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5974, + "src": "3131:7:52", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 5985, + "name": "_removeTokenFromOwnerEnumeration", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6163, + "src": "3092:32:52", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 5988, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3092:47:52", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5989, + "nodeType": "ExpressionStatement", + "src": "3092:47:52" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 5991, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5972, + "src": "3178:2:52", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 5992, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5974, + "src": "3182:7:52", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 5990, + "name": "_addTokenToOwnerEnumeration", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6087, + "src": "3150:27:52", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 5993, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3150:40:52", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5994, + "nodeType": "ExpressionStatement", + "src": "3150:40:52" + } + ] + }, + "documentation": "@dev Internal function to transfer ownership of a given token ID to another address.\nAs opposed to transferFrom, this imposes no restrictions on msg.sender.\n@param from current owner of the token\n@param to address to receive the ownership of the given token ID\n@param tokenId uint256 ID of the token to be transferred", + "id": 5996, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_transferFrom", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5975, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5970, + "name": "from", + "nodeType": "VariableDeclaration", + "scope": 5996, + "src": "2981:12:52", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5969, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2981:7:52", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5972, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 5996, + "src": "2995:10:52", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5971, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2995:7:52", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5974, + "name": "tokenId", + "nodeType": "VariableDeclaration", + "scope": 5996, + "src": "3007:15:52", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5973, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3007:7:52", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2980:43:52" + }, + "returnParameters": { + "id": 5976, + "nodeType": "ParameterList", + "parameters": [], + "src": "3033:0:52" + }, + "scope": 6213, + "src": "2958:239:52", + "stateMutability": "nonpayable", + "superFunction": 5790, + "visibility": "internal" + }, + { + "body": { + "id": 6019, + "nodeType": "Block", + "src": "3505:143:52", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 6006, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5998, + "src": "3527:2:52", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 6007, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6000, + "src": "3531:7:52", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 6003, + "name": "super", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6975, + "src": "3515:5:52", + "typeDescriptions": { + "typeIdentifier": "t_super$_ERC721Enumerable_$6213", + "typeString": "contract super ERC721Enumerable" + } + }, + "id": 6005, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "_mint", + "nodeType": "MemberAccess", + "referencedDeclaration": 5666, + "src": "3515:11:52", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 6008, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3515:24:52", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 6009, + "nodeType": "ExpressionStatement", + "src": "3515:24:52" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 6011, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5998, + "src": "3578:2:52", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 6012, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6000, + "src": "3582:7:52", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 6010, + "name": "_addTokenToOwnerEnumeration", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6087, + "src": "3550:27:52", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 6013, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3550:40:52", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 6014, + "nodeType": "ExpressionStatement", + "src": "3550:40:52" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 6016, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6000, + "src": "3633:7:52", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 6015, + "name": "_addTokenToAllTokensEnumeration", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6106, + "src": "3601:31:52", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$__$", + "typeString": "function (uint256)" + } + }, + "id": 6017, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3601:40:52", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 6018, + "nodeType": "ExpressionStatement", + "src": "3601:40:52" + } + ] + }, + "documentation": "@dev Internal function to mint a new token\nReverts if the given token ID already exists\n@param to address the beneficiary that will own the minted token\n@param tokenId uint256 ID of the token to be minted", + "id": 6020, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_mint", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6001, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5998, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 6020, + "src": "3467:10:52", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5997, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3467:7:52", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 6000, + "name": "tokenId", + "nodeType": "VariableDeclaration", + "scope": 6020, + "src": "3479:15:52", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5999, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3479:7:52", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3466:29:52" + }, + "returnParameters": { + "id": 6002, + "nodeType": "ParameterList", + "parameters": [], + "src": "3505:0:52" + }, + "scope": 6213, + "src": "3452:196:52", + "stateMutability": "nonpayable", + "superFunction": 5666, + "visibility": "internal" + }, + { + "body": { + "id": 6049, + "nodeType": "Block", + "src": "3976:308:52", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 6030, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6022, + "src": "3998:5:52", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 6031, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6024, + "src": "4005:7:52", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 6027, + "name": "super", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6975, + "src": "3986:5:52", + "typeDescriptions": { + "typeIdentifier": "t_super$_ERC721Enumerable_$6213", + "typeString": "contract super ERC721Enumerable" + } + }, + "id": 6029, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "_burn", + "nodeType": "MemberAccess", + "referencedDeclaration": 5713, + "src": "3986:11:52", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 6032, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3986:27:52", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 6033, + "nodeType": "ExpressionStatement", + "src": "3986:27:52" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 6035, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6022, + "src": "4057:5:52", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 6036, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6024, + "src": "4064:7:52", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 6034, + "name": "_removeTokenFromOwnerEnumeration", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6163, + "src": "4024:32:52", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 6037, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4024:48:52", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 6038, + "nodeType": "ExpressionStatement", + "src": "4024:48:52" + }, + { + "expression": { + "argumentTypes": null, + "id": 6043, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 6039, + "name": "_ownedTokensIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5898, + "src": "4191:17:52", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$", + "typeString": "mapping(uint256 => uint256)" + } + }, + "id": 6041, + "indexExpression": { + "argumentTypes": null, + "id": 6040, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6024, + "src": "4209:7:52", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "4191:26:52", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "30", + "id": 6042, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4220:1:52", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "4191:30:52", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 6044, + "nodeType": "ExpressionStatement", + "src": "4191:30:52" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 6046, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6024, + "src": "4269:7:52", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 6045, + "name": "_removeTokenFromAllTokensEnumeration", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6212, + "src": "4232:36:52", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$__$", + "typeString": "function (uint256)" + } + }, + "id": 6047, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4232:45:52", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 6048, + "nodeType": "ExpressionStatement", + "src": "4232:45:52" + } + ] + }, + "documentation": "@dev Internal function to burn a specific token\nReverts if the token does not exist\nDeprecated, use _burn(uint256) instead\n@param owner owner of the token to burn\n@param tokenId uint256 ID of the token being burned", + "id": 6050, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_burn", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6025, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6022, + "name": "owner", + "nodeType": "VariableDeclaration", + "scope": 6050, + "src": "3935:13:52", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6021, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3935:7:52", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 6024, + "name": "tokenId", + "nodeType": "VariableDeclaration", + "scope": 6050, + "src": "3950:15:52", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6023, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3950:7:52", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3934:32:52" + }, + "returnParameters": { + "id": 6026, + "nodeType": "ParameterList", + "parameters": [], + "src": "3976:0:52" + }, + "scope": 6213, + "src": "3920:364:52", + "stateMutability": "nonpayable", + "superFunction": 5713, + "visibility": "internal" + }, + { + "body": { + "id": 6062, + "nodeType": "Block", + "src": "4569:43:52", + "statements": [ + { + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 6058, + "name": "_ownedTokens", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5894, + "src": "4586:12:52", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_uint256_$dyn_storage_$", + "typeString": "mapping(address => uint256[] storage ref)" + } + }, + "id": 6060, + "indexExpression": { + "argumentTypes": null, + "id": 6059, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6052, + "src": "4599:5:52", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "4586:19:52", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage", + "typeString": "uint256[] storage ref" + } + }, + "functionReturnParameters": 6057, + "id": 6061, + "nodeType": "Return", + "src": "4579:26:52" + } + ] + }, + "documentation": "@dev Gets the list of token IDs of the requested owner\n@param owner address owning the tokens\n@return uint256[] List of token IDs owned by the requested address", + "id": 6063, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_tokensOfOwner", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6053, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6052, + "name": "owner", + "nodeType": "VariableDeclaration", + "scope": 6063, + "src": "4512:13:52", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6051, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4512:7:52", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4511:15:52" + }, + "returnParameters": { + "id": 6057, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6056, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 6063, + "src": "4550:17:52", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 6054, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4550:7:52", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 6055, + "length": null, + "nodeType": "ArrayTypeName", + "src": "4550:9:52", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4549:19:52" + }, + "scope": 6213, + "src": "4488:124:52", + "stateMutability": "view", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 6086, + "nodeType": "Block", + "src": "4980:109:52", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 6077, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 6070, + "name": "_ownedTokensIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5898, + "src": "4990:17:52", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$", + "typeString": "mapping(uint256 => uint256)" + } + }, + "id": 6072, + "indexExpression": { + "argumentTypes": null, + "id": 6071, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6067, + "src": "5008:7:52", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "4990:26:52", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 6073, + "name": "_ownedTokens", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5894, + "src": "5019:12:52", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_uint256_$dyn_storage_$", + "typeString": "mapping(address => uint256[] storage ref)" + } + }, + "id": 6075, + "indexExpression": { + "argumentTypes": null, + "id": 6074, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6065, + "src": "5032:2:52", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "5019:16:52", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage", + "typeString": "uint256[] storage ref" + } + }, + "id": 6076, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "5019:23:52", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4990:52:52", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 6078, + "nodeType": "ExpressionStatement", + "src": "4990:52:52" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 6083, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6067, + "src": "5074:7:52", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 6079, + "name": "_ownedTokens", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5894, + "src": "5052:12:52", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_uint256_$dyn_storage_$", + "typeString": "mapping(address => uint256[] storage ref)" + } + }, + "id": 6081, + "indexExpression": { + "argumentTypes": null, + "id": 6080, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6065, + "src": "5065:2:52", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "5052:16:52", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage", + "typeString": "uint256[] storage ref" + } + }, + "id": 6082, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "push", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "5052:21:52", + "typeDescriptions": { + "typeIdentifier": "t_function_arraypush_nonpayable$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256) returns (uint256)" + } + }, + "id": 6084, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5052:30:52", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 6085, + "nodeType": "ExpressionStatement", + "src": "5052:30:52" + } + ] + }, + "documentation": "@dev Private function to add a token to this extension's ownership-tracking data structures.\n@param to address representing the new owner of the given token ID\n@param tokenId uint256 ID of the token to be added to the tokens list of the given address", + "id": 6087, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_addTokenToOwnerEnumeration", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6068, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6065, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 6087, + "src": "4943:10:52", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6064, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4943:7:52", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 6067, + "name": "tokenId", + "nodeType": "VariableDeclaration", + "scope": 6087, + "src": "4955:15:52", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6066, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4955:7:52", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4942:29:52" + }, + "returnParameters": { + "id": 6069, + "nodeType": "ParameterList", + "parameters": [], + "src": "4980:0:52" + }, + "scope": 6213, + "src": "4906:183:52", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "private" + }, + { + "body": { + "id": 6105, + "nodeType": "Block", + "src": "5350:95:52", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 6097, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 6092, + "name": "_allTokensIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5905, + "src": "5360:15:52", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$", + "typeString": "mapping(uint256 => uint256)" + } + }, + "id": 6094, + "indexExpression": { + "argumentTypes": null, + "id": 6093, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6089, + "src": "5376:7:52", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "5360:24:52", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 6095, + "name": "_allTokens", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5901, + "src": "5387:10:52", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage", + "typeString": "uint256[] storage ref" + } + }, + "id": 6096, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "5387:17:52", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "5360:44:52", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 6098, + "nodeType": "ExpressionStatement", + "src": "5360:44:52" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 6102, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6089, + "src": "5430:7:52", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 6099, + "name": "_allTokens", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5901, + "src": "5414:10:52", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage", + "typeString": "uint256[] storage ref" + } + }, + "id": 6101, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "push", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "5414:15:52", + "typeDescriptions": { + "typeIdentifier": "t_function_arraypush_nonpayable$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256) returns (uint256)" + } + }, + "id": 6103, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5414:24:52", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 6104, + "nodeType": "ExpressionStatement", + "src": "5414:24:52" + } + ] + }, + "documentation": "@dev Private function to add a token to this extension's token tracking data structures.\n@param tokenId uint256 ID of the token to be added to the tokens list", + "id": 6106, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_addTokenToAllTokensEnumeration", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6090, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6089, + "name": "tokenId", + "nodeType": "VariableDeclaration", + "scope": 6106, + "src": "5325:15:52", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6088, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5325:7:52", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "5324:17:52" + }, + "returnParameters": { + "id": 6091, + "nodeType": "ParameterList", + "parameters": [], + "src": "5350:0:52" + }, + "scope": 6213, + "src": "5284:161:52", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "private" + }, + { + "body": { + "id": 6162, + "nodeType": "Block", + "src": "6141:1047:52", + "statements": [ + { + "assignments": [ + 6114 + ], + "declarations": [ + { + "constant": false, + "id": 6114, + "name": "lastTokenIndex", + "nodeType": "VariableDeclaration", + "scope": 6162, + "src": "6322:22:52", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6113, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6322:7:52", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 6122, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "31", + "id": 6120, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6377:1:52", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + } + ], + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 6115, + "name": "_ownedTokens", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5894, + "src": "6347:12:52", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_uint256_$dyn_storage_$", + "typeString": "mapping(address => uint256[] storage ref)" + } + }, + "id": 6117, + "indexExpression": { + "argumentTypes": null, + "id": 6116, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6108, + "src": "6360:4:52", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "6347:18:52", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage", + "typeString": "uint256[] storage ref" + } + }, + "id": 6118, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "6347:25:52", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 6119, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sub", + "nodeType": "MemberAccess", + "referencedDeclaration": 3437, + "src": "6347:29:52", + "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": 6121, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6347:32:52", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "6322:57:52" + }, + { + "assignments": [ + 6124 + ], + "declarations": [ + { + "constant": false, + "id": 6124, + "name": "tokenIndex", + "nodeType": "VariableDeclaration", + "scope": 6162, + "src": "6389:18:52", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6123, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6389:7:52", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 6128, + "initialValue": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 6125, + "name": "_ownedTokensIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5898, + "src": "6410:17:52", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$", + "typeString": "mapping(uint256 => uint256)" + } + }, + "id": 6127, + "indexExpression": { + "argumentTypes": null, + "id": 6126, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6110, + "src": "6428:7:52", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "6410:26:52", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "6389:47:52" + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6131, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 6129, + "name": "tokenIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6124, + "src": "6540:10:52", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "id": 6130, + "name": "lastTokenIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6114, + "src": "6554:14:52", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "6540:28:52", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 6155, + "nodeType": "IfStatement", + "src": "6536:323:52", + "trueBody": { + "id": 6154, + "nodeType": "Block", + "src": "6570:289:52", + "statements": [ + { + "assignments": [ + 6133 + ], + "declarations": [ + { + "constant": false, + "id": 6133, + "name": "lastTokenId", + "nodeType": "VariableDeclaration", + "scope": 6154, + "src": "6584:19:52", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6132, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6584:7:52", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 6139, + "initialValue": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 6134, + "name": "_ownedTokens", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5894, + "src": "6606:12:52", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_uint256_$dyn_storage_$", + "typeString": "mapping(address => uint256[] storage ref)" + } + }, + "id": 6136, + "indexExpression": { + "argumentTypes": null, + "id": 6135, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6108, + "src": "6619:4:52", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "6606:18:52", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage", + "typeString": "uint256[] storage ref" + } + }, + "id": 6138, + "indexExpression": { + "argumentTypes": null, + "id": 6137, + "name": "lastTokenIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6114, + "src": "6625:14:52", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "6606:34:52", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "6584:56:52" + }, + { + "expression": { + "argumentTypes": null, + "id": 6146, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 6140, + "name": "_ownedTokens", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5894, + "src": "6655:12:52", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_uint256_$dyn_storage_$", + "typeString": "mapping(address => uint256[] storage ref)" + } + }, + "id": 6143, + "indexExpression": { + "argumentTypes": null, + "id": 6141, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6108, + "src": "6668:4:52", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "6655:18:52", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage", + "typeString": "uint256[] storage ref" + } + }, + "id": 6144, + "indexExpression": { + "argumentTypes": null, + "id": 6142, + "name": "tokenIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6124, + "src": "6674:10:52", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "6655:30:52", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 6145, + "name": "lastTokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6133, + "src": "6688:11:52", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "6655:44:52", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 6147, + "nodeType": "ExpressionStatement", + "src": "6655:44:52" + }, + { + "expression": { + "argumentTypes": null, + "id": 6152, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 6148, + "name": "_ownedTokensIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5898, + "src": "6771:17:52", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$", + "typeString": "mapping(uint256 => uint256)" + } + }, + "id": 6150, + "indexExpression": { + "argumentTypes": null, + "id": 6149, + "name": "lastTokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6133, + "src": "6789:11:52", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "6771:30:52", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 6151, + "name": "tokenIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6124, + "src": "6804:10:52", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "6771:43:52", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 6153, + "nodeType": "ExpressionStatement", + "src": "6771:43:52" + } + ] + } + }, + { + "expression": { + "argumentTypes": null, + "id": 6160, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "--", + "prefix": false, + "src": "6945:27:52", + "subExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 6156, + "name": "_ownedTokens", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5894, + "src": "6945:12:52", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_uint256_$dyn_storage_$", + "typeString": "mapping(address => uint256[] storage ref)" + } + }, + "id": 6158, + "indexExpression": { + "argumentTypes": null, + "id": 6157, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6108, + "src": "6958:4:52", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "6945:18:52", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage", + "typeString": "uint256[] storage ref" + } + }, + "id": 6159, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "6945:25:52", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 6161, + "nodeType": "ExpressionStatement", + "src": "6945:27:52" + } + ] + }, + "documentation": "@dev Private function to remove a token from this extension's ownership-tracking data structures. Note that\nwhile the token is not assigned a new owner, the _ownedTokensIndex mapping is _not_ updated: this allows for\ngas optimizations e.g. when performing a transfer operation (avoiding double writes).\nThis has O(1) time complexity, but alters the order of the _ownedTokens array.\n@param from address representing the previous owner of the given token ID\n@param tokenId uint256 ID of the token to be removed from the tokens list of the given address", + "id": 6163, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_removeTokenFromOwnerEnumeration", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6111, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6108, + "name": "from", + "nodeType": "VariableDeclaration", + "scope": 6163, + "src": "6102:12:52", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6107, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6102:7:52", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 6110, + "name": "tokenId", + "nodeType": "VariableDeclaration", + "scope": 6163, + "src": "6116:15:52", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6109, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6116:7:52", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "6101:31:52" + }, + "returnParameters": { + "id": 6112, + "nodeType": "ParameterList", + "parameters": [], + "src": "6141:0:52" + }, + "scope": 6213, + "src": "6060:1128:52", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "private" + }, + { + "body": { + "id": 6211, + "nodeType": "Block", + "src": "7547:993:52", + "statements": [ + { + "assignments": [ + 6169 + ], + "declarations": [ + { + "constant": false, + "id": 6169, + "name": "lastTokenIndex", + "nodeType": "VariableDeclaration", + "scope": 6211, + "src": "7725:22:52", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6168, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7725:7:52", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 6175, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "31", + "id": 6173, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "7772:1:52", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + } + ], + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 6170, + "name": "_allTokens", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5901, + "src": "7750:10:52", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage", + "typeString": "uint256[] storage ref" + } + }, + "id": 6171, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "7750:17:52", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 6172, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sub", + "nodeType": "MemberAccess", + "referencedDeclaration": 3437, + "src": "7750:21:52", + "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": 6174, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7750:24:52", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "7725:49:52" + }, + { + "assignments": [ + 6177 + ], + "declarations": [ + { + "constant": false, + "id": 6177, + "name": "tokenIndex", + "nodeType": "VariableDeclaration", + "scope": 6211, + "src": "7784:18:52", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6176, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7784:7:52", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 6181, + "initialValue": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 6178, + "name": "_allTokensIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5905, + "src": "7805:15:52", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$", + "typeString": "mapping(uint256 => uint256)" + } + }, + "id": 6180, + "indexExpression": { + "argumentTypes": null, + "id": 6179, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6165, + "src": "7821:7:52", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "7805:24:52", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "7784:45:52" + }, + { + "assignments": [ + 6183 + ], + "declarations": [ + { + "constant": false, + "id": 6183, + "name": "lastTokenId", + "nodeType": "VariableDeclaration", + "scope": 6211, + "src": "8151:19:52", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6182, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8151:7:52", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 6187, + "initialValue": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 6184, + "name": "_allTokens", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5901, + "src": "8173:10:52", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage", + "typeString": "uint256[] storage ref" + } + }, + "id": 6186, + "indexExpression": { + "argumentTypes": null, + "id": 6185, + "name": "lastTokenIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6169, + "src": "8184:14:52", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "8173:26:52", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "8151:48:52" + }, + { + "expression": { + "argumentTypes": null, + "id": 6192, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 6188, + "name": "_allTokens", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5901, + "src": "8210:10:52", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage", + "typeString": "uint256[] storage ref" + } + }, + "id": 6190, + "indexExpression": { + "argumentTypes": null, + "id": 6189, + "name": "tokenIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6177, + "src": "8221:10:52", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "8210:22:52", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 6191, + "name": "lastTokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6183, + "src": "8235:11:52", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "8210:36:52", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 6193, + "nodeType": "ExpressionStatement", + "src": "8210:36:52" + }, + { + "expression": { + "argumentTypes": null, + "id": 6198, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 6194, + "name": "_allTokensIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5905, + "src": "8314:15:52", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$", + "typeString": "mapping(uint256 => uint256)" + } + }, + "id": 6196, + "indexExpression": { + "argumentTypes": null, + "id": 6195, + "name": "lastTokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6183, + "src": "8330:11:52", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "8314:28:52", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 6197, + "name": "tokenIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6177, + "src": "8345:10:52", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "8314:41:52", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 6199, + "nodeType": "ExpressionStatement", + "src": "8314:41:52" + }, + { + "expression": { + "argumentTypes": null, + "id": 6203, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "--", + "prefix": false, + "src": "8476:19:52", + "subExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 6200, + "name": "_allTokens", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5901, + "src": "8476:10:52", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage", + "typeString": "uint256[] storage ref" + } + }, + "id": 6202, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "8476:17:52", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 6204, + "nodeType": "ExpressionStatement", + "src": "8476:19:52" + }, + { + "expression": { + "argumentTypes": null, + "id": 6209, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 6205, + "name": "_allTokensIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5905, + "src": "8505:15:52", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$", + "typeString": "mapping(uint256 => uint256)" + } + }, + "id": 6207, + "indexExpression": { + "argumentTypes": null, + "id": 6206, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6165, + "src": "8521:7:52", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "8505:24:52", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "30", + "id": 6208, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8532:1:52", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "8505:28:52", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 6210, + "nodeType": "ExpressionStatement", + "src": "8505:28:52" + } + ] + }, + "documentation": "@dev Private function to remove a token from this extension's token tracking data structures.\nThis has O(1) time complexity, but alters the order of the _allTokens array.\n@param tokenId uint256 ID of the token to be removed from the tokens list", + "id": 6212, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_removeTokenFromAllTokensEnumeration", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6166, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6165, + "name": "tokenId", + "nodeType": "VariableDeclaration", + "scope": 6212, + "src": "7522:15:52", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6164, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7522:7:52", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "7521:17:52" + }, + "returnParameters": { + "id": 6167, + "nodeType": "ParameterList", + "parameters": [], + "src": "7547:0:52" + }, + "scope": 6213, + "src": "7476:1064:52", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "private" + } + ], + "scope": 6214, + "src": "284:8258:52" + } + ], + "src": "0:8543:52" + }, + "legacyAST": { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/token/ERC721/ERC721Enumerable.sol", + "exportedSymbols": { + "ERC721Enumerable": [ + 6213 + ] + }, + "id": 6214, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 5880, + "literals": [ + "solidity", + "^", + "0.5", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "0:23:52" + }, + { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/token/ERC721/IERC721Enumerable.sol", + "file": "./IERC721Enumerable.sol", + "id": 5881, + "nodeType": "ImportDirective", + "scope": 6214, + "sourceUnit": 6647, + "src": "25:33:52", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/token/ERC721/ERC721.sol", + "file": "./ERC721.sol", + "id": 5882, + "nodeType": "ImportDirective", + "scope": 6214, + "sourceUnit": 5855, + "src": "59:22:52", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/introspection/ERC165.sol", + "file": "../../introspection/ERC165.sol", + "id": 5883, + "nodeType": "ImportDirective", + "scope": 6214, + "sourceUnit": 3056, + "src": "82:40:52", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 5884, + "name": "ERC165", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 3055, + "src": "313:6:52", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC165_$3055", + "typeString": "contract ERC165" + } + }, + "id": 5885, + "nodeType": "InheritanceSpecifier", + "src": "313:6:52" + }, + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 5886, + "name": "ERC721", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 5854, + "src": "321:6:52", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC721_$5854", + "typeString": "contract ERC721" + } + }, + "id": 5887, + "nodeType": "InheritanceSpecifier", + "src": "321:6:52" + }, + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 5888, + "name": "IERC721Enumerable", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 6646, + "src": "329:17:52", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC721Enumerable_$6646", + "typeString": "contract IERC721Enumerable" + } + }, + "id": 5889, + "nodeType": "InheritanceSpecifier", + "src": "329:17:52" + } + ], + "contractDependencies": [ + 3055, + 3202, + 5854, + 6619, + 6646 + ], + "contractKind": "contract", + "documentation": "@title ERC-721 Non-Fungible Token with optional enumeration extension logic\n@dev See https://github.com/ethereum/EIPs/blob/master/EIPS/eip-721.md", + "fullyImplemented": true, + "id": 6213, + "linearizedBaseContracts": [ + 6213, + 6646, + 5854, + 6619, + 3055, + 3202 + ], + "name": "ERC721Enumerable", + "nodeType": "ContractDefinition", + "nodes": [ + { + "constant": false, + "id": 5894, + "name": "_ownedTokens", + "nodeType": "VariableDeclaration", + "scope": 6213, + "src": "406:50:52", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_uint256_$dyn_storage_$", + "typeString": "mapping(address => uint256[])" + }, + "typeName": { + "id": 5893, + "keyType": { + "id": 5890, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "414:7:52", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "406:29:52", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_uint256_$dyn_storage_$", + "typeString": "mapping(address => uint256[])" + }, + "valueType": { + "baseType": { + "id": 5891, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "425:7:52", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 5892, + "length": null, + "nodeType": "ArrayTypeName", + "src": "425:9:52", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + } + }, + "value": null, + "visibility": "private" + }, + { + "constant": false, + "id": 5898, + "name": "_ownedTokensIndex", + "nodeType": "VariableDeclaration", + "scope": 6213, + "src": "526:53:52", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$", + "typeString": "mapping(uint256 => uint256)" + }, + "typeName": { + "id": 5897, + "keyType": { + "id": 5895, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "534:7:52", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Mapping", + "src": "526:27:52", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$", + "typeString": "mapping(uint256 => uint256)" + }, + "valueType": { + "id": 5896, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "545:7:52", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "value": null, + "visibility": "private" + }, + { + "constant": false, + "id": 5901, + "name": "_allTokens", + "nodeType": "VariableDeclaration", + "scope": 6213, + "src": "640:28:52", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 5899, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "640:7:52", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 5900, + "length": null, + "nodeType": "ArrayTypeName", + "src": "640:9:52", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "value": null, + "visibility": "private" + }, + { + "constant": false, + "id": 5905, + "name": "_allTokensIndex", + "nodeType": "VariableDeclaration", + "scope": 6213, + "src": "739:51:52", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$", + "typeString": "mapping(uint256 => uint256)" + }, + "typeName": { + "id": 5904, + "keyType": { + "id": 5902, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "747:7:52", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Mapping", + "src": "739:27:52", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$", + "typeString": "mapping(uint256 => uint256)" + }, + "valueType": { + "id": 5903, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "758:7:52", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "value": null, + "visibility": "private" + }, + { + "constant": true, + "id": 5908, + "name": "_INTERFACE_ID_ERC721_ENUMERABLE", + "nodeType": "VariableDeclaration", + "scope": 6213, + "src": "797:68:52", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "typeName": { + "id": 5906, + "name": "bytes4", + "nodeType": "ElementaryTypeName", + "src": "797:6:52", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "value": { + "argumentTypes": null, + "hexValue": "30783738306539643633", + "id": 5907, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "855:10:52", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_2014223715_by_1", + "typeString": "int_const 2014223715" + }, + "value": "0x780e9d63" + }, + "visibility": "private" + }, + { + "body": { + "id": 5915, + "nodeType": "Block", + "src": "1154:144:52", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 5912, + "name": "_INTERFACE_ID_ERC721_ENUMERABLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5908, + "src": "1259:31:52", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + ], + "id": 5911, + "name": "_registerInterface", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3054, + "src": "1240:18:52", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes4_$returns$__$", + "typeString": "function (bytes4)" + } + }, + "id": 5913, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1240:51:52", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5914, + "nodeType": "ExpressionStatement", + "src": "1240:51:52" + } + ] + }, + "documentation": "@dev Constructor function", + "id": 5916, + "implemented": true, + "kind": "constructor", + "modifiers": [], + "name": "", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5909, + "nodeType": "ParameterList", + "parameters": [], + "src": "1144:2:52" + }, + "returnParameters": { + "id": 5910, + "nodeType": "ParameterList", + "parameters": [], + "src": "1154:0:52" + }, + "scope": 6213, + "src": "1132:166:52", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 5939, + "nodeType": "Block", + "src": "1760:93:52", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 5930, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 5926, + "name": "index", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5920, + "src": "1778:5:52", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 5928, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5918, + "src": "1796:5:52", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 5927, + "name": "balanceOf", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 5364 + ], + "referencedDeclaration": 5364, + "src": "1786:9:52", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_uint256_$", + "typeString": "function (address) view returns (uint256)" + } + }, + "id": 5929, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1786:16:52", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1778:24:52", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 5925, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6848, + 6849 + ], + "referencedDeclaration": 6848, + "src": "1770:7:52", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 5931, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1770:33:52", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5932, + "nodeType": "ExpressionStatement", + "src": "1770:33:52" + }, + { + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 5933, + "name": "_ownedTokens", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5894, + "src": "1820:12:52", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_uint256_$dyn_storage_$", + "typeString": "mapping(address => uint256[] storage ref)" + } + }, + "id": 5935, + "indexExpression": { + "argumentTypes": null, + "id": 5934, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5918, + "src": "1833:5:52", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "1820:19:52", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage", + "typeString": "uint256[] storage ref" + } + }, + "id": 5937, + "indexExpression": { + "argumentTypes": null, + "id": 5936, + "name": "index", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5920, + "src": "1840:5:52", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "1820:26:52", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 5924, + "id": 5938, + "nodeType": "Return", + "src": "1813:33:52" + } + ] + }, + "documentation": "@dev Gets the token ID at a given index of the tokens list of the requested owner\n@param owner address owning the tokens list to be accessed\n@param index uint256 representing the index to be accessed of the requested tokens list\n@return uint256 token ID at the given index of the tokens list owned by the requested address", + "id": 5940, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "tokenOfOwnerByIndex", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5921, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5918, + "name": "owner", + "nodeType": "VariableDeclaration", + "scope": 5940, + "src": "1700:13:52", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5917, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1700:7:52", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5920, + "name": "index", + "nodeType": "VariableDeclaration", + "scope": 5940, + "src": "1715:13:52", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5919, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1715:7:52", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1699:30:52" + }, + "returnParameters": { + "id": 5924, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5923, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 5940, + "src": "1751:7:52", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5922, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1751:7:52", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1750:9:52" + }, + "scope": 6213, + "src": "1671:182:52", + "stateMutability": "view", + "superFunction": 6638, + "visibility": "public" + }, + { + "body": { + "id": 5948, + "nodeType": "Block", + "src": "2058:41:52", + "statements": [ + { + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 5945, + "name": "_allTokens", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5901, + "src": "2075:10:52", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage", + "typeString": "uint256[] storage ref" + } + }, + "id": 5946, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2075:17:52", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 5944, + "id": 5947, + "nodeType": "Return", + "src": "2068:24:52" + } + ] + }, + "documentation": "@dev Gets the total amount of tokens stored by the contract\n@return uint256 representing the total amount of tokens", + "id": 5949, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "totalSupply", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5941, + "nodeType": "ParameterList", + "parameters": [], + "src": "2025:2:52" + }, + "returnParameters": { + "id": 5944, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5943, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 5949, + "src": "2049:7:52", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5942, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2049:7:52", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2048:9:52" + }, + "scope": 6213, + "src": "2005:94:52", + "stateMutability": "view", + "superFunction": 6629, + "visibility": "public" + }, + { + "body": { + "id": 5967, + "nodeType": "Block", + "src": "2503:81:52", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 5960, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 5957, + "name": "index", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5951, + "src": "2521:5:52", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 5958, + "name": "totalSupply", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 5949 + ], + "referencedDeclaration": 5949, + "src": "2529:11:52", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$", + "typeString": "function () view returns (uint256)" + } + }, + "id": 5959, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2529:13:52", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2521:21:52", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 5956, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6848, + 6849 + ], + "referencedDeclaration": 6848, + "src": "2513:7:52", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 5961, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2513:30:52", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5962, + "nodeType": "ExpressionStatement", + "src": "2513:30:52" + }, + { + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 5963, + "name": "_allTokens", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5901, + "src": "2560:10:52", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage", + "typeString": "uint256[] storage ref" + } + }, + "id": 5965, + "indexExpression": { + "argumentTypes": null, + "id": 5964, + "name": "index", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5951, + "src": "2571:5:52", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2560:17:52", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 5955, + "id": 5966, + "nodeType": "Return", + "src": "2553:24:52" + } + ] + }, + "documentation": "@dev Gets the token ID at a given index of all the tokens in this contract\nReverts if the index is greater or equal to the total number of tokens\n@param index uint256 representing the index to be accessed of the tokens list\n@return uint256 token ID at the given index of the tokens list", + "id": 5968, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "tokenByIndex", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5952, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5951, + "name": "index", + "nodeType": "VariableDeclaration", + "scope": 5968, + "src": "2458:13:52", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5950, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2458:7:52", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2457:15:52" + }, + "returnParameters": { + "id": 5955, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5954, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 5968, + "src": "2494:7:52", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5953, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2494:7:52", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2493:9:52" + }, + "scope": 6213, + "src": "2436:148:52", + "stateMutability": "view", + "superFunction": 6645, + "visibility": "public" + }, + { + "body": { + "id": 5995, + "nodeType": "Block", + "src": "3033:164:52", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 5980, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5970, + "src": "3063:4:52", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 5981, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5972, + "src": "3069:2:52", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 5982, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5974, + "src": "3073:7:52", + "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": 5977, + "name": "super", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6975, + "src": "3043:5:52", + "typeDescriptions": { + "typeIdentifier": "t_super$_ERC721Enumerable_$6213", + "typeString": "contract super ERC721Enumerable" + } + }, + "id": 5979, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "_transferFrom", + "nodeType": "MemberAccess", + "referencedDeclaration": 5790, + "src": "3043:19:52", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 5983, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3043:38:52", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5984, + "nodeType": "ExpressionStatement", + "src": "3043:38:52" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 5986, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5970, + "src": "3125:4:52", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 5987, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5974, + "src": "3131:7:52", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 5985, + "name": "_removeTokenFromOwnerEnumeration", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6163, + "src": "3092:32:52", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 5988, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3092:47:52", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5989, + "nodeType": "ExpressionStatement", + "src": "3092:47:52" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 5991, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5972, + "src": "3178:2:52", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 5992, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5974, + "src": "3182:7:52", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 5990, + "name": "_addTokenToOwnerEnumeration", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6087, + "src": "3150:27:52", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 5993, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3150:40:52", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5994, + "nodeType": "ExpressionStatement", + "src": "3150:40:52" + } + ] + }, + "documentation": "@dev Internal function to transfer ownership of a given token ID to another address.\nAs opposed to transferFrom, this imposes no restrictions on msg.sender.\n@param from current owner of the token\n@param to address to receive the ownership of the given token ID\n@param tokenId uint256 ID of the token to be transferred", + "id": 5996, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_transferFrom", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5975, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5970, + "name": "from", + "nodeType": "VariableDeclaration", + "scope": 5996, + "src": "2981:12:52", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5969, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2981:7:52", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5972, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 5996, + "src": "2995:10:52", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5971, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2995:7:52", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5974, + "name": "tokenId", + "nodeType": "VariableDeclaration", + "scope": 5996, + "src": "3007:15:52", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5973, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3007:7:52", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2980:43:52" + }, + "returnParameters": { + "id": 5976, + "nodeType": "ParameterList", + "parameters": [], + "src": "3033:0:52" + }, + "scope": 6213, + "src": "2958:239:52", + "stateMutability": "nonpayable", + "superFunction": 5790, + "visibility": "internal" + }, + { + "body": { + "id": 6019, + "nodeType": "Block", + "src": "3505:143:52", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 6006, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5998, + "src": "3527:2:52", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 6007, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6000, + "src": "3531:7:52", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 6003, + "name": "super", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6975, + "src": "3515:5:52", + "typeDescriptions": { + "typeIdentifier": "t_super$_ERC721Enumerable_$6213", + "typeString": "contract super ERC721Enumerable" + } + }, + "id": 6005, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "_mint", + "nodeType": "MemberAccess", + "referencedDeclaration": 5666, + "src": "3515:11:52", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 6008, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3515:24:52", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 6009, + "nodeType": "ExpressionStatement", + "src": "3515:24:52" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 6011, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5998, + "src": "3578:2:52", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 6012, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6000, + "src": "3582:7:52", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 6010, + "name": "_addTokenToOwnerEnumeration", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6087, + "src": "3550:27:52", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 6013, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3550:40:52", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 6014, + "nodeType": "ExpressionStatement", + "src": "3550:40:52" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 6016, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6000, + "src": "3633:7:52", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 6015, + "name": "_addTokenToAllTokensEnumeration", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6106, + "src": "3601:31:52", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$__$", + "typeString": "function (uint256)" + } + }, + "id": 6017, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3601:40:52", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 6018, + "nodeType": "ExpressionStatement", + "src": "3601:40:52" + } + ] + }, + "documentation": "@dev Internal function to mint a new token\nReverts if the given token ID already exists\n@param to address the beneficiary that will own the minted token\n@param tokenId uint256 ID of the token to be minted", + "id": 6020, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_mint", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6001, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5998, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 6020, + "src": "3467:10:52", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5997, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3467:7:52", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 6000, + "name": "tokenId", + "nodeType": "VariableDeclaration", + "scope": 6020, + "src": "3479:15:52", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5999, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3479:7:52", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3466:29:52" + }, + "returnParameters": { + "id": 6002, + "nodeType": "ParameterList", + "parameters": [], + "src": "3505:0:52" + }, + "scope": 6213, + "src": "3452:196:52", + "stateMutability": "nonpayable", + "superFunction": 5666, + "visibility": "internal" + }, + { + "body": { + "id": 6049, + "nodeType": "Block", + "src": "3976:308:52", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 6030, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6022, + "src": "3998:5:52", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 6031, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6024, + "src": "4005:7:52", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 6027, + "name": "super", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6975, + "src": "3986:5:52", + "typeDescriptions": { + "typeIdentifier": "t_super$_ERC721Enumerable_$6213", + "typeString": "contract super ERC721Enumerable" + } + }, + "id": 6029, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "_burn", + "nodeType": "MemberAccess", + "referencedDeclaration": 5713, + "src": "3986:11:52", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 6032, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3986:27:52", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 6033, + "nodeType": "ExpressionStatement", + "src": "3986:27:52" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 6035, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6022, + "src": "4057:5:52", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 6036, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6024, + "src": "4064:7:52", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 6034, + "name": "_removeTokenFromOwnerEnumeration", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6163, + "src": "4024:32:52", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 6037, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4024:48:52", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 6038, + "nodeType": "ExpressionStatement", + "src": "4024:48:52" + }, + { + "expression": { + "argumentTypes": null, + "id": 6043, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 6039, + "name": "_ownedTokensIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5898, + "src": "4191:17:52", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$", + "typeString": "mapping(uint256 => uint256)" + } + }, + "id": 6041, + "indexExpression": { + "argumentTypes": null, + "id": 6040, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6024, + "src": "4209:7:52", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "4191:26:52", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "30", + "id": 6042, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4220:1:52", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "4191:30:52", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 6044, + "nodeType": "ExpressionStatement", + "src": "4191:30:52" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 6046, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6024, + "src": "4269:7:52", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 6045, + "name": "_removeTokenFromAllTokensEnumeration", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6212, + "src": "4232:36:52", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$__$", + "typeString": "function (uint256)" + } + }, + "id": 6047, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4232:45:52", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 6048, + "nodeType": "ExpressionStatement", + "src": "4232:45:52" + } + ] + }, + "documentation": "@dev Internal function to burn a specific token\nReverts if the token does not exist\nDeprecated, use _burn(uint256) instead\n@param owner owner of the token to burn\n@param tokenId uint256 ID of the token being burned", + "id": 6050, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_burn", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6025, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6022, + "name": "owner", + "nodeType": "VariableDeclaration", + "scope": 6050, + "src": "3935:13:52", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6021, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3935:7:52", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 6024, + "name": "tokenId", + "nodeType": "VariableDeclaration", + "scope": 6050, + "src": "3950:15:52", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6023, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3950:7:52", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3934:32:52" + }, + "returnParameters": { + "id": 6026, + "nodeType": "ParameterList", + "parameters": [], + "src": "3976:0:52" + }, + "scope": 6213, + "src": "3920:364:52", + "stateMutability": "nonpayable", + "superFunction": 5713, + "visibility": "internal" + }, + { + "body": { + "id": 6062, + "nodeType": "Block", + "src": "4569:43:52", + "statements": [ + { + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 6058, + "name": "_ownedTokens", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5894, + "src": "4586:12:52", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_uint256_$dyn_storage_$", + "typeString": "mapping(address => uint256[] storage ref)" + } + }, + "id": 6060, + "indexExpression": { + "argumentTypes": null, + "id": 6059, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6052, + "src": "4599:5:52", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "4586:19:52", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage", + "typeString": "uint256[] storage ref" + } + }, + "functionReturnParameters": 6057, + "id": 6061, + "nodeType": "Return", + "src": "4579:26:52" + } + ] + }, + "documentation": "@dev Gets the list of token IDs of the requested owner\n@param owner address owning the tokens\n@return uint256[] List of token IDs owned by the requested address", + "id": 6063, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_tokensOfOwner", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6053, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6052, + "name": "owner", + "nodeType": "VariableDeclaration", + "scope": 6063, + "src": "4512:13:52", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6051, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4512:7:52", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4511:15:52" + }, + "returnParameters": { + "id": 6057, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6056, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 6063, + "src": "4550:17:52", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 6054, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4550:7:52", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 6055, + "length": null, + "nodeType": "ArrayTypeName", + "src": "4550:9:52", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4549:19:52" + }, + "scope": 6213, + "src": "4488:124:52", + "stateMutability": "view", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 6086, + "nodeType": "Block", + "src": "4980:109:52", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 6077, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 6070, + "name": "_ownedTokensIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5898, + "src": "4990:17:52", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$", + "typeString": "mapping(uint256 => uint256)" + } + }, + "id": 6072, + "indexExpression": { + "argumentTypes": null, + "id": 6071, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6067, + "src": "5008:7:52", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "4990:26:52", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 6073, + "name": "_ownedTokens", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5894, + "src": "5019:12:52", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_uint256_$dyn_storage_$", + "typeString": "mapping(address => uint256[] storage ref)" + } + }, + "id": 6075, + "indexExpression": { + "argumentTypes": null, + "id": 6074, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6065, + "src": "5032:2:52", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "5019:16:52", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage", + "typeString": "uint256[] storage ref" + } + }, + "id": 6076, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "5019:23:52", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4990:52:52", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 6078, + "nodeType": "ExpressionStatement", + "src": "4990:52:52" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 6083, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6067, + "src": "5074:7:52", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 6079, + "name": "_ownedTokens", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5894, + "src": "5052:12:52", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_uint256_$dyn_storage_$", + "typeString": "mapping(address => uint256[] storage ref)" + } + }, + "id": 6081, + "indexExpression": { + "argumentTypes": null, + "id": 6080, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6065, + "src": "5065:2:52", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "5052:16:52", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage", + "typeString": "uint256[] storage ref" + } + }, + "id": 6082, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "push", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "5052:21:52", + "typeDescriptions": { + "typeIdentifier": "t_function_arraypush_nonpayable$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256) returns (uint256)" + } + }, + "id": 6084, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5052:30:52", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 6085, + "nodeType": "ExpressionStatement", + "src": "5052:30:52" + } + ] + }, + "documentation": "@dev Private function to add a token to this extension's ownership-tracking data structures.\n@param to address representing the new owner of the given token ID\n@param tokenId uint256 ID of the token to be added to the tokens list of the given address", + "id": 6087, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_addTokenToOwnerEnumeration", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6068, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6065, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 6087, + "src": "4943:10:52", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6064, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4943:7:52", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 6067, + "name": "tokenId", + "nodeType": "VariableDeclaration", + "scope": 6087, + "src": "4955:15:52", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6066, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4955:7:52", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4942:29:52" + }, + "returnParameters": { + "id": 6069, + "nodeType": "ParameterList", + "parameters": [], + "src": "4980:0:52" + }, + "scope": 6213, + "src": "4906:183:52", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "private" + }, + { + "body": { + "id": 6105, + "nodeType": "Block", + "src": "5350:95:52", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 6097, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 6092, + "name": "_allTokensIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5905, + "src": "5360:15:52", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$", + "typeString": "mapping(uint256 => uint256)" + } + }, + "id": 6094, + "indexExpression": { + "argumentTypes": null, + "id": 6093, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6089, + "src": "5376:7:52", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "5360:24:52", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 6095, + "name": "_allTokens", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5901, + "src": "5387:10:52", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage", + "typeString": "uint256[] storage ref" + } + }, + "id": 6096, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "5387:17:52", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "5360:44:52", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 6098, + "nodeType": "ExpressionStatement", + "src": "5360:44:52" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 6102, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6089, + "src": "5430:7:52", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 6099, + "name": "_allTokens", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5901, + "src": "5414:10:52", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage", + "typeString": "uint256[] storage ref" + } + }, + "id": 6101, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "push", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "5414:15:52", + "typeDescriptions": { + "typeIdentifier": "t_function_arraypush_nonpayable$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256) returns (uint256)" + } + }, + "id": 6103, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5414:24:52", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 6104, + "nodeType": "ExpressionStatement", + "src": "5414:24:52" + } + ] + }, + "documentation": "@dev Private function to add a token to this extension's token tracking data structures.\n@param tokenId uint256 ID of the token to be added to the tokens list", + "id": 6106, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_addTokenToAllTokensEnumeration", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6090, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6089, + "name": "tokenId", + "nodeType": "VariableDeclaration", + "scope": 6106, + "src": "5325:15:52", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6088, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5325:7:52", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "5324:17:52" + }, + "returnParameters": { + "id": 6091, + "nodeType": "ParameterList", + "parameters": [], + "src": "5350:0:52" + }, + "scope": 6213, + "src": "5284:161:52", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "private" + }, + { + "body": { + "id": 6162, + "nodeType": "Block", + "src": "6141:1047:52", + "statements": [ + { + "assignments": [ + 6114 + ], + "declarations": [ + { + "constant": false, + "id": 6114, + "name": "lastTokenIndex", + "nodeType": "VariableDeclaration", + "scope": 6162, + "src": "6322:22:52", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6113, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6322:7:52", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 6122, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "31", + "id": 6120, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6377:1:52", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + } + ], + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 6115, + "name": "_ownedTokens", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5894, + "src": "6347:12:52", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_uint256_$dyn_storage_$", + "typeString": "mapping(address => uint256[] storage ref)" + } + }, + "id": 6117, + "indexExpression": { + "argumentTypes": null, + "id": 6116, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6108, + "src": "6360:4:52", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "6347:18:52", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage", + "typeString": "uint256[] storage ref" + } + }, + "id": 6118, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "6347:25:52", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 6119, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sub", + "nodeType": "MemberAccess", + "referencedDeclaration": 3437, + "src": "6347:29:52", + "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": 6121, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6347:32:52", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "6322:57:52" + }, + { + "assignments": [ + 6124 + ], + "declarations": [ + { + "constant": false, + "id": 6124, + "name": "tokenIndex", + "nodeType": "VariableDeclaration", + "scope": 6162, + "src": "6389:18:52", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6123, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6389:7:52", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 6128, + "initialValue": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 6125, + "name": "_ownedTokensIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5898, + "src": "6410:17:52", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$", + "typeString": "mapping(uint256 => uint256)" + } + }, + "id": 6127, + "indexExpression": { + "argumentTypes": null, + "id": 6126, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6110, + "src": "6428:7:52", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "6410:26:52", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "6389:47:52" + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6131, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 6129, + "name": "tokenIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6124, + "src": "6540:10:52", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "id": 6130, + "name": "lastTokenIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6114, + "src": "6554:14:52", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "6540:28:52", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 6155, + "nodeType": "IfStatement", + "src": "6536:323:52", + "trueBody": { + "id": 6154, + "nodeType": "Block", + "src": "6570:289:52", + "statements": [ + { + "assignments": [ + 6133 + ], + "declarations": [ + { + "constant": false, + "id": 6133, + "name": "lastTokenId", + "nodeType": "VariableDeclaration", + "scope": 6154, + "src": "6584:19:52", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6132, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6584:7:52", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 6139, + "initialValue": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 6134, + "name": "_ownedTokens", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5894, + "src": "6606:12:52", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_uint256_$dyn_storage_$", + "typeString": "mapping(address => uint256[] storage ref)" + } + }, + "id": 6136, + "indexExpression": { + "argumentTypes": null, + "id": 6135, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6108, + "src": "6619:4:52", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "6606:18:52", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage", + "typeString": "uint256[] storage ref" + } + }, + "id": 6138, + "indexExpression": { + "argumentTypes": null, + "id": 6137, + "name": "lastTokenIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6114, + "src": "6625:14:52", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "6606:34:52", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "6584:56:52" + }, + { + "expression": { + "argumentTypes": null, + "id": 6146, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 6140, + "name": "_ownedTokens", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5894, + "src": "6655:12:52", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_uint256_$dyn_storage_$", + "typeString": "mapping(address => uint256[] storage ref)" + } + }, + "id": 6143, + "indexExpression": { + "argumentTypes": null, + "id": 6141, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6108, + "src": "6668:4:52", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "6655:18:52", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage", + "typeString": "uint256[] storage ref" + } + }, + "id": 6144, + "indexExpression": { + "argumentTypes": null, + "id": 6142, + "name": "tokenIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6124, + "src": "6674:10:52", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "6655:30:52", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 6145, + "name": "lastTokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6133, + "src": "6688:11:52", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "6655:44:52", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 6147, + "nodeType": "ExpressionStatement", + "src": "6655:44:52" + }, + { + "expression": { + "argumentTypes": null, + "id": 6152, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 6148, + "name": "_ownedTokensIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5898, + "src": "6771:17:52", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$", + "typeString": "mapping(uint256 => uint256)" + } + }, + "id": 6150, + "indexExpression": { + "argumentTypes": null, + "id": 6149, + "name": "lastTokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6133, + "src": "6789:11:52", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "6771:30:52", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 6151, + "name": "tokenIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6124, + "src": "6804:10:52", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "6771:43:52", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 6153, + "nodeType": "ExpressionStatement", + "src": "6771:43:52" + } + ] + } + }, + { + "expression": { + "argumentTypes": null, + "id": 6160, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "--", + "prefix": false, + "src": "6945:27:52", + "subExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 6156, + "name": "_ownedTokens", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5894, + "src": "6945:12:52", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_uint256_$dyn_storage_$", + "typeString": "mapping(address => uint256[] storage ref)" + } + }, + "id": 6158, + "indexExpression": { + "argumentTypes": null, + "id": 6157, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6108, + "src": "6958:4:52", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "6945:18:52", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage", + "typeString": "uint256[] storage ref" + } + }, + "id": 6159, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "6945:25:52", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 6161, + "nodeType": "ExpressionStatement", + "src": "6945:27:52" + } + ] + }, + "documentation": "@dev Private function to remove a token from this extension's ownership-tracking data structures. Note that\nwhile the token is not assigned a new owner, the _ownedTokensIndex mapping is _not_ updated: this allows for\ngas optimizations e.g. when performing a transfer operation (avoiding double writes).\nThis has O(1) time complexity, but alters the order of the _ownedTokens array.\n@param from address representing the previous owner of the given token ID\n@param tokenId uint256 ID of the token to be removed from the tokens list of the given address", + "id": 6163, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_removeTokenFromOwnerEnumeration", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6111, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6108, + "name": "from", + "nodeType": "VariableDeclaration", + "scope": 6163, + "src": "6102:12:52", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6107, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6102:7:52", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 6110, + "name": "tokenId", + "nodeType": "VariableDeclaration", + "scope": 6163, + "src": "6116:15:52", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6109, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6116:7:52", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "6101:31:52" + }, + "returnParameters": { + "id": 6112, + "nodeType": "ParameterList", + "parameters": [], + "src": "6141:0:52" + }, + "scope": 6213, + "src": "6060:1128:52", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "private" + }, + { + "body": { + "id": 6211, + "nodeType": "Block", + "src": "7547:993:52", + "statements": [ + { + "assignments": [ + 6169 + ], + "declarations": [ + { + "constant": false, + "id": 6169, + "name": "lastTokenIndex", + "nodeType": "VariableDeclaration", + "scope": 6211, + "src": "7725:22:52", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6168, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7725:7:52", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 6175, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "31", + "id": 6173, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "7772:1:52", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + } + ], + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 6170, + "name": "_allTokens", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5901, + "src": "7750:10:52", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage", + "typeString": "uint256[] storage ref" + } + }, + "id": 6171, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "7750:17:52", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 6172, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sub", + "nodeType": "MemberAccess", + "referencedDeclaration": 3437, + "src": "7750:21:52", + "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": 6174, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7750:24:52", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "7725:49:52" + }, + { + "assignments": [ + 6177 + ], + "declarations": [ + { + "constant": false, + "id": 6177, + "name": "tokenIndex", + "nodeType": "VariableDeclaration", + "scope": 6211, + "src": "7784:18:52", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6176, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7784:7:52", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 6181, + "initialValue": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 6178, + "name": "_allTokensIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5905, + "src": "7805:15:52", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$", + "typeString": "mapping(uint256 => uint256)" + } + }, + "id": 6180, + "indexExpression": { + "argumentTypes": null, + "id": 6179, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6165, + "src": "7821:7:52", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "7805:24:52", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "7784:45:52" + }, + { + "assignments": [ + 6183 + ], + "declarations": [ + { + "constant": false, + "id": 6183, + "name": "lastTokenId", + "nodeType": "VariableDeclaration", + "scope": 6211, + "src": "8151:19:52", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6182, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8151:7:52", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 6187, + "initialValue": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 6184, + "name": "_allTokens", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5901, + "src": "8173:10:52", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage", + "typeString": "uint256[] storage ref" + } + }, + "id": 6186, + "indexExpression": { + "argumentTypes": null, + "id": 6185, + "name": "lastTokenIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6169, + "src": "8184:14:52", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "8173:26:52", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "8151:48:52" + }, + { + "expression": { + "argumentTypes": null, + "id": 6192, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 6188, + "name": "_allTokens", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5901, + "src": "8210:10:52", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage", + "typeString": "uint256[] storage ref" + } + }, + "id": 6190, + "indexExpression": { + "argumentTypes": null, + "id": 6189, + "name": "tokenIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6177, + "src": "8221:10:52", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "8210:22:52", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 6191, + "name": "lastTokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6183, + "src": "8235:11:52", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "8210:36:52", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 6193, + "nodeType": "ExpressionStatement", + "src": "8210:36:52" + }, + { + "expression": { + "argumentTypes": null, + "id": 6198, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 6194, + "name": "_allTokensIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5905, + "src": "8314:15:52", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$", + "typeString": "mapping(uint256 => uint256)" + } + }, + "id": 6196, + "indexExpression": { + "argumentTypes": null, + "id": 6195, + "name": "lastTokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6183, + "src": "8330:11:52", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "8314:28:52", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 6197, + "name": "tokenIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6177, + "src": "8345:10:52", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "8314:41:52", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 6199, + "nodeType": "ExpressionStatement", + "src": "8314:41:52" + }, + { + "expression": { + "argumentTypes": null, + "id": 6203, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "--", + "prefix": false, + "src": "8476:19:52", + "subExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 6200, + "name": "_allTokens", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5901, + "src": "8476:10:52", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage", + "typeString": "uint256[] storage ref" + } + }, + "id": 6202, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "8476:17:52", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 6204, + "nodeType": "ExpressionStatement", + "src": "8476:19:52" + }, + { + "expression": { + "argumentTypes": null, + "id": 6209, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 6205, + "name": "_allTokensIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5905, + "src": "8505:15:52", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$", + "typeString": "mapping(uint256 => uint256)" + } + }, + "id": 6207, + "indexExpression": { + "argumentTypes": null, + "id": 6206, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6165, + "src": "8521:7:52", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "8505:24:52", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "30", + "id": 6208, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8532:1:52", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "8505:28:52", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 6210, + "nodeType": "ExpressionStatement", + "src": "8505:28:52" + } + ] + }, + "documentation": "@dev Private function to remove a token from this extension's token tracking data structures.\nThis has O(1) time complexity, but alters the order of the _allTokens array.\n@param tokenId uint256 ID of the token to be removed from the tokens list", + "id": 6212, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_removeTokenFromAllTokensEnumeration", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6166, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6165, + "name": "tokenId", + "nodeType": "VariableDeclaration", + "scope": 6212, + "src": "7522:15:52", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6164, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7522:7:52", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "7521:17:52" + }, + "returnParameters": { + "id": 6167, + "nodeType": "ParameterList", + "parameters": [], + "src": "7547:0:52" + }, + "scope": 6213, + "src": "7476:1064:52", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "private" + } + ], + "scope": 6214, + "src": "284:8258:52" + } + ], + "src": "0:8543:52" + }, + "compiler": { + "name": "solc", + "version": "0.5.0+commit.1d4f565a.Emscripten.clang" + }, + "networks": {}, + "schemaVersion": "3.0.0", + "updatedAt": "2019-01-04T21:44:02.897Z", + "devdoc": { + "details": "See https://github.com/ethereum/EIPs/blob/master/EIPS/eip-721.md", + "methods": { + "approve(address,uint256)": { + "details": "Approves another address to transfer the given token ID The zero address indicates there is no approved address. There can only be one approved address per token at a given time. Can only be called by the token owner or an approved operator.", + "params": { + "to": "address to be approved for the given token ID", + "tokenId": "uint256 ID of the token to be approved" + } + }, + "balanceOf(address)": { + "details": "Gets the balance of the specified address", + "params": { + "owner": "address to query the balance of" + }, + "return": "uint256 representing the amount owned by the passed address" + }, + "constructor": { + "details": "Constructor function" + }, + "getApproved(uint256)": { + "details": "Gets the approved address for a token ID, or zero if no address set Reverts if the token ID does not exist.", + "params": { + "tokenId": "uint256 ID of the token to query the approval of" + }, + "return": "address currently approved for the given token ID" + }, + "isApprovedForAll(address,address)": { + "details": "Tells whether an operator is approved by a given owner", + "params": { + "operator": "operator address which you want to query the approval of", + "owner": "owner address which you want to query the approval of" + }, + "return": "bool whether the given operator is approved by the given owner" + }, + "ownerOf(uint256)": { + "details": "Gets the owner of the specified token ID", + "params": { + "tokenId": "uint256 ID of the token to query the owner of" + }, + "return": "owner address currently marked as the owner of the given token ID" + }, + "safeTransferFrom(address,address,uint256)": { + "details": "Safely transfers the ownership of a given token ID to another address If the target address is a contract, it must implement `onERC721Received`, which is called upon a safe transfer, and return the magic value `bytes4(keccak256(\"onERC721Received(address,address,uint256,bytes)\"))`; otherwise, the transfer is reverted. * Requires the msg sender to be the owner, approved, or operator", + "params": { + "from": "current owner of the token", + "to": "address to receive the ownership of the given token ID", + "tokenId": "uint256 ID of the token to be transferred" + } + }, + "safeTransferFrom(address,address,uint256,bytes)": { + "details": "Safely transfers the ownership of a given token ID to another address If the target address is a contract, it must implement `onERC721Received`, which is called upon a safe transfer, and return the magic value `bytes4(keccak256(\"onERC721Received(address,address,uint256,bytes)\"))`; otherwise, the transfer is reverted. Requires the msg sender to be the owner, approved, or operator", + "params": { + "_data": "bytes data to send along with a safe transfer check", + "from": "current owner of the token", + "to": "address to receive the ownership of the given token ID", + "tokenId": "uint256 ID of the token to be transferred" + } + }, + "setApprovalForAll(address,bool)": { + "details": "Sets or unsets the approval of a given operator An operator is allowed to transfer all tokens of the sender on their behalf", + "params": { + "approved": "representing the status of the approval to be set", + "to": "operator address to set the approval" + } + }, + "supportsInterface(bytes4)": { + "details": "implement supportsInterface(bytes4) using a lookup table" + }, + "tokenByIndex(uint256)": { + "details": "Gets the token ID at a given index of all the tokens in this contract Reverts if the index is greater or equal to the total number of tokens", + "params": { + "index": "uint256 representing the index to be accessed of the tokens list" + }, + "return": "uint256 token ID at the given index of the tokens list" + }, + "tokenOfOwnerByIndex(address,uint256)": { + "details": "Gets the token ID at a given index of the tokens list of the requested owner", + "params": { + "index": "uint256 representing the index to be accessed of the requested tokens list", + "owner": "address owning the tokens list to be accessed" + }, + "return": "uint256 token ID at the given index of the tokens list owned by the requested address" + }, + "totalSupply()": { + "details": "Gets the total amount of tokens stored by the contract", + "return": "uint256 representing the total amount of tokens" + }, + "transferFrom(address,address,uint256)": { + "details": "Transfers the ownership of a given token ID to another address Usage of this method is discouraged, use `safeTransferFrom` whenever possible Requires the msg sender to be the owner, approved, or operator", + "params": { + "from": "current owner of the token", + "to": "address to receive the ownership of the given token ID", + "tokenId": "uint256 ID of the token to be transferred" + } + } + }, + "title": "ERC-721 Non-Fungible Token with optional enumeration extension logic" + }, + "userdoc": { + "methods": {} + } +} \ No newline at end of file diff --git a/node_modules/openzeppelin-solidity/build/contracts/ERC721Full.json b/node_modules/openzeppelin-solidity/build/contracts/ERC721Full.json new file mode 100644 index 0000000..56eda00 --- /dev/null +++ b/node_modules/openzeppelin-solidity/build/contracts/ERC721Full.json @@ -0,0 +1,1076 @@ +{ + "contractName": "ERC721Full", + "abi": [ + { + "constant": true, + "inputs": [ + { + "name": "interfaceId", + "type": "bytes4" + } + ], + "name": "supportsInterface", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "name", + "outputs": [ + { + "name": "", + "type": "string" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "tokenId", + "type": "uint256" + } + ], + "name": "getApproved", + "outputs": [ + { + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "to", + "type": "address" + }, + { + "name": "tokenId", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [], + "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": "tokenId", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "owner", + "type": "address" + }, + { + "name": "index", + "type": "uint256" + } + ], + "name": "tokenOfOwnerByIndex", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "from", + "type": "address" + }, + { + "name": "to", + "type": "address" + }, + { + "name": "tokenId", + "type": "uint256" + } + ], + "name": "safeTransferFrom", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "index", + "type": "uint256" + } + ], + "name": "tokenByIndex", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "tokenId", + "type": "uint256" + } + ], + "name": "ownerOf", + "outputs": [ + { + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "owner", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "symbol", + "outputs": [ + { + "name": "", + "type": "string" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "to", + "type": "address" + }, + { + "name": "approved", + "type": "bool" + } + ], + "name": "setApprovalForAll", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "from", + "type": "address" + }, + { + "name": "to", + "type": "address" + }, + { + "name": "tokenId", + "type": "uint256" + }, + { + "name": "_data", + "type": "bytes" + } + ], + "name": "safeTransferFrom", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "tokenId", + "type": "uint256" + } + ], + "name": "tokenURI", + "outputs": [ + { + "name": "", + "type": "string" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "owner", + "type": "address" + }, + { + "name": "operator", + "type": "address" + } + ], + "name": "isApprovedForAll", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "name": "name", + "type": "string" + }, + { + "name": "symbol", + "type": "string" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "from", + "type": "address" + }, + { + "indexed": true, + "name": "to", + "type": "address" + }, + { + "indexed": true, + "name": "tokenId", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "name": "approved", + "type": "address" + }, + { + "indexed": true, + "name": "tokenId", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "name": "operator", + "type": "address" + }, + { + "indexed": false, + "name": "approved", + "type": "bool" + } + ], + "name": "ApprovalForAll", + "type": "event" + } + ], + "bytecode": "0x60806040523480156200001157600080fd5b5060405162001e0338038062001e03833981018060405260408110156200003757600080fd5b8101908080516401000000008111156200005057600080fd5b828101905060208101848111156200006757600080fd5b81518560018202830111640100000000821117156200008557600080fd5b50509291906020018051640100000000811115620000a257600080fd5b82810190506020810184811115620000b957600080fd5b8151856001820283011164010000000082111715620000d757600080fd5b505092919050505081816200011e6301ffc9a77c01000000000000000000000000000000000000000000000000000000000262000211640100000000026401000000009004565b6200015b6380ac58cd7c01000000000000000000000000000000000000000000000000000000000262000211640100000000026401000000009004565b6200019863780e9d637c01000000000000000000000000000000000000000000000000000000000262000211640100000000026401000000009004565b8160099080519060200190620001b0929190620002cf565b5080600a9080519060200190620001c9929190620002cf565b5062000207635b5e139f7c01000000000000000000000000000000000000000000000000000000000262000211640100000000026401000000009004565b505050506200037e565b63ffffffff7c010000000000000000000000000000000000000000000000000000000002817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916141515156200026357600080fd5b6001600080837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200031257805160ff191683800117855562000343565b8280016001018555821562000343579182015b828111156200034257825182559160200191906001019062000325565b5b50905062000352919062000356565b5090565b6200037b91905b80821115620003775760008160009055506001016200035d565b5090565b90565b611a75806200038e6000396000f3fe6080604052600436106100e6576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806301ffc9a7146100eb57806306fdde031461015d578063081812fc146101ed578063095ea7b31461026857806318160ddd146102c357806323b872dd146102ee5780632f745c591461036957806342842e0e146103d85780634f6ccce7146104535780636352211e146104a257806370a082311461051d57806395d89b4114610582578063a22cb46514610612578063b88d4fde1461066f578063c87b56dd14610781578063e985e9c514610835575b600080fd5b3480156100f757600080fd5b506101436004803603602081101561010e57600080fd5b8101908080357bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690602001909291905050506108be565b604051808215151515815260200191505060405180910390f35b34801561016957600080fd5b50610172610925565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156101b2578082015181840152602081019050610197565b50505050905090810190601f1680156101df5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156101f957600080fd5b506102266004803603602081101561021057600080fd5b81019080803590602001909291905050506109c7565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561027457600080fd5b506102c16004803603604081101561028b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610a18565b005b3480156102cf57600080fd5b506102d8610b5d565b6040518082815260200191505060405180910390f35b3480156102fa57600080fd5b506103676004803603606081101561031157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610b6a565b005b34801561037557600080fd5b506103c26004803603604081101561038c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610b8f565b6040518082815260200191505060405180910390f35b3480156103e457600080fd5b50610451600480360360608110156103fb57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610c06565b005b34801561045f57600080fd5b5061048c6004803603602081101561047657600080fd5b8101908080359060200190929190505050610c27565b6040518082815260200191505060405180910390f35b3480156104ae57600080fd5b506104db600480360360208110156104c557600080fd5b8101908080359060200190929190505050610c5f565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561052957600080fd5b5061056c6004803603602081101561054057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610cdd565b6040518082815260200191505060405180910390f35b34801561058e57600080fd5b50610597610d61565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156105d75780820151818401526020810190506105bc565b50505050905090810190601f1680156106045780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561061e57600080fd5b5061066d6004803603604081101561063557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803515159060200190929190505050610e03565b005b34801561067b57600080fd5b5061077f6004803603608081101561069257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001906401000000008111156106f957600080fd5b82018360208201111561070b57600080fd5b8035906020019184600183028401116401000000008311171561072d57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050610f3f565b005b34801561078d57600080fd5b506107ba600480360360208110156107a457600080fd5b8101908080359060200190929190505050610f67565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156107fa5780820151818401526020810190506107df565b50505050905090810190601f1680156108275780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561084157600080fd5b506108a46004803603604081101561085857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611030565b604051808215151515815260200191505060405180910390f35b6000806000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060009054906101000a900460ff169050919050565b606060098054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156109bd5780601f10610992576101008083540402835291602001916109bd565b820191906000526020600020905b8154815290600101906020018083116109a057829003601f168201915b5050505050905090565b60006109d2826110c4565b15156109dd57600080fd5b6002600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000610a2382610c5f565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614151515610a6057600080fd5b8073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610aa05750610a9f8133611030565b5b1515610aab57600080fd5b826002600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a4505050565b6000600780549050905090565b610b743382611136565b1515610b7f57600080fd5b610b8a8383836111cb565b505050565b6000610b9a83610cdd565b82101515610ba757600080fd5b600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002082815481101515610bf357fe5b9060005260206000200154905092915050565b610c228383836020604051908101604052806000815250610f3f565b505050565b6000610c31610b5d565b82101515610c3e57600080fd5b600782815481101515610c4d57fe5b90600052602060002001549050919050565b6000806001600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515610cd457600080fd5b80915050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614151515610d1a57600080fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6060600a8054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610df95780601f10610dce57610100808354040283529160200191610df9565b820191906000526020600020905b815481529060010190602001808311610ddc57829003601f168201915b5050505050905090565b3373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614151515610e3e57600080fd5b80600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051808215151515815260200191505060405180910390a35050565b610f4a848484610b6a565b610f56848484846111ef565b1515610f6157600080fd5b50505050565b6060610f72826110c4565b1515610f7d57600080fd5b600b60008381526020019081526020016000208054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156110245780601f10610ff957610100808354040283529160200191611024565b820191906000526020600020905b81548152906001019060200180831161100757829003601f168201915b50505050509050919050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6000806001600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415915050919050565b60008061114283610c5f565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614806111b157508373ffffffffffffffffffffffffffffffffffffffff16611199846109c7565b73ffffffffffffffffffffffffffffffffffffffff16145b806111c257506111c18185611030565b5b91505092915050565b6111d6838383611412565b6111e08382611677565b6111ea828261181b565b505050565b60006112108473ffffffffffffffffffffffffffffffffffffffff166118e2565b151561121f576001905061140a565b60008473ffffffffffffffffffffffffffffffffffffffff1663150b7a02338887876040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b838110156113165780820151818401526020810190506112fb565b50505050905090810190601f1680156113435780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b15801561136557600080fd5b505af1158015611379573d6000803e3d6000fd5b505050506040513d602081101561138f57600080fd5b8101908080519060200190929190505050905063150b7a027c0100000000000000000000000000000000000000000000000000000000027bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149150505b949350505050565b8273ffffffffffffffffffffffffffffffffffffffff1661143282610c5f565b73ffffffffffffffffffffffffffffffffffffffff1614151561145457600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415151561149057600080fd5b611499816118f5565b6114ec6001600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546119b590919063ffffffff16565b600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506115826001600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546119d790919063ffffffff16565b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816001600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b60006116cf6001600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805490506119b590919063ffffffff16565b905060006006600084815260200190815260200160002054905081811415156117c2576000600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208381548110151561174057fe5b9060005260206000200154905080600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208381548110151561179a57fe5b9060005260206000200181905550816006600083815260200190815260200160002081905550505b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080548091906001900361181491906119f8565b5050505050565b600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805490506006600083815260200190815260200160002081905550600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190806001815401808255809150509060018203906000526020600020016000909192909190915055505050565b600080823b905060008111915050919050565b600073ffffffffffffffffffffffffffffffffffffffff166002600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156119b25760006002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b50565b60008282111515156119c657600080fd5b600082840390508091505092915050565b60008082840190508381101515156119ee57600080fd5b8091505092915050565b815481835581811115611a1f57818360005260206000209182019101611a1e9190611a24565b5b505050565b611a4691905b80821115611a42576000816000905550600101611a2a565b5090565b9056fea165627a7a723058209b0e1f3751392fb97cf352c4a1fd54f2c39726678313dda883e7f29dc7eb6b3c0029", + "deployedBytecode": "0x6080604052600436106100e6576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806301ffc9a7146100eb57806306fdde031461015d578063081812fc146101ed578063095ea7b31461026857806318160ddd146102c357806323b872dd146102ee5780632f745c591461036957806342842e0e146103d85780634f6ccce7146104535780636352211e146104a257806370a082311461051d57806395d89b4114610582578063a22cb46514610612578063b88d4fde1461066f578063c87b56dd14610781578063e985e9c514610835575b600080fd5b3480156100f757600080fd5b506101436004803603602081101561010e57600080fd5b8101908080357bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690602001909291905050506108be565b604051808215151515815260200191505060405180910390f35b34801561016957600080fd5b50610172610925565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156101b2578082015181840152602081019050610197565b50505050905090810190601f1680156101df5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156101f957600080fd5b506102266004803603602081101561021057600080fd5b81019080803590602001909291905050506109c7565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561027457600080fd5b506102c16004803603604081101561028b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610a18565b005b3480156102cf57600080fd5b506102d8610b5d565b6040518082815260200191505060405180910390f35b3480156102fa57600080fd5b506103676004803603606081101561031157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610b6a565b005b34801561037557600080fd5b506103c26004803603604081101561038c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610b8f565b6040518082815260200191505060405180910390f35b3480156103e457600080fd5b50610451600480360360608110156103fb57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610c06565b005b34801561045f57600080fd5b5061048c6004803603602081101561047657600080fd5b8101908080359060200190929190505050610c27565b6040518082815260200191505060405180910390f35b3480156104ae57600080fd5b506104db600480360360208110156104c557600080fd5b8101908080359060200190929190505050610c5f565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561052957600080fd5b5061056c6004803603602081101561054057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610cdd565b6040518082815260200191505060405180910390f35b34801561058e57600080fd5b50610597610d61565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156105d75780820151818401526020810190506105bc565b50505050905090810190601f1680156106045780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561061e57600080fd5b5061066d6004803603604081101561063557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803515159060200190929190505050610e03565b005b34801561067b57600080fd5b5061077f6004803603608081101561069257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001906401000000008111156106f957600080fd5b82018360208201111561070b57600080fd5b8035906020019184600183028401116401000000008311171561072d57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050610f3f565b005b34801561078d57600080fd5b506107ba600480360360208110156107a457600080fd5b8101908080359060200190929190505050610f67565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156107fa5780820151818401526020810190506107df565b50505050905090810190601f1680156108275780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561084157600080fd5b506108a46004803603604081101561085857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611030565b604051808215151515815260200191505060405180910390f35b6000806000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060009054906101000a900460ff169050919050565b606060098054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156109bd5780601f10610992576101008083540402835291602001916109bd565b820191906000526020600020905b8154815290600101906020018083116109a057829003601f168201915b5050505050905090565b60006109d2826110c4565b15156109dd57600080fd5b6002600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000610a2382610c5f565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614151515610a6057600080fd5b8073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610aa05750610a9f8133611030565b5b1515610aab57600080fd5b826002600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a4505050565b6000600780549050905090565b610b743382611136565b1515610b7f57600080fd5b610b8a8383836111cb565b505050565b6000610b9a83610cdd565b82101515610ba757600080fd5b600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002082815481101515610bf357fe5b9060005260206000200154905092915050565b610c228383836020604051908101604052806000815250610f3f565b505050565b6000610c31610b5d565b82101515610c3e57600080fd5b600782815481101515610c4d57fe5b90600052602060002001549050919050565b6000806001600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515610cd457600080fd5b80915050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614151515610d1a57600080fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6060600a8054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610df95780601f10610dce57610100808354040283529160200191610df9565b820191906000526020600020905b815481529060010190602001808311610ddc57829003601f168201915b5050505050905090565b3373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614151515610e3e57600080fd5b80600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051808215151515815260200191505060405180910390a35050565b610f4a848484610b6a565b610f56848484846111ef565b1515610f6157600080fd5b50505050565b6060610f72826110c4565b1515610f7d57600080fd5b600b60008381526020019081526020016000208054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156110245780601f10610ff957610100808354040283529160200191611024565b820191906000526020600020905b81548152906001019060200180831161100757829003601f168201915b50505050509050919050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6000806001600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415915050919050565b60008061114283610c5f565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614806111b157508373ffffffffffffffffffffffffffffffffffffffff16611199846109c7565b73ffffffffffffffffffffffffffffffffffffffff16145b806111c257506111c18185611030565b5b91505092915050565b6111d6838383611412565b6111e08382611677565b6111ea828261181b565b505050565b60006112108473ffffffffffffffffffffffffffffffffffffffff166118e2565b151561121f576001905061140a565b60008473ffffffffffffffffffffffffffffffffffffffff1663150b7a02338887876040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b838110156113165780820151818401526020810190506112fb565b50505050905090810190601f1680156113435780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b15801561136557600080fd5b505af1158015611379573d6000803e3d6000fd5b505050506040513d602081101561138f57600080fd5b8101908080519060200190929190505050905063150b7a027c0100000000000000000000000000000000000000000000000000000000027bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149150505b949350505050565b8273ffffffffffffffffffffffffffffffffffffffff1661143282610c5f565b73ffffffffffffffffffffffffffffffffffffffff1614151561145457600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415151561149057600080fd5b611499816118f5565b6114ec6001600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546119b590919063ffffffff16565b600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506115826001600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546119d790919063ffffffff16565b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816001600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b60006116cf6001600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805490506119b590919063ffffffff16565b905060006006600084815260200190815260200160002054905081811415156117c2576000600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208381548110151561174057fe5b9060005260206000200154905080600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208381548110151561179a57fe5b9060005260206000200181905550816006600083815260200190815260200160002081905550505b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080548091906001900361181491906119f8565b5050505050565b600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805490506006600083815260200190815260200160002081905550600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190806001815401808255809150509060018203906000526020600020016000909192909190915055505050565b600080823b905060008111915050919050565b600073ffffffffffffffffffffffffffffffffffffffff166002600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156119b25760006002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b50565b60008282111515156119c657600080fd5b600082840390508091505092915050565b60008082840190508381101515156119ee57600080fd5b8091505092915050565b815481835581811115611a1f57818360005260206000209182019101611a1e9190611a24565b5b505050565b611a4691905b80821115611a42576000816000905550600101611a2a565b5090565b9056fea165627a7a723058209b0e1f3751392fb97cf352c4a1fd54f2c39726678313dda883e7f29dc7eb6b3c0029", + "sourceMap": "404:227:53:-;;;474:155;8:9:-1;5:2;;;30:1;27;20:12;5:2;474:155:53;;;;;;;;;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;474:155:53;;;;;;19:11:-1;14:3;11:20;8:2;;;44:1;41;34:12;8:2;71:11;66:3;62:21;55:28;;123:4;118:3;114:14;159:9;141:16;138:31;135:2;;;182:1;179;172:12;135:2;219:3;213:10;330:9;325:1;311:12;307:20;289:16;285:43;282:58;261:11;247:12;244:29;233:115;230:2;;;361:1;358;351:12;230:2;0:372;;474:155:53;;;;;;;19:11:-1;14:3;11:20;8:2;;;44:1;41;34:12;8:2;71:11;66:3;62:21;55:28;;123:4;118:3;114:14;159:9;141:16;138:31;135:2;;;182:1;179;172:12;135:2;219:3;213:10;330:9;325:1;311:12;307:20;289:16;285:43;282:58;261:11;247:12;244:29;233:115;230:2;;;361:1;358;351:12;230:2;0:372;;474:155:53;;;;;;551:4;557:6;640:40:28;236:10;659:20;;640:18;;;:40;;;:::i;:::-;1906::50;1163:10;1925:20;;1906:18;;;:40;;;:::i;:::-;1240:51:52;855:10;1259:31;;1240:18;;;:51;;;:::i;:::-;746:4:55;738:5;:12;;;;;;;;;;;;:::i;:::-;;770:6;760:7;:16;;;;;;;;;;;;:::i;:::-;;864:49;428:10;883:29;;864:18;;;:49;;;:::i;:::-;666:254;;474:155:53;;404:227;;990:158:28;1080:10;1065:25;;:11;:25;;;;;1057:34;;;;;;;;1137:4;1101:20;:33;1122:11;1101:33;;;;;;;;;;;;;;;;;;:40;;;;;;;;;;;;;;;;;;990:158;:::o;404:227:53:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;", + "deployedSourceMap": "404:227:53:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;778:133:28;;8:9:-1;5:2;;;30:1;27;20:12;5:2;778:133:28;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;778:133:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1024:83:55;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1024:83:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;1024:83:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3705:151:50;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3705:151:50;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3705:151:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3128:292;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3128:292:50;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3128:292:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2005:94:52;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2005:94:52;;;;;;;;;;;;;;;;;;;;;;;5260:180:50;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5260:180:50;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;5260:180:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1671:182:52;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1671:182:52;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1671:182:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6079:132:50;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6079:132:50;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;6079:132:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2436:148:52;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2436:148:52;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2436:148:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2530:177:50;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2530:177:50;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2530:177:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2156:150;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2156:150:50;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2156:150:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1215:87:55;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1215:87:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;1215:87:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4148:213:50;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4148:213:50;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4148:213:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6916:211;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6916:211:50;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;6916:211:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;6916:211:50;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;6916:211:50;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;6916:211:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;6916:211:50;;;;;;;;;;;;;;;;;;1501:151:55;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1501:151:55;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1501:151:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;1501:151:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4682:145:50;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4682:145:50;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4682:145:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;778:133:28;848:4;871:20;:33;892:11;871:33;;;;;;;;;;;;;;;;;;;;;;;;;;;864:40;;778:133;;;:::o;1024:83:55:-;1063:13;1095:5;1088:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1024:83;:::o;3705:151:50:-;3764:7;3791:16;3799:7;3791;:16::i;:::-;3783:25;;;;;;;;3825:15;:24;3841:7;3825:24;;;;;;;;;;;;;;;;;;;;;3818:31;;3705:151;;;:::o;3128:292::-;3191:13;3207:16;3215:7;3207;:16::i;:::-;3191:32;;3247:5;3241:11;;:2;:11;;;;3233:20;;;;;;;;3285:5;3271:19;;:10;:19;;;:58;;;;3294:35;3311:5;3318:10;3294:16;:35::i;:::-;3271:58;3263:67;;;;;;;;3368:2;3341:15;:24;3357:7;3341:24;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;3405:7;3401:2;3385:28;;3394:5;3385:28;;;;;;;;;;;;3128:292;;;:::o;2005:94:52:-;2049:7;2075:10;:17;;;;2068:24;;2005:94;:::o;5260:180:50:-;5350:39;5369:10;5381:7;5350:18;:39::i;:::-;5342:48;;;;;;;;5401:32;5415:4;5421:2;5425:7;5401:13;:32::i;:::-;5260:180;;;:::o;1671:182:52:-;1751:7;1786:16;1796:5;1786:9;:16::i;:::-;1778:5;:24;1770:33;;;;;;;;1820:12;:19;1833:5;1820:19;;;;;;;;;;;;;;;1840:5;1820:26;;;;;;;;;;;;;;;;;;1813:33;;1671:182;;;;:::o;6079:132:50:-;6165:39;6182:4;6188:2;6192:7;6165:39;;;;;;;;;;;;;:16;:39::i;:::-;6079:132;;;:::o;2436:148:52:-;2494:7;2529:13;:11;:13::i;:::-;2521:5;:21;2513:30;;;;;;;;2560:10;2571:5;2560:17;;;;;;;;;;;;;;;;;;2553:24;;2436:148;;;:::o;2530:177:50:-;2585:7;2604:13;2620:11;:20;2632:7;2620:20;;;;;;;;;;;;;;;;;;;;;2604:36;;2675:1;2658:19;;:5;:19;;;;2650:28;;;;;;;;2695:5;2688:12;;;2530:177;;;:::o;2156:150::-;2211:7;2255:1;2238:19;;:5;:19;;;;2230:28;;;;;;;;2275:17;:24;2293:5;2275:24;;;;;;;;;;;;;;;;2268:31;;2156:150;;;:::o;1215:87:55:-;1256:13;1288:7;1281:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1215:87;:::o;4148:213:50:-;4233:10;4227:16;;:2;:16;;;;4219:25;;;;;;;;4291:8;4254:18;:30;4273:10;4254:30;;;;;;;;;;;;;;;:34;4285:2;4254:34;;;;;;;;;;;;;;;;:45;;;;;;;;;;;;;;;;;;4341:2;4314:40;;4329:10;4314:40;;;4345:8;4314:40;;;;;;;;;;;;;;;;;;;;;;4148:213;;:::o;6916:211::-;7022:31;7035:4;7041:2;7045:7;7022:12;:31::i;:::-;7071:48;7094:4;7100:2;7104:7;7113:5;7071:22;:48::i;:::-;7063:57;;;;;;;;6916:211;;;;:::o;1501:151:55:-;1559:13;1592:16;1600:7;1592;:16::i;:::-;1584:25;;;;;;;;1626:10;:19;1637:7;1626:19;;;;;;;;;;;1619:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1501:151;;;:::o;4682:145:50:-;4762:4;4785:18;:25;4804:5;4785:25;;;;;;;;;;;;;;;:35;4811:8;4785:35;;;;;;;;;;;;;;;;;;;;;;;;;4778:42;;4682:145;;;;:::o;7316:152::-;7373:4;7389:13;7405:11;:20;7417:7;7405:20;;;;;;;;;;;;;;;;;;;;;7389:36;;7459:1;7442:19;;:5;:19;;;;7435:26;;;7316:152;;;:::o;7831:246::-;7916:4;7932:13;7948:16;7956:7;7948;:16::i;:::-;7932:32;;7993:5;7982:16;;:7;:16;;;:51;;;;8026:7;8002:31;;:20;8014:7;8002:11;:20::i;:::-;:31;;;7982:51;:87;;;;8037:32;8054:5;8061:7;8037:16;:32::i;:::-;7982:87;7974:96;;;7831:246;;;;:::o;2958:239:52:-;3043:38;3063:4;3069:2;3073:7;3043:19;:38::i;:::-;3092:47;3125:4;3131:7;3092:32;:47::i;:::-;3150:40;3178:2;3182:7;3150:27;:40::i;:::-;2958:239;;;:::o;10744:347:50:-;10865:4;10890:15;:2;:13;;;:15::i;:::-;10889:16;10885:58;;;10928:4;10921:11;;;;10885:58;10953:13;10985:2;10969:36;;;11006:10;11018:4;11024:7;11033:5;10969:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;10969:70:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10969:70:50;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;10969:70:50;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;10969:70:50;;;;;;;;;;;;;;;;10953:86;;658:10;11067:16;;11057:26;;;:6;:26;;;;11049:35;;;10744:347;;;;;;;:::o;9819:402::-;9932:4;9912:24;;:16;9920:7;9912;:16::i;:::-;:24;;;9904:33;;;;;;;;9969:1;9955:16;;:2;:16;;;;9947:25;;;;;;;;9983:23;9998:7;9983:14;:23::i;:::-;10043:30;10071:1;10043:17;:23;10061:4;10043:23;;;;;;;;;;;;;;;;:27;;:30;;;;:::i;:::-;10017:17;:23;10035:4;10017:23;;;;;;;;;;;;;;;:56;;;;10107:28;10133:1;10107:17;:21;10125:2;10107:21;;;;;;;;;;;;;;;;:25;;:28;;;;:::i;:::-;10083:17;:21;10101:2;10083:21;;;;;;;;;;;;;;;:52;;;;10169:2;10146:11;:20;10158:7;10146:20;;;;;;;;;;;;:25;;;;;;;;;;;;;;;;;;10206:7;10202:2;10187:27;;10196:4;10187:27;;;;;;;;;;;;9819:402;;;:::o;6060:1128:52:-;6322:22;6347:32;6377:1;6347:12;:18;6360:4;6347:18;;;;;;;;;;;;;;;:25;;;;:29;;:32;;;;:::i;:::-;6322:57;;6389:18;6410:17;:26;6428:7;6410:26;;;;;;;;;;;;6389:47;;6554:14;6540:10;:28;;6536:323;;;6584:19;6606:12;:18;6619:4;6606:18;;;;;;;;;;;;;;;6625:14;6606:34;;;;;;;;;;;;;;;;;;6584:56;;6688:11;6655:12;:18;6668:4;6655:18;;;;;;;;;;;;;;;6674:10;6655:30;;;;;;;;;;;;;;;;;:44;;;;6804:10;6771:17;:30;6789:11;6771:30;;;;;;;;;;;:43;;;;6536:323;;6945:12;:18;6958:4;6945:18;;;;;;;;;;;;;;;:27;;;;;;;;;;;;:::i;:::-;;6060:1128;;;;:::o;4906:183::-;5019:12;:16;5032:2;5019:16;;;;;;;;;;;;;;;:23;;;;4990:17;:26;5008:7;4990:26;;;;;;;;;;;:52;;;;5052:12;:16;5065:2;5052:16;;;;;;;;;;;;;;;5074:7;5052:30;;39:1:-1;33:3;27:10;23:18;57:10;52:3;45:23;79:10;72:17;;0:93;5052:30:52;;;;;;;;;;;;;;;;;;;;;;4906:183;;:::o;463:616:64:-;523:4;539:12;1038:7;1026:20;1018:28;;1071:1;1064:4;:8;1057:15;;;463:616;;;:::o;11252:171:50:-;11351:1;11315:38;;:15;:24;11331:7;11315:24;;;;;;;;;;;;;;;;;;;;;:38;;;;11311:106;;;11404:1;11369:15;:24;11385:7;11369:24;;;;;;;;;;;;:37;;;;;;;;;;;;;;;;;;11311:106;11252:171;:::o;1205:145:33:-;1263:7;1295:1;1290;:6;;1282:15;;;;;;;;1307:9;1323:1;1319;:5;1307:17;;1342:1;1335:8;;;1205:145;;;;:::o;1431:::-;1489:7;1508:9;1524:1;1520;:5;1508:17;;1548:1;1543;:6;;1535:15;;;;;;;;1568:1;1561:8;;;1431:145;;;;:::o;404:227:53:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o", + "source": "pragma solidity ^0.5.0;\n\nimport \"./ERC721.sol\";\nimport \"./ERC721Enumerable.sol\";\nimport \"./ERC721Metadata.sol\";\n\n/**\n * @title Full ERC721 Token\n * This implementation includes all the required and some optional functionality of the ERC721 standard\n * Moreover, it includes approve all functionality using operator terminology\n * @dev see https://github.com/ethereum/EIPs/blob/master/EIPS/eip-721.md\n */\ncontract ERC721Full is ERC721, ERC721Enumerable, ERC721Metadata {\n constructor (string memory name, string memory symbol) public ERC721Metadata(name, symbol) {\n // solhint-disable-previous-line no-empty-blocks\n }\n}\n", + "sourcePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/token/ERC721/ERC721Full.sol", + "ast": { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/token/ERC721/ERC721Full.sol", + "exportedSymbols": { + "ERC721Full": [ + 6237 + ] + }, + "id": 6238, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 6215, + "literals": [ + "solidity", + "^", + "0.5", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "0:23:53" + }, + { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/token/ERC721/ERC721.sol", + "file": "./ERC721.sol", + "id": 6216, + "nodeType": "ImportDirective", + "scope": 6238, + "sourceUnit": 5855, + "src": "25:22:53", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/token/ERC721/ERC721Enumerable.sol", + "file": "./ERC721Enumerable.sol", + "id": 6217, + "nodeType": "ImportDirective", + "scope": 6238, + "sourceUnit": 6214, + "src": "48:32:53", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/token/ERC721/ERC721Metadata.sol", + "file": "./ERC721Metadata.sol", + "id": 6218, + "nodeType": "ImportDirective", + "scope": 6238, + "sourceUnit": 6389, + "src": "81:30:53", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 6219, + "name": "ERC721", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 5854, + "src": "427:6:53", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC721_$5854", + "typeString": "contract ERC721" + } + }, + "id": 6220, + "nodeType": "InheritanceSpecifier", + "src": "427:6:53" + }, + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 6221, + "name": "ERC721Enumerable", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 6213, + "src": "435:16:53", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC721Enumerable_$6213", + "typeString": "contract ERC721Enumerable" + } + }, + "id": 6222, + "nodeType": "InheritanceSpecifier", + "src": "435:16:53" + }, + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 6223, + "name": "ERC721Metadata", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 6388, + "src": "453:14:53", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC721Metadata_$6388", + "typeString": "contract ERC721Metadata" + } + }, + "id": 6224, + "nodeType": "InheritanceSpecifier", + "src": "453:14:53" + } + ], + "contractDependencies": [ + 3055, + 3202, + 5854, + 6213, + 6388, + 6619, + 6646, + 6681 + ], + "contractKind": "contract", + "documentation": "@title Full ERC721 Token\nThis implementation includes all the required and some optional functionality of the ERC721 standard\nMoreover, it includes approve all functionality using operator terminology\n@dev see https://github.com/ethereum/EIPs/blob/master/EIPS/eip-721.md", + "fullyImplemented": true, + "id": 6237, + "linearizedBaseContracts": [ + 6237, + 6388, + 6681, + 6213, + 6646, + 5854, + 6619, + 3055, + 3202 + ], + "name": "ERC721Full", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": { + "id": 6235, + "nodeType": "Block", + "src": "565:64:53", + "statements": [] + }, + "documentation": null, + "id": 6236, + "implemented": true, + "kind": "constructor", + "modifiers": [ + { + "arguments": [ + { + "argumentTypes": null, + "id": 6231, + "name": "name", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6226, + "src": "551:4:53", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + { + "argumentTypes": null, + "id": 6232, + "name": "symbol", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6228, + "src": "557:6:53", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "id": 6233, + "modifierName": { + "argumentTypes": null, + "id": 6230, + "name": "ERC721Metadata", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6388, + "src": "536:14:53", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ERC721Metadata_$6388_$", + "typeString": "type(contract ERC721Metadata)" + } + }, + "nodeType": "ModifierInvocation", + "src": "536:28:53" + } + ], + "name": "", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6229, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6226, + "name": "name", + "nodeType": "VariableDeclaration", + "scope": 6236, + "src": "487:18:53", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 6225, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "487:6:53", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 6228, + "name": "symbol", + "nodeType": "VariableDeclaration", + "scope": 6236, + "src": "507:20:53", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 6227, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "507:6:53", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "486:42:53" + }, + "returnParameters": { + "id": 6234, + "nodeType": "ParameterList", + "parameters": [], + "src": "565:0:53" + }, + "scope": 6237, + "src": "474:155:53", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + } + ], + "scope": 6238, + "src": "404:227:53" + } + ], + "src": "0:632:53" + }, + "legacyAST": { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/token/ERC721/ERC721Full.sol", + "exportedSymbols": { + "ERC721Full": [ + 6237 + ] + }, + "id": 6238, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 6215, + "literals": [ + "solidity", + "^", + "0.5", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "0:23:53" + }, + { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/token/ERC721/ERC721.sol", + "file": "./ERC721.sol", + "id": 6216, + "nodeType": "ImportDirective", + "scope": 6238, + "sourceUnit": 5855, + "src": "25:22:53", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/token/ERC721/ERC721Enumerable.sol", + "file": "./ERC721Enumerable.sol", + "id": 6217, + "nodeType": "ImportDirective", + "scope": 6238, + "sourceUnit": 6214, + "src": "48:32:53", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/token/ERC721/ERC721Metadata.sol", + "file": "./ERC721Metadata.sol", + "id": 6218, + "nodeType": "ImportDirective", + "scope": 6238, + "sourceUnit": 6389, + "src": "81:30:53", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 6219, + "name": "ERC721", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 5854, + "src": "427:6:53", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC721_$5854", + "typeString": "contract ERC721" + } + }, + "id": 6220, + "nodeType": "InheritanceSpecifier", + "src": "427:6:53" + }, + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 6221, + "name": "ERC721Enumerable", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 6213, + "src": "435:16:53", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC721Enumerable_$6213", + "typeString": "contract ERC721Enumerable" + } + }, + "id": 6222, + "nodeType": "InheritanceSpecifier", + "src": "435:16:53" + }, + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 6223, + "name": "ERC721Metadata", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 6388, + "src": "453:14:53", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC721Metadata_$6388", + "typeString": "contract ERC721Metadata" + } + }, + "id": 6224, + "nodeType": "InheritanceSpecifier", + "src": "453:14:53" + } + ], + "contractDependencies": [ + 3055, + 3202, + 5854, + 6213, + 6388, + 6619, + 6646, + 6681 + ], + "contractKind": "contract", + "documentation": "@title Full ERC721 Token\nThis implementation includes all the required and some optional functionality of the ERC721 standard\nMoreover, it includes approve all functionality using operator terminology\n@dev see https://github.com/ethereum/EIPs/blob/master/EIPS/eip-721.md", + "fullyImplemented": true, + "id": 6237, + "linearizedBaseContracts": [ + 6237, + 6388, + 6681, + 6213, + 6646, + 5854, + 6619, + 3055, + 3202 + ], + "name": "ERC721Full", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": { + "id": 6235, + "nodeType": "Block", + "src": "565:64:53", + "statements": [] + }, + "documentation": null, + "id": 6236, + "implemented": true, + "kind": "constructor", + "modifiers": [ + { + "arguments": [ + { + "argumentTypes": null, + "id": 6231, + "name": "name", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6226, + "src": "551:4:53", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + { + "argumentTypes": null, + "id": 6232, + "name": "symbol", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6228, + "src": "557:6:53", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "id": 6233, + "modifierName": { + "argumentTypes": null, + "id": 6230, + "name": "ERC721Metadata", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6388, + "src": "536:14:53", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ERC721Metadata_$6388_$", + "typeString": "type(contract ERC721Metadata)" + } + }, + "nodeType": "ModifierInvocation", + "src": "536:28:53" + } + ], + "name": "", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6229, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6226, + "name": "name", + "nodeType": "VariableDeclaration", + "scope": 6236, + "src": "487:18:53", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 6225, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "487:6:53", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 6228, + "name": "symbol", + "nodeType": "VariableDeclaration", + "scope": 6236, + "src": "507:20:53", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 6227, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "507:6:53", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "486:42:53" + }, + "returnParameters": { + "id": 6234, + "nodeType": "ParameterList", + "parameters": [], + "src": "565:0:53" + }, + "scope": 6237, + "src": "474:155:53", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + } + ], + "scope": 6238, + "src": "404:227:53" + } + ], + "src": "0:632:53" + }, + "compiler": { + "name": "solc", + "version": "0.5.0+commit.1d4f565a.Emscripten.clang" + }, + "networks": {}, + "schemaVersion": "3.0.0", + "updatedAt": "2019-01-04T21:44:02.898Z", + "devdoc": { + "details": "see https://github.com/ethereum/EIPs/blob/master/EIPS/eip-721.md", + "methods": { + "approve(address,uint256)": { + "details": "Approves another address to transfer the given token ID The zero address indicates there is no approved address. There can only be one approved address per token at a given time. Can only be called by the token owner or an approved operator.", + "params": { + "to": "address to be approved for the given token ID", + "tokenId": "uint256 ID of the token to be approved" + } + }, + "balanceOf(address)": { + "details": "Gets the balance of the specified address", + "params": { + "owner": "address to query the balance of" + }, + "return": "uint256 representing the amount owned by the passed address" + }, + "getApproved(uint256)": { + "details": "Gets the approved address for a token ID, or zero if no address set Reverts if the token ID does not exist.", + "params": { + "tokenId": "uint256 ID of the token to query the approval of" + }, + "return": "address currently approved for the given token ID" + }, + "isApprovedForAll(address,address)": { + "details": "Tells whether an operator is approved by a given owner", + "params": { + "operator": "operator address which you want to query the approval of", + "owner": "owner address which you want to query the approval of" + }, + "return": "bool whether the given operator is approved by the given owner" + }, + "name()": { + "details": "Gets the token name", + "return": "string representing the token name" + }, + "ownerOf(uint256)": { + "details": "Gets the owner of the specified token ID", + "params": { + "tokenId": "uint256 ID of the token to query the owner of" + }, + "return": "owner address currently marked as the owner of the given token ID" + }, + "safeTransferFrom(address,address,uint256)": { + "details": "Safely transfers the ownership of a given token ID to another address If the target address is a contract, it must implement `onERC721Received`, which is called upon a safe transfer, and return the magic value `bytes4(keccak256(\"onERC721Received(address,address,uint256,bytes)\"))`; otherwise, the transfer is reverted. * Requires the msg sender to be the owner, approved, or operator", + "params": { + "from": "current owner of the token", + "to": "address to receive the ownership of the given token ID", + "tokenId": "uint256 ID of the token to be transferred" + } + }, + "safeTransferFrom(address,address,uint256,bytes)": { + "details": "Safely transfers the ownership of a given token ID to another address If the target address is a contract, it must implement `onERC721Received`, which is called upon a safe transfer, and return the magic value `bytes4(keccak256(\"onERC721Received(address,address,uint256,bytes)\"))`; otherwise, the transfer is reverted. Requires the msg sender to be the owner, approved, or operator", + "params": { + "_data": "bytes data to send along with a safe transfer check", + "from": "current owner of the token", + "to": "address to receive the ownership of the given token ID", + "tokenId": "uint256 ID of the token to be transferred" + } + }, + "setApprovalForAll(address,bool)": { + "details": "Sets or unsets the approval of a given operator An operator is allowed to transfer all tokens of the sender on their behalf", + "params": { + "approved": "representing the status of the approval to be set", + "to": "operator address to set the approval" + } + }, + "supportsInterface(bytes4)": { + "details": "implement supportsInterface(bytes4) using a lookup table" + }, + "symbol()": { + "details": "Gets the token symbol", + "return": "string representing the token symbol" + }, + "tokenByIndex(uint256)": { + "details": "Gets the token ID at a given index of all the tokens in this contract Reverts if the index is greater or equal to the total number of tokens", + "params": { + "index": "uint256 representing the index to be accessed of the tokens list" + }, + "return": "uint256 token ID at the given index of the tokens list" + }, + "tokenOfOwnerByIndex(address,uint256)": { + "details": "Gets the token ID at a given index of the tokens list of the requested owner", + "params": { + "index": "uint256 representing the index to be accessed of the requested tokens list", + "owner": "address owning the tokens list to be accessed" + }, + "return": "uint256 token ID at the given index of the tokens list owned by the requested address" + }, + "tokenURI(uint256)": { + "details": "Returns an URI for a given token ID Throws if the token ID does not exist. May return an empty string.", + "params": { + "tokenId": "uint256 ID of the token to query" + } + }, + "totalSupply()": { + "details": "Gets the total amount of tokens stored by the contract", + "return": "uint256 representing the total amount of tokens" + }, + "transferFrom(address,address,uint256)": { + "details": "Transfers the ownership of a given token ID to another address Usage of this method is discouraged, use `safeTransferFrom` whenever possible Requires the msg sender to be the owner, approved, or operator", + "params": { + "from": "current owner of the token", + "to": "address to receive the ownership of the given token ID", + "tokenId": "uint256 ID of the token to be transferred" + } + } + }, + "title": "Full ERC721 Token This implementation includes all the required and some optional functionality of the ERC721 standard Moreover, it includes approve all functionality using operator terminology" + }, + "userdoc": { + "methods": {} + } +} \ No newline at end of file diff --git a/node_modules/openzeppelin-solidity/build/contracts/ERC721Holder.json b/node_modules/openzeppelin-solidity/build/contracts/ERC721Holder.json new file mode 100644 index 0000000..5d24096 --- /dev/null +++ b/node_modules/openzeppelin-solidity/build/contracts/ERC721Holder.json @@ -0,0 +1,639 @@ +{ + "contractName": "ERC721Holder", + "abi": [ + { + "constant": false, + "inputs": [ + { + "name": "", + "type": "address" + }, + { + "name": "", + "type": "address" + }, + { + "name": "", + "type": "uint256" + }, + { + "name": "", + "type": "bytes" + } + ], + "name": "onERC721Received", + "outputs": [ + { + "name": "", + "type": "bytes4" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x608060405234801561001057600080fd5b50610206806100206000396000f3fe608060405260043610610041576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063150b7a0214610046575b600080fd5b34801561005257600080fd5b506101566004803603608081101561006957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001906401000000008111156100d057600080fd5b8201836020820111156100e257600080fd5b8035906020019184600183028401116401000000008311171561010457600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505091929192905050506101aa565b60405180827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200191505060405180910390f35b600063150b7a027c010000000000000000000000000000000000000000000000000000000002905094935050505056fea165627a7a7230582078a44b9488f28e30466f3ed6edb539e2b06ec8ef92ce007aa6467eb13bba41d80029", + "deployedBytecode": "0x608060405260043610610041576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063150b7a0214610046575b600080fd5b34801561005257600080fd5b506101566004803603608081101561006957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001906401000000008111156100d057600080fd5b8201836020820111156100e257600080fd5b8035906020019184600183028401116401000000008311171561010457600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505091929192905050506101aa565b60405180827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200191505060405180910390f35b600063150b7a027c010000000000000000000000000000000000000000000000000000000002905094935050505056fea165627a7a7230582078a44b9488f28e30466f3ed6edb539e2b06ec8ef92ce007aa6467eb13bba41d80029", + "sourceMap": "58:194:54:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;58:194:54;;;;;;;", + "deployedSourceMap": "58:194:54:-;;;;;;;;;;;;;;;;;;;;;;;;105:145;;8:9:-1;5:2;;;30:1;27;20:12;5:2;105:145:54;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;105:145:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;105:145:54;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;105:145:54;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;105:145:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;105:145:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;188:6;213:30;;;206:37;;105:145;;;;;;:::o", + "source": "pragma solidity ^0.5.0;\n\nimport \"./IERC721Receiver.sol\";\n\ncontract ERC721Holder is IERC721Receiver {\n function onERC721Received(address, address, uint256, bytes memory) public returns (bytes4) {\n return this.onERC721Received.selector;\n }\n}\n", + "sourcePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/token/ERC721/ERC721Holder.sol", + "ast": { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/token/ERC721/ERC721Holder.sol", + "exportedSymbols": { + "ERC721Holder": [ + 6261 + ] + }, + "id": 6262, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 6239, + "literals": [ + "solidity", + "^", + "0.5", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "0:23:54" + }, + { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/token/ERC721/IERC721Receiver.sol", + "file": "./IERC721Receiver.sol", + "id": 6240, + "nodeType": "ImportDirective", + "scope": 6262, + "sourceUnit": 6698, + "src": "25:31:54", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 6241, + "name": "IERC721Receiver", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 6697, + "src": "83:15:54", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC721Receiver_$6697", + "typeString": "contract IERC721Receiver" + } + }, + "id": 6242, + "nodeType": "InheritanceSpecifier", + "src": "83:15:54" + } + ], + "contractDependencies": [ + 6697 + ], + "contractKind": "contract", + "documentation": null, + "fullyImplemented": true, + "id": 6261, + "linearizedBaseContracts": [ + 6261, + 6697 + ], + "name": "ERC721Holder", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": { + "id": 6259, + "nodeType": "Block", + "src": "196:54:54", + "statements": [ + { + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 6255, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6982, + "src": "213:4:54", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC721Holder_$6261", + "typeString": "contract ERC721Holder" + } + }, + "id": 6256, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "onERC721Received", + "nodeType": "MemberAccess", + "referencedDeclaration": 6260, + "src": "213:21:54", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bytes4_$", + "typeString": "function (address,address,uint256,bytes memory) external returns (bytes4)" + } + }, + "id": 6257, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "selector", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "213:30:54", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "functionReturnParameters": 6254, + "id": 6258, + "nodeType": "Return", + "src": "206:37:54" + } + ] + }, + "documentation": null, + "id": 6260, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "onERC721Received", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6251, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6244, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 6260, + "src": "131:7:54", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6243, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "131:7:54", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 6246, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 6260, + "src": "140:7:54", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6245, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "140:7:54", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 6248, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 6260, + "src": "149:7:54", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6247, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "149:7:54", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 6250, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 6260, + "src": "158:12:54", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 6249, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "158:5:54", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "130:41:54" + }, + "returnParameters": { + "id": 6254, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6253, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 6260, + "src": "188:6:54", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "typeName": { + "id": 6252, + "name": "bytes4", + "nodeType": "ElementaryTypeName", + "src": "188:6:54", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "187:8:54" + }, + "scope": 6261, + "src": "105:145:54", + "stateMutability": "nonpayable", + "superFunction": 6696, + "visibility": "public" + } + ], + "scope": 6262, + "src": "58:194:54" + } + ], + "src": "0:253:54" + }, + "legacyAST": { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/token/ERC721/ERC721Holder.sol", + "exportedSymbols": { + "ERC721Holder": [ + 6261 + ] + }, + "id": 6262, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 6239, + "literals": [ + "solidity", + "^", + "0.5", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "0:23:54" + }, + { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/token/ERC721/IERC721Receiver.sol", + "file": "./IERC721Receiver.sol", + "id": 6240, + "nodeType": "ImportDirective", + "scope": 6262, + "sourceUnit": 6698, + "src": "25:31:54", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 6241, + "name": "IERC721Receiver", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 6697, + "src": "83:15:54", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC721Receiver_$6697", + "typeString": "contract IERC721Receiver" + } + }, + "id": 6242, + "nodeType": "InheritanceSpecifier", + "src": "83:15:54" + } + ], + "contractDependencies": [ + 6697 + ], + "contractKind": "contract", + "documentation": null, + "fullyImplemented": true, + "id": 6261, + "linearizedBaseContracts": [ + 6261, + 6697 + ], + "name": "ERC721Holder", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": { + "id": 6259, + "nodeType": "Block", + "src": "196:54:54", + "statements": [ + { + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 6255, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6982, + "src": "213:4:54", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC721Holder_$6261", + "typeString": "contract ERC721Holder" + } + }, + "id": 6256, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "onERC721Received", + "nodeType": "MemberAccess", + "referencedDeclaration": 6260, + "src": "213:21:54", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bytes4_$", + "typeString": "function (address,address,uint256,bytes memory) external returns (bytes4)" + } + }, + "id": 6257, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "selector", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "213:30:54", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "functionReturnParameters": 6254, + "id": 6258, + "nodeType": "Return", + "src": "206:37:54" + } + ] + }, + "documentation": null, + "id": 6260, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "onERC721Received", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6251, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6244, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 6260, + "src": "131:7:54", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6243, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "131:7:54", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 6246, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 6260, + "src": "140:7:54", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6245, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "140:7:54", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 6248, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 6260, + "src": "149:7:54", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6247, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "149:7:54", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 6250, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 6260, + "src": "158:12:54", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 6249, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "158:5:54", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "130:41:54" + }, + "returnParameters": { + "id": 6254, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6253, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 6260, + "src": "188:6:54", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "typeName": { + "id": 6252, + "name": "bytes4", + "nodeType": "ElementaryTypeName", + "src": "188:6:54", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "187:8:54" + }, + "scope": 6261, + "src": "105:145:54", + "stateMutability": "nonpayable", + "superFunction": 6696, + "visibility": "public" + } + ], + "scope": 6262, + "src": "58:194:54" + } + ], + "src": "0:253:54" + }, + "compiler": { + "name": "solc", + "version": "0.5.0+commit.1d4f565a.Emscripten.clang" + }, + "networks": {}, + "schemaVersion": "3.0.0", + "updatedAt": "2019-01-04T21:44:02.898Z", + "devdoc": { + "methods": {} + }, + "userdoc": { + "methods": {} + } +} \ No newline at end of file diff --git a/node_modules/openzeppelin-solidity/build/contracts/ERC721Metadata.json b/node_modules/openzeppelin-solidity/build/contracts/ERC721Metadata.json new file mode 100644 index 0000000..ca8b1b5 --- /dev/null +++ b/node_modules/openzeppelin-solidity/build/contracts/ERC721Metadata.json @@ -0,0 +1,3500 @@ +{ + "contractName": "ERC721Metadata", + "abi": [ + { + "constant": true, + "inputs": [ + { + "name": "interfaceId", + "type": "bytes4" + } + ], + "name": "supportsInterface", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "tokenId", + "type": "uint256" + } + ], + "name": "getApproved", + "outputs": [ + { + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "to", + "type": "address" + }, + { + "name": "tokenId", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "from", + "type": "address" + }, + { + "name": "to", + "type": "address" + }, + { + "name": "tokenId", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "from", + "type": "address" + }, + { + "name": "to", + "type": "address" + }, + { + "name": "tokenId", + "type": "uint256" + } + ], + "name": "safeTransferFrom", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "tokenId", + "type": "uint256" + } + ], + "name": "ownerOf", + "outputs": [ + { + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "owner", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "to", + "type": "address" + }, + { + "name": "approved", + "type": "bool" + } + ], + "name": "setApprovalForAll", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "from", + "type": "address" + }, + { + "name": "to", + "type": "address" + }, + { + "name": "tokenId", + "type": "uint256" + }, + { + "name": "_data", + "type": "bytes" + } + ], + "name": "safeTransferFrom", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "owner", + "type": "address" + }, + { + "name": "operator", + "type": "address" + } + ], + "name": "isApprovedForAll", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "name": "name", + "type": "string" + }, + { + "name": "symbol", + "type": "string" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "from", + "type": "address" + }, + { + "indexed": true, + "name": "to", + "type": "address" + }, + { + "indexed": true, + "name": "tokenId", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "name": "approved", + "type": "address" + }, + { + "indexed": true, + "name": "tokenId", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "name": "operator", + "type": "address" + }, + { + "indexed": false, + "name": "approved", + "type": "bool" + } + ], + "name": "ApprovalForAll", + "type": "event" + }, + { + "constant": true, + "inputs": [], + "name": "name", + "outputs": [ + { + "name": "", + "type": "string" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "symbol", + "outputs": [ + { + "name": "", + "type": "string" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "tokenId", + "type": "uint256" + } + ], + "name": "tokenURI", + "outputs": [ + { + "name": "", + "type": "string" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + } + ], + "bytecode": "0x60806040523480156200001157600080fd5b506040516200191c3803806200191c833981018060405260408110156200003757600080fd5b8101908080516401000000008111156200005057600080fd5b828101905060208101848111156200006757600080fd5b81518560018202830111640100000000821117156200008557600080fd5b50509291906020018051640100000000811115620000a257600080fd5b82810190506020810184811115620000b957600080fd5b8151856001820283011164010000000082111715620000d757600080fd5b50509291905050506200011c6301ffc9a77c010000000000000000000000000000000000000000000000000000000002620001d0640100000000026401000000009004565b620001596380ac58cd7c010000000000000000000000000000000000000000000000000000000002620001d0640100000000026401000000009004565b8160059080519060200190620001719291906200028e565b5080600690805190602001906200018a9291906200028e565b50620001c8635b5e139f7c010000000000000000000000000000000000000000000000000000000002620001d0640100000000026401000000009004565b50506200033d565b63ffffffff7c010000000000000000000000000000000000000000000000000000000002817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916141515156200022257600080fd5b6001600080837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620002d157805160ff191683800117855562000302565b8280016001018555821562000302579182015b8281111562000301578251825591602001919060010190620002e4565b5b50905062000311919062000315565b5090565b6200033a91905b80821115620003365760008160009055506001016200031c565b5090565b90565b6115cf806200034d6000396000f3fe6080604052600436106100c5576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806301ffc9a7146100ca57806306fdde031461013c578063081812fc146101cc578063095ea7b31461024757806323b872dd146102a257806342842e0e1461031d5780636352211e1461039857806370a082311461041357806395d89b4114610478578063a22cb46514610508578063b88d4fde14610565578063c87b56dd14610677578063e985e9c51461072b575b600080fd5b3480156100d657600080fd5b50610122600480360360208110156100ed57600080fd5b8101908080357bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690602001909291905050506107b4565b604051808215151515815260200191505060405180910390f35b34801561014857600080fd5b5061015161081b565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610191578082015181840152602081019050610176565b50505050905090810190601f1680156101be5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156101d857600080fd5b50610205600480360360208110156101ef57600080fd5b81019080803590602001909291905050506108bd565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561025357600080fd5b506102a06004803603604081101561026a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061090e565b005b3480156102ae57600080fd5b5061031b600480360360608110156102c557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610a53565b005b34801561032957600080fd5b506103966004803603606081101561034057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610a78565b005b3480156103a457600080fd5b506103d1600480360360208110156103bb57600080fd5b8101908080359060200190929190505050610a99565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561041f57600080fd5b506104626004803603602081101561043657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610b17565b6040518082815260200191505060405180910390f35b34801561048457600080fd5b5061048d610b9b565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156104cd5780820151818401526020810190506104b2565b50505050905090810190601f1680156104fa5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561051457600080fd5b506105636004803603604081101561052b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803515159060200190929190505050610c3d565b005b34801561057157600080fd5b506106756004803603608081101561058857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001906401000000008111156105ef57600080fd5b82018360208201111561060157600080fd5b8035906020019184600183028401116401000000008311171561062357600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050610d79565b005b34801561068357600080fd5b506106b06004803603602081101561069a57600080fd5b8101908080359060200190929190505050610da1565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156106f05780820151818401526020810190506106d5565b50505050905090810190601f16801561071d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561073757600080fd5b5061079a6004803603604081101561074e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610e6a565b604051808215151515815260200191505060405180910390f35b6000806000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060009054906101000a900460ff169050919050565b606060058054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156108b35780601f10610888576101008083540402835291602001916108b3565b820191906000526020600020905b81548152906001019060200180831161089657829003601f168201915b5050505050905090565b60006108c882610efe565b15156108d357600080fd5b6002600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b600061091982610a99565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415151561095657600080fd5b8073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061099657506109958133610e6a565b5b15156109a157600080fd5b826002600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a4505050565b610a5d3382610f70565b1515610a6857600080fd5b610a73838383611005565b505050565b610a948383836020604051908101604052806000815250610d79565b505050565b6000806001600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515610b0e57600080fd5b80915050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614151515610b5457600080fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b606060068054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610c335780601f10610c0857610100808354040283529160200191610c33565b820191906000526020600020905b815481529060010190602001808311610c1657829003601f168201915b5050505050905090565b3373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614151515610c7857600080fd5b80600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051808215151515815260200191505060405180910390a35050565b610d84848484610a53565b610d908484848461126a565b1515610d9b57600080fd5b50505050565b6060610dac82610efe565b1515610db757600080fd5b600760008381526020019081526020016000208054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610e5e5780601f10610e3357610100808354040283529160200191610e5e565b820191906000526020600020905b815481529060010190602001808311610e4157829003601f168201915b50505050509050919050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6000806001600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415915050919050565b600080610f7c83610a99565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480610feb57508373ffffffffffffffffffffffffffffffffffffffff16610fd3846108bd565b73ffffffffffffffffffffffffffffffffffffffff16145b80610ffc5750610ffb8185610e6a565b5b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff1661102582610a99565b73ffffffffffffffffffffffffffffffffffffffff1614151561104757600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415151561108357600080fd5b61108c8161148d565b6110df6001600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461154d90919063ffffffff16565b600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506111756001600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461156f90919063ffffffff16565b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816001600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b600061128b8473ffffffffffffffffffffffffffffffffffffffff16611590565b151561129a5760019050611485565b60008473ffffffffffffffffffffffffffffffffffffffff1663150b7a02338887876040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b83811015611391578082015181840152602081019050611376565b50505050905090810190601f1680156113be5780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b1580156113e057600080fd5b505af11580156113f4573d6000803e3d6000fd5b505050506040513d602081101561140a57600080fd5b8101908080519060200190929190505050905063150b7a027c0100000000000000000000000000000000000000000000000000000000027bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149150505b949350505050565b600073ffffffffffffffffffffffffffffffffffffffff166002600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561154a5760006002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b50565b600082821115151561155e57600080fd5b600082840390508091505092915050565b600080828401905083811015151561158657600080fd5b8091505092915050565b600080823b90506000811191505091905056fea165627a7a723058206ad63b16d1db9a79a303b559c5bbf9d6afe5ffd851742ec8a9a83fd472473ac70029", + "deployedBytecode": "0x6080604052600436106100c5576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806301ffc9a7146100ca57806306fdde031461013c578063081812fc146101cc578063095ea7b31461024757806323b872dd146102a257806342842e0e1461031d5780636352211e1461039857806370a082311461041357806395d89b4114610478578063a22cb46514610508578063b88d4fde14610565578063c87b56dd14610677578063e985e9c51461072b575b600080fd5b3480156100d657600080fd5b50610122600480360360208110156100ed57600080fd5b8101908080357bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690602001909291905050506107b4565b604051808215151515815260200191505060405180910390f35b34801561014857600080fd5b5061015161081b565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610191578082015181840152602081019050610176565b50505050905090810190601f1680156101be5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156101d857600080fd5b50610205600480360360208110156101ef57600080fd5b81019080803590602001909291905050506108bd565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561025357600080fd5b506102a06004803603604081101561026a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061090e565b005b3480156102ae57600080fd5b5061031b600480360360608110156102c557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610a53565b005b34801561032957600080fd5b506103966004803603606081101561034057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610a78565b005b3480156103a457600080fd5b506103d1600480360360208110156103bb57600080fd5b8101908080359060200190929190505050610a99565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561041f57600080fd5b506104626004803603602081101561043657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610b17565b6040518082815260200191505060405180910390f35b34801561048457600080fd5b5061048d610b9b565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156104cd5780820151818401526020810190506104b2565b50505050905090810190601f1680156104fa5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561051457600080fd5b506105636004803603604081101561052b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803515159060200190929190505050610c3d565b005b34801561057157600080fd5b506106756004803603608081101561058857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001906401000000008111156105ef57600080fd5b82018360208201111561060157600080fd5b8035906020019184600183028401116401000000008311171561062357600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050610d79565b005b34801561068357600080fd5b506106b06004803603602081101561069a57600080fd5b8101908080359060200190929190505050610da1565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156106f05780820151818401526020810190506106d5565b50505050905090810190601f16801561071d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561073757600080fd5b5061079a6004803603604081101561074e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610e6a565b604051808215151515815260200191505060405180910390f35b6000806000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060009054906101000a900460ff169050919050565b606060058054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156108b35780601f10610888576101008083540402835291602001916108b3565b820191906000526020600020905b81548152906001019060200180831161089657829003601f168201915b5050505050905090565b60006108c882610efe565b15156108d357600080fd5b6002600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b600061091982610a99565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415151561095657600080fd5b8073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061099657506109958133610e6a565b5b15156109a157600080fd5b826002600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a4505050565b610a5d3382610f70565b1515610a6857600080fd5b610a73838383611005565b505050565b610a948383836020604051908101604052806000815250610d79565b505050565b6000806001600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515610b0e57600080fd5b80915050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614151515610b5457600080fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b606060068054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610c335780601f10610c0857610100808354040283529160200191610c33565b820191906000526020600020905b815481529060010190602001808311610c1657829003601f168201915b5050505050905090565b3373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614151515610c7857600080fd5b80600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051808215151515815260200191505060405180910390a35050565b610d84848484610a53565b610d908484848461126a565b1515610d9b57600080fd5b50505050565b6060610dac82610efe565b1515610db757600080fd5b600760008381526020019081526020016000208054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610e5e5780601f10610e3357610100808354040283529160200191610e5e565b820191906000526020600020905b815481529060010190602001808311610e4157829003601f168201915b50505050509050919050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6000806001600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415915050919050565b600080610f7c83610a99565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480610feb57508373ffffffffffffffffffffffffffffffffffffffff16610fd3846108bd565b73ffffffffffffffffffffffffffffffffffffffff16145b80610ffc5750610ffb8185610e6a565b5b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff1661102582610a99565b73ffffffffffffffffffffffffffffffffffffffff1614151561104757600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415151561108357600080fd5b61108c8161148d565b6110df6001600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461154d90919063ffffffff16565b600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506111756001600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461156f90919063ffffffff16565b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816001600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b600061128b8473ffffffffffffffffffffffffffffffffffffffff16611590565b151561129a5760019050611485565b60008473ffffffffffffffffffffffffffffffffffffffff1663150b7a02338887876040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b83811015611391578082015181840152602081019050611376565b50505050905090810190601f1680156113be5780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b1580156113e057600080fd5b505af11580156113f4573d6000803e3d6000fd5b505050506040513d602081101561140a57600080fd5b8101908080519060200190929190505050905063150b7a027c0100000000000000000000000000000000000000000000000000000000027bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149150505b949350505050565b600073ffffffffffffffffffffffffffffffffffffffff166002600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561154a5760006002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b50565b600082821115151561155e57600080fd5b600082840390508091505092915050565b600080828401905083811015151561158657600080fd5b8091505092915050565b600080823b90506000811191505091905056fea165627a7a723058206ad63b16d1db9a79a303b559c5bbf9d6afe5ffd851742ec8a9a83fd472473ac70029", + "sourceMap": "122:2443:55:-;;;666:254;8:9:-1;5:2;;;30:1;27;20:12;5:2;666:254:55;;;;;;;;;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;666:254:55;;;;;;19:11:-1;14:3;11:20;8:2;;;44:1;41;34:12;8:2;71:11;66:3;62:21;55:28;;123:4;118:3;114:14;159:9;141:16;138:31;135:2;;;182:1;179;172:12;135:2;219:3;213:10;330:9;325:1;311:12;307:20;289:16;285:43;282:58;261:11;247:12;244:29;233:115;230:2;;;361:1;358;351:12;230:2;0:372;;666:254:55;;;;;;;19:11:-1;14:3;11:20;8:2;;;44:1;41;34:12;8:2;71:11;66:3;62:21;55:28;;123:4;118:3;114:14;159:9;141:16;138:31;135:2;;;182:1;179;172:12;135:2;219:3;213:10;330:9;325:1;311:12;307:20;289:16;285:43;282:58;261:11;247:12;244:29;233:115;230:2;;;361:1;358;351:12;230:2;0:372;;666:254:55;;;;;;640:40:28;236:10;659:20;;640:18;;;:40;;;:::i;:::-;1906::50;1163:10;1925:20;;1906:18;;;:40;;;:::i;:::-;746:4:55;738:5;:12;;;;;;;;;;;;:::i;:::-;;770:6;760:7;:16;;;;;;;;;;;;:::i;:::-;;864:49;428:10;883:29;;864:18;;;:49;;;:::i;:::-;666:254;;122:2443;;990:158:28;1080:10;1065:25;;:11;:25;;;;;1057:34;;;;;;;;1137:4;1101:20;:33;1122:11;1101:33;;;;;;;;;;;;;;;;;;:40;;;;;;;;;;;;;;;;;;990:158;:::o;122:2443:55:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;", + "deployedSourceMap": "122:2443:55:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;778:133:28;;8:9:-1;5:2;;;30:1;27;20:12;5:2;778:133:28;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;778:133:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1024:83:55;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1024:83:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;1024:83:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3705:151:50;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3705:151:50;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3705:151:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3128:292;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3128:292:50;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3128:292:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5260:180;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5260:180:50;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;5260:180:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6079:132;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6079:132:50;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;6079:132:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2530:177;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2530:177:50;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2530:177:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2156:150;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2156:150:50;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2156:150:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1215:87:55;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1215:87:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;1215:87:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4148:213:50;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4148:213:50;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4148:213:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6916:211;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6916:211:50;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;6916:211:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;6916:211:50;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;6916:211:50;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;6916:211:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;6916:211:50;;;;;;;;;;;;;;;;;;1501:151:55;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1501:151:55;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1501:151:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;1501:151:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4682:145:50;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4682:145:50;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4682:145:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;778:133:28;848:4;871:20;:33;892:11;871:33;;;;;;;;;;;;;;;;;;;;;;;;;;;864:40;;778:133;;;:::o;1024:83:55:-;1063:13;1095:5;1088:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1024:83;:::o;3705:151:50:-;3764:7;3791:16;3799:7;3791;:16::i;:::-;3783:25;;;;;;;;3825:15;:24;3841:7;3825:24;;;;;;;;;;;;;;;;;;;;;3818:31;;3705:151;;;:::o;3128:292::-;3191:13;3207:16;3215:7;3207;:16::i;:::-;3191:32;;3247:5;3241:11;;:2;:11;;;;3233:20;;;;;;;;3285:5;3271:19;;:10;:19;;;:58;;;;3294:35;3311:5;3318:10;3294:16;:35::i;:::-;3271:58;3263:67;;;;;;;;3368:2;3341:15;:24;3357:7;3341:24;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;3405:7;3401:2;3385:28;;3394:5;3385:28;;;;;;;;;;;;3128:292;;;:::o;5260:180::-;5350:39;5369:10;5381:7;5350:18;:39::i;:::-;5342:48;;;;;;;;5401:32;5415:4;5421:2;5425:7;5401:13;:32::i;:::-;5260:180;;;:::o;6079:132::-;6165:39;6182:4;6188:2;6192:7;6165:39;;;;;;;;;;;;;:16;:39::i;:::-;6079:132;;;:::o;2530:177::-;2585:7;2604:13;2620:11;:20;2632:7;2620:20;;;;;;;;;;;;;;;;;;;;;2604:36;;2675:1;2658:19;;:5;:19;;;;2650:28;;;;;;;;2695:5;2688:12;;;2530:177;;;:::o;2156:150::-;2211:7;2255:1;2238:19;;:5;:19;;;;2230:28;;;;;;;;2275:17;:24;2293:5;2275:24;;;;;;;;;;;;;;;;2268:31;;2156:150;;;:::o;1215:87:55:-;1256:13;1288:7;1281:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1215:87;:::o;4148:213:50:-;4233:10;4227:16;;:2;:16;;;;4219:25;;;;;;;;4291:8;4254:18;:30;4273:10;4254:30;;;;;;;;;;;;;;;:34;4285:2;4254:34;;;;;;;;;;;;;;;;:45;;;;;;;;;;;;;;;;;;4341:2;4314:40;;4329:10;4314:40;;;4345:8;4314:40;;;;;;;;;;;;;;;;;;;;;;4148:213;;:::o;6916:211::-;7022:31;7035:4;7041:2;7045:7;7022:12;:31::i;:::-;7071:48;7094:4;7100:2;7104:7;7113:5;7071:22;:48::i;:::-;7063:57;;;;;;;;6916:211;;;;:::o;1501:151:55:-;1559:13;1592:16;1600:7;1592;:16::i;:::-;1584:25;;;;;;;;1626:10;:19;1637:7;1626:19;;;;;;;;;;;1619:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1501:151;;;:::o;4682:145:50:-;4762:4;4785:18;:25;4804:5;4785:25;;;;;;;;;;;;;;;:35;4811:8;4785:35;;;;;;;;;;;;;;;;;;;;;;;;;4778:42;;4682:145;;;;:::o;7316:152::-;7373:4;7389:13;7405:11;:20;7417:7;7405:20;;;;;;;;;;;;;;;;;;;;;7389:36;;7459:1;7442:19;;:5;:19;;;;7435:26;;;7316:152;;;:::o;7831:246::-;7916:4;7932:13;7948:16;7956:7;7948;:16::i;:::-;7932:32;;7993:5;7982:16;;:7;:16;;;:51;;;;8026:7;8002:31;;:20;8014:7;8002:11;:20::i;:::-;:31;;;7982:51;:87;;;;8037:32;8054:5;8061:7;8037:16;:32::i;:::-;7982:87;7974:96;;;7831:246;;;;:::o;9819:402::-;9932:4;9912:24;;:16;9920:7;9912;:16::i;:::-;:24;;;9904:33;;;;;;;;9969:1;9955:16;;:2;:16;;;;9947:25;;;;;;;;9983:23;9998:7;9983:14;:23::i;:::-;10043:30;10071:1;10043:17;:23;10061:4;10043:23;;;;;;;;;;;;;;;;:27;;:30;;;;:::i;:::-;10017:17;:23;10035:4;10017:23;;;;;;;;;;;;;;;:56;;;;10107:28;10133:1;10107:17;:21;10125:2;10107:21;;;;;;;;;;;;;;;;:25;;:28;;;;:::i;:::-;10083:17;:21;10101:2;10083:21;;;;;;;;;;;;;;;:52;;;;10169:2;10146:11;:20;10158:7;10146:20;;;;;;;;;;;;:25;;;;;;;;;;;;;;;;;;10206:7;10202:2;10187:27;;10196:4;10187:27;;;;;;;;;;;;9819:402;;;:::o;10744:347::-;10865:4;10890:15;:2;:13;;;:15::i;:::-;10889:16;10885:58;;;10928:4;10921:11;;;;10885:58;10953:13;10985:2;10969:36;;;11006:10;11018:4;11024:7;11033:5;10969:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;10969:70:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10969:70:50;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;10969:70:50;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;10969:70:50;;;;;;;;;;;;;;;;10953:86;;658:10;11067:16;;11057:26;;;:6;:26;;;;11049:35;;;10744:347;;;;;;;:::o;11252:171::-;11351:1;11315:38;;:15;:24;11331:7;11315:24;;;;;;;;;;;;;;;;;;;;;:38;;;;11311:106;;;11404:1;11369:15;:24;11385:7;11369:24;;;;;;;;;;;;:37;;;;;;;;;;;;;;;;;;11311:106;11252:171;:::o;1205:145:33:-;1263:7;1295:1;1290;:6;;1282:15;;;;;;;;1307:9;1323:1;1319;:5;1307:17;;1342:1;1335:8;;;1205:145;;;;:::o;1431:::-;1489:7;1508:9;1524:1;1520;:5;1508:17;;1548:1;1543;:6;;1535:15;;;;;;;;1568:1;1561:8;;;1431:145;;;;:::o;463:616:64:-;523:4;539:12;1038:7;1026:20;1018:28;;1071:1;1064:4;:8;1057:15;;;463:616;;;:::o", + "source": "pragma solidity ^0.5.0;\n\nimport \"./ERC721.sol\";\nimport \"./IERC721Metadata.sol\";\nimport \"../../introspection/ERC165.sol\";\n\ncontract ERC721Metadata is ERC165, ERC721, IERC721Metadata {\n // Token name\n string private _name;\n\n // Token symbol\n string private _symbol;\n\n // Optional mapping for token URIs\n mapping(uint256 => string) private _tokenURIs;\n\n bytes4 private constant _INTERFACE_ID_ERC721_METADATA = 0x5b5e139f;\n /**\n * 0x5b5e139f ===\n * bytes4(keccak256('name()')) ^\n * bytes4(keccak256('symbol()')) ^\n * bytes4(keccak256('tokenURI(uint256)'))\n */\n\n /**\n * @dev Constructor function\n */\n constructor (string memory name, string memory symbol) public {\n _name = name;\n _symbol = symbol;\n\n // register the supported interfaces to conform to ERC721 via ERC165\n _registerInterface(_INTERFACE_ID_ERC721_METADATA);\n }\n\n /**\n * @dev Gets the token name\n * @return string representing the token name\n */\n function name() external view returns (string memory) {\n return _name;\n }\n\n /**\n * @dev Gets the token symbol\n * @return string representing the token symbol\n */\n function symbol() external view returns (string memory) {\n return _symbol;\n }\n\n /**\n * @dev Returns an URI for a given token ID\n * Throws if the token ID does not exist. May return an empty string.\n * @param tokenId uint256 ID of the token to query\n */\n function tokenURI(uint256 tokenId) external view returns (string memory) {\n require(_exists(tokenId));\n return _tokenURIs[tokenId];\n }\n\n /**\n * @dev Internal function to set the token URI for a given token\n * Reverts if the token ID does not exist\n * @param tokenId uint256 ID of the token to set its URI\n * @param uri string URI to assign\n */\n function _setTokenURI(uint256 tokenId, string memory uri) internal {\n require(_exists(tokenId));\n _tokenURIs[tokenId] = uri;\n }\n\n /**\n * @dev Internal function to burn a specific token\n * Reverts if the token does not exist\n * Deprecated, use _burn(uint256) instead\n * @param owner owner of the token to burn\n * @param tokenId uint256 ID of the token being burned by the msg.sender\n */\n function _burn(address owner, uint256 tokenId) internal {\n super._burn(owner, tokenId);\n\n // Clear metadata (if any)\n if (bytes(_tokenURIs[tokenId]).length != 0) {\n delete _tokenURIs[tokenId];\n }\n }\n}\n", + "sourcePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/token/ERC721/ERC721Metadata.sol", + "ast": { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/token/ERC721/ERC721Metadata.sol", + "exportedSymbols": { + "ERC721Metadata": [ + 6388 + ] + }, + "id": 6389, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 6263, + "literals": [ + "solidity", + "^", + "0.5", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "0:23:55" + }, + { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/token/ERC721/ERC721.sol", + "file": "./ERC721.sol", + "id": 6264, + "nodeType": "ImportDirective", + "scope": 6389, + "sourceUnit": 5855, + "src": "25:22:55", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/token/ERC721/IERC721Metadata.sol", + "file": "./IERC721Metadata.sol", + "id": 6265, + "nodeType": "ImportDirective", + "scope": 6389, + "sourceUnit": 6682, + "src": "48:31:55", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/introspection/ERC165.sol", + "file": "../../introspection/ERC165.sol", + "id": 6266, + "nodeType": "ImportDirective", + "scope": 6389, + "sourceUnit": 3056, + "src": "80:40:55", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 6267, + "name": "ERC165", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 3055, + "src": "149:6:55", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC165_$3055", + "typeString": "contract ERC165" + } + }, + "id": 6268, + "nodeType": "InheritanceSpecifier", + "src": "149:6:55" + }, + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 6269, + "name": "ERC721", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 5854, + "src": "157:6:55", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC721_$5854", + "typeString": "contract ERC721" + } + }, + "id": 6270, + "nodeType": "InheritanceSpecifier", + "src": "157:6:55" + }, + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 6271, + "name": "IERC721Metadata", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 6681, + "src": "165:15:55", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC721Metadata_$6681", + "typeString": "contract IERC721Metadata" + } + }, + "id": 6272, + "nodeType": "InheritanceSpecifier", + "src": "165:15:55" + } + ], + "contractDependencies": [ + 3055, + 3202, + 5854, + 6619, + 6681 + ], + "contractKind": "contract", + "documentation": null, + "fullyImplemented": true, + "id": 6388, + "linearizedBaseContracts": [ + 6388, + 6681, + 5854, + 6619, + 3055, + 3202 + ], + "name": "ERC721Metadata", + "nodeType": "ContractDefinition", + "nodes": [ + { + "constant": false, + "id": 6274, + "name": "_name", + "nodeType": "VariableDeclaration", + "scope": 6388, + "src": "205:20:55", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string" + }, + "typeName": { + "id": 6273, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "205:6:55", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "private" + }, + { + "constant": false, + "id": 6276, + "name": "_symbol", + "nodeType": "VariableDeclaration", + "scope": 6388, + "src": "252:22:55", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string" + }, + "typeName": { + "id": 6275, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "252:6:55", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "private" + }, + { + "constant": false, + "id": 6280, + "name": "_tokenURIs", + "nodeType": "VariableDeclaration", + "scope": 6388, + "src": "320:45:55", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_string_storage_$", + "typeString": "mapping(uint256 => string)" + }, + "typeName": { + "id": 6279, + "keyType": { + "id": 6277, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "328:7:55", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Mapping", + "src": "320:26:55", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_string_storage_$", + "typeString": "mapping(uint256 => string)" + }, + "valueType": { + "id": 6278, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "339:6:55", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + } + }, + "value": null, + "visibility": "private" + }, + { + "constant": true, + "id": 6283, + "name": "_INTERFACE_ID_ERC721_METADATA", + "nodeType": "VariableDeclaration", + "scope": 6388, + "src": "372:66:55", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "typeName": { + "id": 6281, + "name": "bytes4", + "nodeType": "ElementaryTypeName", + "src": "372:6:55", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "value": { + "argumentTypes": null, + "hexValue": "30783562356531333966", + "id": 6282, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "428:10:55", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1532892063_by_1", + "typeString": "int_const 1532892063" + }, + "value": "0x5b5e139f" + }, + "visibility": "private" + }, + { + "body": { + "id": 6302, + "nodeType": "Block", + "src": "728:192:55", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 6292, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 6290, + "name": "_name", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6274, + "src": "738:5:55", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 6291, + "name": "name", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6285, + "src": "746:4:55", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "src": "738:12:55", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "id": 6293, + "nodeType": "ExpressionStatement", + "src": "738:12:55" + }, + { + "expression": { + "argumentTypes": null, + "id": 6296, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 6294, + "name": "_symbol", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6276, + "src": "760:7:55", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 6295, + "name": "symbol", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6287, + "src": "770:6:55", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "src": "760:16:55", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "id": 6297, + "nodeType": "ExpressionStatement", + "src": "760:16:55" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 6299, + "name": "_INTERFACE_ID_ERC721_METADATA", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6283, + "src": "883:29:55", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + ], + "id": 6298, + "name": "_registerInterface", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3054, + "src": "864:18:55", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes4_$returns$__$", + "typeString": "function (bytes4)" + } + }, + "id": 6300, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "864:49:55", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 6301, + "nodeType": "ExpressionStatement", + "src": "864:49:55" + } + ] + }, + "documentation": "@dev Constructor function", + "id": 6303, + "implemented": true, + "kind": "constructor", + "modifiers": [], + "name": "", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6288, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6285, + "name": "name", + "nodeType": "VariableDeclaration", + "scope": 6303, + "src": "679:18:55", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 6284, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "679:6:55", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 6287, + "name": "symbol", + "nodeType": "VariableDeclaration", + "scope": 6303, + "src": "699:20:55", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 6286, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "699:6:55", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "678:42:55" + }, + "returnParameters": { + "id": 6289, + "nodeType": "ParameterList", + "parameters": [], + "src": "728:0:55" + }, + "scope": 6388, + "src": "666:254:55", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 6310, + "nodeType": "Block", + "src": "1078:29:55", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 6308, + "name": "_name", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6274, + "src": "1095:5:55", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "functionReturnParameters": 6307, + "id": 6309, + "nodeType": "Return", + "src": "1088:12:55" + } + ] + }, + "documentation": "@dev Gets the token name\n@return string representing the token name", + "id": 6311, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "name", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6304, + "nodeType": "ParameterList", + "parameters": [], + "src": "1037:2:55" + }, + "returnParameters": { + "id": 6307, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6306, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 6311, + "src": "1063:13:55", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 6305, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "1063:6:55", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1062:15:55" + }, + "scope": 6388, + "src": "1024:83:55", + "stateMutability": "view", + "superFunction": 6668, + "visibility": "external" + }, + { + "body": { + "id": 6318, + "nodeType": "Block", + "src": "1271:31:55", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 6316, + "name": "_symbol", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6276, + "src": "1288:7:55", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "functionReturnParameters": 6315, + "id": 6317, + "nodeType": "Return", + "src": "1281:14:55" + } + ] + }, + "documentation": "@dev Gets the token symbol\n@return string representing the token symbol", + "id": 6319, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "symbol", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6312, + "nodeType": "ParameterList", + "parameters": [], + "src": "1230:2:55" + }, + "returnParameters": { + "id": 6315, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6314, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 6319, + "src": "1256:13:55", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 6313, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "1256:6:55", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1255:15:55" + }, + "scope": 6388, + "src": "1215:87:55", + "stateMutability": "view", + "superFunction": 6673, + "visibility": "external" + }, + { + "body": { + "id": 6336, + "nodeType": "Block", + "src": "1574:78:55", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 6328, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6321, + "src": "1600:7:55", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 6327, + "name": "_exists", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5586, + "src": "1592:7:55", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_bool_$", + "typeString": "function (uint256) view returns (bool)" + } + }, + "id": 6329, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1592:16:55", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 6326, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6848, + 6849 + ], + "referencedDeclaration": 6848, + "src": "1584:7:55", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 6330, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1584:25:55", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 6331, + "nodeType": "ExpressionStatement", + "src": "1584:25:55" + }, + { + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 6332, + "name": "_tokenURIs", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6280, + "src": "1626:10:55", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_string_storage_$", + "typeString": "mapping(uint256 => string storage ref)" + } + }, + "id": 6334, + "indexExpression": { + "argumentTypes": null, + "id": 6333, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6321, + "src": "1637:7:55", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "1626:19:55", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "functionReturnParameters": 6325, + "id": 6335, + "nodeType": "Return", + "src": "1619:26:55" + } + ] + }, + "documentation": "@dev Returns an URI for a given token ID\nThrows if the token ID does not exist. May return an empty string.\n@param tokenId uint256 ID of the token to query", + "id": 6337, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "tokenURI", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6322, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6321, + "name": "tokenId", + "nodeType": "VariableDeclaration", + "scope": 6337, + "src": "1519:15:55", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6320, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1519:7:55", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1518:17:55" + }, + "returnParameters": { + "id": 6325, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6324, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 6337, + "src": "1559:13:55", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 6323, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "1559:6:55", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1558:15:55" + }, + "scope": 6388, + "src": "1501:151:55", + "stateMutability": "view", + "superFunction": 6680, + "visibility": "external" + }, + { + "body": { + "id": 6356, + "nodeType": "Block", + "src": "1956:77:55", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 6346, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6339, + "src": "1982:7:55", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 6345, + "name": "_exists", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5586, + "src": "1974:7:55", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_bool_$", + "typeString": "function (uint256) view returns (bool)" + } + }, + "id": 6347, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1974:16:55", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 6344, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6848, + 6849 + ], + "referencedDeclaration": 6848, + "src": "1966:7:55", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 6348, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1966:25:55", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 6349, + "nodeType": "ExpressionStatement", + "src": "1966:25:55" + }, + { + "expression": { + "argumentTypes": null, + "id": 6354, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 6350, + "name": "_tokenURIs", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6280, + "src": "2001:10:55", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_string_storage_$", + "typeString": "mapping(uint256 => string storage ref)" + } + }, + "id": 6352, + "indexExpression": { + "argumentTypes": null, + "id": 6351, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6339, + "src": "2012:7:55", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "2001:19:55", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 6353, + "name": "uri", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6341, + "src": "2023:3:55", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "src": "2001:25:55", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "id": 6355, + "nodeType": "ExpressionStatement", + "src": "2001:25:55" + } + ] + }, + "documentation": "@dev Internal function to set the token URI for a given token\nReverts if the token ID does not exist\n@param tokenId uint256 ID of the token to set its URI\n@param uri string URI to assign", + "id": 6357, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_setTokenURI", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6342, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6339, + "name": "tokenId", + "nodeType": "VariableDeclaration", + "scope": 6357, + "src": "1911:15:55", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6338, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1911:7:55", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 6341, + "name": "uri", + "nodeType": "VariableDeclaration", + "scope": 6357, + "src": "1928:17:55", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 6340, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "1928:6:55", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1910:36:55" + }, + "returnParameters": { + "id": 6343, + "nodeType": "ParameterList", + "parameters": [], + "src": "1956:0:55" + }, + "scope": 6388, + "src": "1889:144:55", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 6386, + "nodeType": "Block", + "src": "2379:184:55", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 6367, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6359, + "src": "2401:5:55", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 6368, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6361, + "src": "2408:7:55", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 6364, + "name": "super", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6979, + "src": "2389:5:55", + "typeDescriptions": { + "typeIdentifier": "t_super$_ERC721Metadata_$6388", + "typeString": "contract super ERC721Metadata" + } + }, + "id": 6366, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "_burn", + "nodeType": "MemberAccess", + "referencedDeclaration": 5713, + "src": "2389:11:55", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 6369, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2389:27:55", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 6370, + "nodeType": "ExpressionStatement", + "src": "2389:27:55" + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6378, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 6372, + "name": "_tokenURIs", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6280, + "src": "2472:10:55", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_string_storage_$", + "typeString": "mapping(uint256 => string storage ref)" + } + }, + "id": 6374, + "indexExpression": { + "argumentTypes": null, + "id": 6373, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6361, + "src": "2483:7:55", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2472:19:55", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + ], + "id": 6371, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2466:5:55", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes_storage_ptr_$", + "typeString": "type(bytes storage pointer)" + }, + "typeName": "bytes" + }, + "id": 6375, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2466:26:55", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes storage pointer" + } + }, + "id": 6376, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2466:33:55", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 6377, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2503:1:55", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "2466:38:55", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 6385, + "nodeType": "IfStatement", + "src": "2462:95:55", + "trueBody": { + "id": 6384, + "nodeType": "Block", + "src": "2506:51:55", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 6382, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "delete", + "prefix": true, + "src": "2520:26:55", + "subExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 6379, + "name": "_tokenURIs", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6280, + "src": "2527:10:55", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_string_storage_$", + "typeString": "mapping(uint256 => string storage ref)" + } + }, + "id": 6381, + "indexExpression": { + "argumentTypes": null, + "id": 6380, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6361, + "src": "2538:7:55", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "2527:19:55", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 6383, + "nodeType": "ExpressionStatement", + "src": "2520:26:55" + } + ] + } + } + ] + }, + "documentation": "@dev Internal function to burn a specific token\nReverts if the token does not exist\nDeprecated, use _burn(uint256) instead\n@param owner owner of the token to burn\n@param tokenId uint256 ID of the token being burned by the msg.sender", + "id": 6387, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_burn", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6362, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6359, + "name": "owner", + "nodeType": "VariableDeclaration", + "scope": 6387, + "src": "2338:13:55", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6358, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2338:7:55", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 6361, + "name": "tokenId", + "nodeType": "VariableDeclaration", + "scope": 6387, + "src": "2353:15:55", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6360, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2353:7:55", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2337:32:55" + }, + "returnParameters": { + "id": 6363, + "nodeType": "ParameterList", + "parameters": [], + "src": "2379:0:55" + }, + "scope": 6388, + "src": "2323:240:55", + "stateMutability": "nonpayable", + "superFunction": 5713, + "visibility": "internal" + } + ], + "scope": 6389, + "src": "122:2443:55" + } + ], + "src": "0:2566:55" + }, + "legacyAST": { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/token/ERC721/ERC721Metadata.sol", + "exportedSymbols": { + "ERC721Metadata": [ + 6388 + ] + }, + "id": 6389, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 6263, + "literals": [ + "solidity", + "^", + "0.5", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "0:23:55" + }, + { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/token/ERC721/ERC721.sol", + "file": "./ERC721.sol", + "id": 6264, + "nodeType": "ImportDirective", + "scope": 6389, + "sourceUnit": 5855, + "src": "25:22:55", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/token/ERC721/IERC721Metadata.sol", + "file": "./IERC721Metadata.sol", + "id": 6265, + "nodeType": "ImportDirective", + "scope": 6389, + "sourceUnit": 6682, + "src": "48:31:55", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/introspection/ERC165.sol", + "file": "../../introspection/ERC165.sol", + "id": 6266, + "nodeType": "ImportDirective", + "scope": 6389, + "sourceUnit": 3056, + "src": "80:40:55", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 6267, + "name": "ERC165", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 3055, + "src": "149:6:55", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC165_$3055", + "typeString": "contract ERC165" + } + }, + "id": 6268, + "nodeType": "InheritanceSpecifier", + "src": "149:6:55" + }, + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 6269, + "name": "ERC721", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 5854, + "src": "157:6:55", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC721_$5854", + "typeString": "contract ERC721" + } + }, + "id": 6270, + "nodeType": "InheritanceSpecifier", + "src": "157:6:55" + }, + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 6271, + "name": "IERC721Metadata", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 6681, + "src": "165:15:55", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC721Metadata_$6681", + "typeString": "contract IERC721Metadata" + } + }, + "id": 6272, + "nodeType": "InheritanceSpecifier", + "src": "165:15:55" + } + ], + "contractDependencies": [ + 3055, + 3202, + 5854, + 6619, + 6681 + ], + "contractKind": "contract", + "documentation": null, + "fullyImplemented": true, + "id": 6388, + "linearizedBaseContracts": [ + 6388, + 6681, + 5854, + 6619, + 3055, + 3202 + ], + "name": "ERC721Metadata", + "nodeType": "ContractDefinition", + "nodes": [ + { + "constant": false, + "id": 6274, + "name": "_name", + "nodeType": "VariableDeclaration", + "scope": 6388, + "src": "205:20:55", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string" + }, + "typeName": { + "id": 6273, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "205:6:55", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "private" + }, + { + "constant": false, + "id": 6276, + "name": "_symbol", + "nodeType": "VariableDeclaration", + "scope": 6388, + "src": "252:22:55", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string" + }, + "typeName": { + "id": 6275, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "252:6:55", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "private" + }, + { + "constant": false, + "id": 6280, + "name": "_tokenURIs", + "nodeType": "VariableDeclaration", + "scope": 6388, + "src": "320:45:55", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_string_storage_$", + "typeString": "mapping(uint256 => string)" + }, + "typeName": { + "id": 6279, + "keyType": { + "id": 6277, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "328:7:55", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Mapping", + "src": "320:26:55", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_string_storage_$", + "typeString": "mapping(uint256 => string)" + }, + "valueType": { + "id": 6278, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "339:6:55", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + } + }, + "value": null, + "visibility": "private" + }, + { + "constant": true, + "id": 6283, + "name": "_INTERFACE_ID_ERC721_METADATA", + "nodeType": "VariableDeclaration", + "scope": 6388, + "src": "372:66:55", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "typeName": { + "id": 6281, + "name": "bytes4", + "nodeType": "ElementaryTypeName", + "src": "372:6:55", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "value": { + "argumentTypes": null, + "hexValue": "30783562356531333966", + "id": 6282, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "428:10:55", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1532892063_by_1", + "typeString": "int_const 1532892063" + }, + "value": "0x5b5e139f" + }, + "visibility": "private" + }, + { + "body": { + "id": 6302, + "nodeType": "Block", + "src": "728:192:55", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 6292, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 6290, + "name": "_name", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6274, + "src": "738:5:55", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 6291, + "name": "name", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6285, + "src": "746:4:55", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "src": "738:12:55", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "id": 6293, + "nodeType": "ExpressionStatement", + "src": "738:12:55" + }, + { + "expression": { + "argumentTypes": null, + "id": 6296, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 6294, + "name": "_symbol", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6276, + "src": "760:7:55", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 6295, + "name": "symbol", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6287, + "src": "770:6:55", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "src": "760:16:55", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "id": 6297, + "nodeType": "ExpressionStatement", + "src": "760:16:55" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 6299, + "name": "_INTERFACE_ID_ERC721_METADATA", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6283, + "src": "883:29:55", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + ], + "id": 6298, + "name": "_registerInterface", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3054, + "src": "864:18:55", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes4_$returns$__$", + "typeString": "function (bytes4)" + } + }, + "id": 6300, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "864:49:55", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 6301, + "nodeType": "ExpressionStatement", + "src": "864:49:55" + } + ] + }, + "documentation": "@dev Constructor function", + "id": 6303, + "implemented": true, + "kind": "constructor", + "modifiers": [], + "name": "", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6288, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6285, + "name": "name", + "nodeType": "VariableDeclaration", + "scope": 6303, + "src": "679:18:55", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 6284, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "679:6:55", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 6287, + "name": "symbol", + "nodeType": "VariableDeclaration", + "scope": 6303, + "src": "699:20:55", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 6286, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "699:6:55", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "678:42:55" + }, + "returnParameters": { + "id": 6289, + "nodeType": "ParameterList", + "parameters": [], + "src": "728:0:55" + }, + "scope": 6388, + "src": "666:254:55", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 6310, + "nodeType": "Block", + "src": "1078:29:55", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 6308, + "name": "_name", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6274, + "src": "1095:5:55", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "functionReturnParameters": 6307, + "id": 6309, + "nodeType": "Return", + "src": "1088:12:55" + } + ] + }, + "documentation": "@dev Gets the token name\n@return string representing the token name", + "id": 6311, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "name", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6304, + "nodeType": "ParameterList", + "parameters": [], + "src": "1037:2:55" + }, + "returnParameters": { + "id": 6307, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6306, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 6311, + "src": "1063:13:55", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 6305, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "1063:6:55", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1062:15:55" + }, + "scope": 6388, + "src": "1024:83:55", + "stateMutability": "view", + "superFunction": 6668, + "visibility": "external" + }, + { + "body": { + "id": 6318, + "nodeType": "Block", + "src": "1271:31:55", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 6316, + "name": "_symbol", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6276, + "src": "1288:7:55", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "functionReturnParameters": 6315, + "id": 6317, + "nodeType": "Return", + "src": "1281:14:55" + } + ] + }, + "documentation": "@dev Gets the token symbol\n@return string representing the token symbol", + "id": 6319, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "symbol", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6312, + "nodeType": "ParameterList", + "parameters": [], + "src": "1230:2:55" + }, + "returnParameters": { + "id": 6315, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6314, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 6319, + "src": "1256:13:55", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 6313, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "1256:6:55", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1255:15:55" + }, + "scope": 6388, + "src": "1215:87:55", + "stateMutability": "view", + "superFunction": 6673, + "visibility": "external" + }, + { + "body": { + "id": 6336, + "nodeType": "Block", + "src": "1574:78:55", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 6328, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6321, + "src": "1600:7:55", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 6327, + "name": "_exists", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5586, + "src": "1592:7:55", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_bool_$", + "typeString": "function (uint256) view returns (bool)" + } + }, + "id": 6329, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1592:16:55", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 6326, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6848, + 6849 + ], + "referencedDeclaration": 6848, + "src": "1584:7:55", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 6330, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1584:25:55", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 6331, + "nodeType": "ExpressionStatement", + "src": "1584:25:55" + }, + { + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 6332, + "name": "_tokenURIs", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6280, + "src": "1626:10:55", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_string_storage_$", + "typeString": "mapping(uint256 => string storage ref)" + } + }, + "id": 6334, + "indexExpression": { + "argumentTypes": null, + "id": 6333, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6321, + "src": "1637:7:55", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "1626:19:55", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "functionReturnParameters": 6325, + "id": 6335, + "nodeType": "Return", + "src": "1619:26:55" + } + ] + }, + "documentation": "@dev Returns an URI for a given token ID\nThrows if the token ID does not exist. May return an empty string.\n@param tokenId uint256 ID of the token to query", + "id": 6337, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "tokenURI", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6322, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6321, + "name": "tokenId", + "nodeType": "VariableDeclaration", + "scope": 6337, + "src": "1519:15:55", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6320, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1519:7:55", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1518:17:55" + }, + "returnParameters": { + "id": 6325, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6324, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 6337, + "src": "1559:13:55", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 6323, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "1559:6:55", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1558:15:55" + }, + "scope": 6388, + "src": "1501:151:55", + "stateMutability": "view", + "superFunction": 6680, + "visibility": "external" + }, + { + "body": { + "id": 6356, + "nodeType": "Block", + "src": "1956:77:55", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 6346, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6339, + "src": "1982:7:55", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 6345, + "name": "_exists", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5586, + "src": "1974:7:55", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_bool_$", + "typeString": "function (uint256) view returns (bool)" + } + }, + "id": 6347, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1974:16:55", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 6344, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6848, + 6849 + ], + "referencedDeclaration": 6848, + "src": "1966:7:55", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 6348, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1966:25:55", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 6349, + "nodeType": "ExpressionStatement", + "src": "1966:25:55" + }, + { + "expression": { + "argumentTypes": null, + "id": 6354, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 6350, + "name": "_tokenURIs", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6280, + "src": "2001:10:55", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_string_storage_$", + "typeString": "mapping(uint256 => string storage ref)" + } + }, + "id": 6352, + "indexExpression": { + "argumentTypes": null, + "id": 6351, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6339, + "src": "2012:7:55", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "2001:19:55", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 6353, + "name": "uri", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6341, + "src": "2023:3:55", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "src": "2001:25:55", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "id": 6355, + "nodeType": "ExpressionStatement", + "src": "2001:25:55" + } + ] + }, + "documentation": "@dev Internal function to set the token URI for a given token\nReverts if the token ID does not exist\n@param tokenId uint256 ID of the token to set its URI\n@param uri string URI to assign", + "id": 6357, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_setTokenURI", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6342, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6339, + "name": "tokenId", + "nodeType": "VariableDeclaration", + "scope": 6357, + "src": "1911:15:55", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6338, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1911:7:55", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 6341, + "name": "uri", + "nodeType": "VariableDeclaration", + "scope": 6357, + "src": "1928:17:55", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 6340, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "1928:6:55", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1910:36:55" + }, + "returnParameters": { + "id": 6343, + "nodeType": "ParameterList", + "parameters": [], + "src": "1956:0:55" + }, + "scope": 6388, + "src": "1889:144:55", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 6386, + "nodeType": "Block", + "src": "2379:184:55", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 6367, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6359, + "src": "2401:5:55", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 6368, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6361, + "src": "2408:7:55", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 6364, + "name": "super", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6979, + "src": "2389:5:55", + "typeDescriptions": { + "typeIdentifier": "t_super$_ERC721Metadata_$6388", + "typeString": "contract super ERC721Metadata" + } + }, + "id": 6366, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "_burn", + "nodeType": "MemberAccess", + "referencedDeclaration": 5713, + "src": "2389:11:55", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 6369, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2389:27:55", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 6370, + "nodeType": "ExpressionStatement", + "src": "2389:27:55" + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6378, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 6372, + "name": "_tokenURIs", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6280, + "src": "2472:10:55", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_string_storage_$", + "typeString": "mapping(uint256 => string storage ref)" + } + }, + "id": 6374, + "indexExpression": { + "argumentTypes": null, + "id": 6373, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6361, + "src": "2483:7:55", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2472:19:55", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + ], + "id": 6371, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2466:5:55", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes_storage_ptr_$", + "typeString": "type(bytes storage pointer)" + }, + "typeName": "bytes" + }, + "id": 6375, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2466:26:55", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes storage pointer" + } + }, + "id": 6376, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2466:33:55", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 6377, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2503:1:55", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "2466:38:55", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 6385, + "nodeType": "IfStatement", + "src": "2462:95:55", + "trueBody": { + "id": 6384, + "nodeType": "Block", + "src": "2506:51:55", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 6382, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "delete", + "prefix": true, + "src": "2520:26:55", + "subExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 6379, + "name": "_tokenURIs", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6280, + "src": "2527:10:55", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_string_storage_$", + "typeString": "mapping(uint256 => string storage ref)" + } + }, + "id": 6381, + "indexExpression": { + "argumentTypes": null, + "id": 6380, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6361, + "src": "2538:7:55", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "2527:19:55", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 6383, + "nodeType": "ExpressionStatement", + "src": "2520:26:55" + } + ] + } + } + ] + }, + "documentation": "@dev Internal function to burn a specific token\nReverts if the token does not exist\nDeprecated, use _burn(uint256) instead\n@param owner owner of the token to burn\n@param tokenId uint256 ID of the token being burned by the msg.sender", + "id": 6387, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_burn", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6362, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6359, + "name": "owner", + "nodeType": "VariableDeclaration", + "scope": 6387, + "src": "2338:13:55", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6358, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2338:7:55", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 6361, + "name": "tokenId", + "nodeType": "VariableDeclaration", + "scope": 6387, + "src": "2353:15:55", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6360, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2353:7:55", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2337:32:55" + }, + "returnParameters": { + "id": 6363, + "nodeType": "ParameterList", + "parameters": [], + "src": "2379:0:55" + }, + "scope": 6388, + "src": "2323:240:55", + "stateMutability": "nonpayable", + "superFunction": 5713, + "visibility": "internal" + } + ], + "scope": 6389, + "src": "122:2443:55" + } + ], + "src": "0:2566:55" + }, + "compiler": { + "name": "solc", + "version": "0.5.0+commit.1d4f565a.Emscripten.clang" + }, + "networks": {}, + "schemaVersion": "3.0.0", + "updatedAt": "2019-01-04T21:44:02.898Z", + "devdoc": { + "methods": { + "approve(address,uint256)": { + "details": "Approves another address to transfer the given token ID The zero address indicates there is no approved address. There can only be one approved address per token at a given time. Can only be called by the token owner or an approved operator.", + "params": { + "to": "address to be approved for the given token ID", + "tokenId": "uint256 ID of the token to be approved" + } + }, + "balanceOf(address)": { + "details": "Gets the balance of the specified address", + "params": { + "owner": "address to query the balance of" + }, + "return": "uint256 representing the amount owned by the passed address" + }, + "constructor": { + "details": "Constructor function" + }, + "getApproved(uint256)": { + "details": "Gets the approved address for a token ID, or zero if no address set Reverts if the token ID does not exist.", + "params": { + "tokenId": "uint256 ID of the token to query the approval of" + }, + "return": "address currently approved for the given token ID" + }, + "isApprovedForAll(address,address)": { + "details": "Tells whether an operator is approved by a given owner", + "params": { + "operator": "operator address which you want to query the approval of", + "owner": "owner address which you want to query the approval of" + }, + "return": "bool whether the given operator is approved by the given owner" + }, + "name()": { + "details": "Gets the token name", + "return": "string representing the token name" + }, + "ownerOf(uint256)": { + "details": "Gets the owner of the specified token ID", + "params": { + "tokenId": "uint256 ID of the token to query the owner of" + }, + "return": "owner address currently marked as the owner of the given token ID" + }, + "safeTransferFrom(address,address,uint256)": { + "details": "Safely transfers the ownership of a given token ID to another address If the target address is a contract, it must implement `onERC721Received`, which is called upon a safe transfer, and return the magic value `bytes4(keccak256(\"onERC721Received(address,address,uint256,bytes)\"))`; otherwise, the transfer is reverted. * Requires the msg sender to be the owner, approved, or operator", + "params": { + "from": "current owner of the token", + "to": "address to receive the ownership of the given token ID", + "tokenId": "uint256 ID of the token to be transferred" + } + }, + "safeTransferFrom(address,address,uint256,bytes)": { + "details": "Safely transfers the ownership of a given token ID to another address If the target address is a contract, it must implement `onERC721Received`, which is called upon a safe transfer, and return the magic value `bytes4(keccak256(\"onERC721Received(address,address,uint256,bytes)\"))`; otherwise, the transfer is reverted. Requires the msg sender to be the owner, approved, or operator", + "params": { + "_data": "bytes data to send along with a safe transfer check", + "from": "current owner of the token", + "to": "address to receive the ownership of the given token ID", + "tokenId": "uint256 ID of the token to be transferred" + } + }, + "setApprovalForAll(address,bool)": { + "details": "Sets or unsets the approval of a given operator An operator is allowed to transfer all tokens of the sender on their behalf", + "params": { + "approved": "representing the status of the approval to be set", + "to": "operator address to set the approval" + } + }, + "supportsInterface(bytes4)": { + "details": "implement supportsInterface(bytes4) using a lookup table" + }, + "symbol()": { + "details": "Gets the token symbol", + "return": "string representing the token symbol" + }, + "tokenURI(uint256)": { + "details": "Returns an URI for a given token ID Throws if the token ID does not exist. May return an empty string.", + "params": { + "tokenId": "uint256 ID of the token to query" + } + }, + "transferFrom(address,address,uint256)": { + "details": "Transfers the ownership of a given token ID to another address Usage of this method is discouraged, use `safeTransferFrom` whenever possible Requires the msg sender to be the owner, approved, or operator", + "params": { + "from": "current owner of the token", + "to": "address to receive the ownership of the given token ID", + "tokenId": "uint256 ID of the token to be transferred" + } + } + } + }, + "userdoc": { + "methods": {} + } +} \ No newline at end of file diff --git a/node_modules/openzeppelin-solidity/build/contracts/ERC721MetadataMintable.json b/node_modules/openzeppelin-solidity/build/contracts/ERC721MetadataMintable.json new file mode 100644 index 0000000..9145bc4 --- /dev/null +++ b/node_modules/openzeppelin-solidity/build/contracts/ERC721MetadataMintable.json @@ -0,0 +1,1450 @@ +{ + "contractName": "ERC721MetadataMintable", + "abi": [ + { + "constant": true, + "inputs": [ + { + "name": "interfaceId", + "type": "bytes4" + } + ], + "name": "supportsInterface", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "name", + "outputs": [ + { + "name": "", + "type": "string" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "tokenId", + "type": "uint256" + } + ], + "name": "getApproved", + "outputs": [ + { + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "to", + "type": "address" + }, + { + "name": "tokenId", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "from", + "type": "address" + }, + { + "name": "to", + "type": "address" + }, + { + "name": "tokenId", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "from", + "type": "address" + }, + { + "name": "to", + "type": "address" + }, + { + "name": "tokenId", + "type": "uint256" + } + ], + "name": "safeTransferFrom", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "tokenId", + "type": "uint256" + } + ], + "name": "ownerOf", + "outputs": [ + { + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "owner", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "symbol", + "outputs": [ + { + "name": "", + "type": "string" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "account", + "type": "address" + } + ], + "name": "addMinter", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [], + "name": "renounceMinter", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "to", + "type": "address" + }, + { + "name": "approved", + "type": "bool" + } + ], + "name": "setApprovalForAll", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "account", + "type": "address" + } + ], + "name": "isMinter", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "from", + "type": "address" + }, + { + "name": "to", + "type": "address" + }, + { + "name": "tokenId", + "type": "uint256" + }, + { + "name": "_data", + "type": "bytes" + } + ], + "name": "safeTransferFrom", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "tokenId", + "type": "uint256" + } + ], + "name": "tokenURI", + "outputs": [ + { + "name": "", + "type": "string" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "owner", + "type": "address" + }, + { + "name": "operator", + "type": "address" + } + ], + "name": "isApprovedForAll", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "account", + "type": "address" + } + ], + "name": "MinterAdded", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "account", + "type": "address" + } + ], + "name": "MinterRemoved", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "from", + "type": "address" + }, + { + "indexed": true, + "name": "to", + "type": "address" + }, + { + "indexed": true, + "name": "tokenId", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "name": "approved", + "type": "address" + }, + { + "indexed": true, + "name": "tokenId", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "name": "operator", + "type": "address" + }, + { + "indexed": false, + "name": "approved", + "type": "bool" + } + ], + "name": "ApprovalForAll", + "type": "event" + }, + { + "constant": false, + "inputs": [ + { + "name": "to", + "type": "address" + }, + { + "name": "tokenId", + "type": "uint256" + }, + { + "name": "tokenURI", + "type": "string" + } + ], + "name": "mintWithTokenURI", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "sourceMap": "", + "deployedSourceMap": "", + "source": "pragma solidity ^0.5.0;\n\nimport \"./ERC721Metadata.sol\";\nimport \"../../access/roles/MinterRole.sol\";\n\n\n/**\n * @title ERC721MetadataMintable\n * @dev ERC721 minting logic with metadata\n */\ncontract ERC721MetadataMintable is ERC721, ERC721Metadata, MinterRole {\n /**\n * @dev Function to mint tokens\n * @param to The address that will receive the minted tokens.\n * @param tokenId The token id to mint.\n * @param tokenURI The token URI of the minted token.\n * @return A boolean that indicates if the operation was successful.\n */\n function mintWithTokenURI(address to, uint256 tokenId, string memory tokenURI) public onlyMinter returns (bool) {\n _mint(to, tokenId);\n _setTokenURI(tokenId, tokenURI);\n return true;\n }\n}\n", + "sourcePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/token/ERC721/ERC721MetadataMintable.sol", + "ast": { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/token/ERC721/ERC721MetadataMintable.sol", + "exportedSymbols": { + "ERC721MetadataMintable": [ + 6425 + ] + }, + "id": 6426, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 6390, + "literals": [ + "solidity", + "^", + "0.5", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "0:23:56" + }, + { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/token/ERC721/ERC721Metadata.sol", + "file": "./ERC721Metadata.sol", + "id": 6391, + "nodeType": "ImportDirective", + "scope": 6426, + "sourceUnit": 6389, + "src": "25:30:56", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/access/roles/MinterRole.sol", + "file": "../../access/roles/MinterRole.sol", + "id": 6392, + "nodeType": "ImportDirective", + "scope": 6426, + "sourceUnit": 300, + "src": "56:43:56", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 6393, + "name": "ERC721", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 5854, + "src": "221:6:56", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC721_$5854", + "typeString": "contract ERC721" + } + }, + "id": 6394, + "nodeType": "InheritanceSpecifier", + "src": "221:6:56" + }, + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 6395, + "name": "ERC721Metadata", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 6388, + "src": "229:14:56", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC721Metadata_$6388", + "typeString": "contract ERC721Metadata" + } + }, + "id": 6396, + "nodeType": "InheritanceSpecifier", + "src": "229:14:56" + }, + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 6397, + "name": "MinterRole", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 299, + "src": "245:10:56", + "typeDescriptions": { + "typeIdentifier": "t_contract$_MinterRole_$299", + "typeString": "contract MinterRole" + } + }, + "id": 6398, + "nodeType": "InheritanceSpecifier", + "src": "245:10:56" + } + ], + "contractDependencies": [ + 299, + 3055, + 3202, + 5854, + 6388, + 6619, + 6681 + ], + "contractKind": "contract", + "documentation": "@title ERC721MetadataMintable\n@dev ERC721 minting logic with metadata", + "fullyImplemented": false, + "id": 6425, + "linearizedBaseContracts": [ + 6425, + 299, + 6388, + 6681, + 5854, + 6619, + 3055, + 3202 + ], + "name": "ERC721MetadataMintable", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": { + "id": 6423, + "nodeType": "Block", + "src": "667:97:56", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 6412, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6400, + "src": "683:2:56", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 6413, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6402, + "src": "687:7:56", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 6411, + "name": "_mint", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5666, + "src": "677:5:56", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 6414, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "677:18:56", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 6415, + "nodeType": "ExpressionStatement", + "src": "677:18:56" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 6417, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6402, + "src": "718:7:56", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 6418, + "name": "tokenURI", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6404, + "src": "727:8:56", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "id": 6416, + "name": "_setTokenURI", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6357, + "src": "705:12:56", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (uint256,string memory)" + } + }, + "id": 6419, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "705:31:56", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 6420, + "nodeType": "ExpressionStatement", + "src": "705:31:56" + }, + { + "expression": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 6421, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "753:4:56", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 6410, + "id": 6422, + "nodeType": "Return", + "src": "746:11:56" + } + ] + }, + "documentation": "@dev Function to mint tokens\n@param to The address that will receive the minted tokens.\n@param tokenId The token id to mint.\n@param tokenURI The token URI of the minted token.\n@return A boolean that indicates if the operation was successful.", + "id": 6424, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": null, + "id": 6407, + "modifierName": { + "argumentTypes": null, + "id": 6406, + "name": "onlyMinter", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 232, + "src": "641:10:56", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "641:10:56" + } + ], + "name": "mintWithTokenURI", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6405, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6400, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 6424, + "src": "581:10:56", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6399, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "581:7:56", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 6402, + "name": "tokenId", + "nodeType": "VariableDeclaration", + "scope": 6424, + "src": "593:15:56", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6401, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "593:7:56", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 6404, + "name": "tokenURI", + "nodeType": "VariableDeclaration", + "scope": 6424, + "src": "610:22:56", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 6403, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "610:6:56", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "580:53:56" + }, + "returnParameters": { + "id": 6410, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6409, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 6424, + "src": "661:4:56", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 6408, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "661:4:56", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "660:6:56" + }, + "scope": 6425, + "src": "555:209:56", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + } + ], + "scope": 6426, + "src": "186:580:56" + } + ], + "src": "0:767:56" + }, + "legacyAST": { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/token/ERC721/ERC721MetadataMintable.sol", + "exportedSymbols": { + "ERC721MetadataMintable": [ + 6425 + ] + }, + "id": 6426, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 6390, + "literals": [ + "solidity", + "^", + "0.5", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "0:23:56" + }, + { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/token/ERC721/ERC721Metadata.sol", + "file": "./ERC721Metadata.sol", + "id": 6391, + "nodeType": "ImportDirective", + "scope": 6426, + "sourceUnit": 6389, + "src": "25:30:56", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/access/roles/MinterRole.sol", + "file": "../../access/roles/MinterRole.sol", + "id": 6392, + "nodeType": "ImportDirective", + "scope": 6426, + "sourceUnit": 300, + "src": "56:43:56", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 6393, + "name": "ERC721", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 5854, + "src": "221:6:56", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC721_$5854", + "typeString": "contract ERC721" + } + }, + "id": 6394, + "nodeType": "InheritanceSpecifier", + "src": "221:6:56" + }, + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 6395, + "name": "ERC721Metadata", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 6388, + "src": "229:14:56", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC721Metadata_$6388", + "typeString": "contract ERC721Metadata" + } + }, + "id": 6396, + "nodeType": "InheritanceSpecifier", + "src": "229:14:56" + }, + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 6397, + "name": "MinterRole", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 299, + "src": "245:10:56", + "typeDescriptions": { + "typeIdentifier": "t_contract$_MinterRole_$299", + "typeString": "contract MinterRole" + } + }, + "id": 6398, + "nodeType": "InheritanceSpecifier", + "src": "245:10:56" + } + ], + "contractDependencies": [ + 299, + 3055, + 3202, + 5854, + 6388, + 6619, + 6681 + ], + "contractKind": "contract", + "documentation": "@title ERC721MetadataMintable\n@dev ERC721 minting logic with metadata", + "fullyImplemented": false, + "id": 6425, + "linearizedBaseContracts": [ + 6425, + 299, + 6388, + 6681, + 5854, + 6619, + 3055, + 3202 + ], + "name": "ERC721MetadataMintable", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": { + "id": 6423, + "nodeType": "Block", + "src": "667:97:56", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 6412, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6400, + "src": "683:2:56", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 6413, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6402, + "src": "687:7:56", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 6411, + "name": "_mint", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5666, + "src": "677:5:56", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 6414, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "677:18:56", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 6415, + "nodeType": "ExpressionStatement", + "src": "677:18:56" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 6417, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6402, + "src": "718:7:56", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 6418, + "name": "tokenURI", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6404, + "src": "727:8:56", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "id": 6416, + "name": "_setTokenURI", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6357, + "src": "705:12:56", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (uint256,string memory)" + } + }, + "id": 6419, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "705:31:56", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 6420, + "nodeType": "ExpressionStatement", + "src": "705:31:56" + }, + { + "expression": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 6421, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "753:4:56", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 6410, + "id": 6422, + "nodeType": "Return", + "src": "746:11:56" + } + ] + }, + "documentation": "@dev Function to mint tokens\n@param to The address that will receive the minted tokens.\n@param tokenId The token id to mint.\n@param tokenURI The token URI of the minted token.\n@return A boolean that indicates if the operation was successful.", + "id": 6424, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": null, + "id": 6407, + "modifierName": { + "argumentTypes": null, + "id": 6406, + "name": "onlyMinter", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 232, + "src": "641:10:56", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "641:10:56" + } + ], + "name": "mintWithTokenURI", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6405, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6400, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 6424, + "src": "581:10:56", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6399, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "581:7:56", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 6402, + "name": "tokenId", + "nodeType": "VariableDeclaration", + "scope": 6424, + "src": "593:15:56", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6401, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "593:7:56", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 6404, + "name": "tokenURI", + "nodeType": "VariableDeclaration", + "scope": 6424, + "src": "610:22:56", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 6403, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "610:6:56", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "580:53:56" + }, + "returnParameters": { + "id": 6410, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6409, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 6424, + "src": "661:4:56", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 6408, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "661:4:56", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "660:6:56" + }, + "scope": 6425, + "src": "555:209:56", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + } + ], + "scope": 6426, + "src": "186:580:56" + } + ], + "src": "0:767:56" + }, + "compiler": { + "name": "solc", + "version": "0.5.0+commit.1d4f565a.Emscripten.clang" + }, + "networks": {}, + "schemaVersion": "3.0.0", + "updatedAt": "2019-01-04T21:44:02.899Z", + "devdoc": { + "details": "ERC721 minting logic with metadata", + "methods": { + "approve(address,uint256)": { + "details": "Approves another address to transfer the given token ID The zero address indicates there is no approved address. There can only be one approved address per token at a given time. Can only be called by the token owner or an approved operator.", + "params": { + "to": "address to be approved for the given token ID", + "tokenId": "uint256 ID of the token to be approved" + } + }, + "balanceOf(address)": { + "details": "Gets the balance of the specified address", + "params": { + "owner": "address to query the balance of" + }, + "return": "uint256 representing the amount owned by the passed address" + }, + "getApproved(uint256)": { + "details": "Gets the approved address for a token ID, or zero if no address set Reverts if the token ID does not exist.", + "params": { + "tokenId": "uint256 ID of the token to query the approval of" + }, + "return": "address currently approved for the given token ID" + }, + "isApprovedForAll(address,address)": { + "details": "Tells whether an operator is approved by a given owner", + "params": { + "operator": "operator address which you want to query the approval of", + "owner": "owner address which you want to query the approval of" + }, + "return": "bool whether the given operator is approved by the given owner" + }, + "mintWithTokenURI(address,uint256,string)": { + "details": "Function to mint tokens", + "params": { + "to": "The address that will receive the minted tokens.", + "tokenId": "The token id to mint.", + "tokenURI": "The token URI of the minted token." + }, + "return": "A boolean that indicates if the operation was successful." + }, + "name()": { + "details": "Gets the token name", + "return": "string representing the token name" + }, + "ownerOf(uint256)": { + "details": "Gets the owner of the specified token ID", + "params": { + "tokenId": "uint256 ID of the token to query the owner of" + }, + "return": "owner address currently marked as the owner of the given token ID" + }, + "safeTransferFrom(address,address,uint256)": { + "details": "Safely transfers the ownership of a given token ID to another address If the target address is a contract, it must implement `onERC721Received`, which is called upon a safe transfer, and return the magic value `bytes4(keccak256(\"onERC721Received(address,address,uint256,bytes)\"))`; otherwise, the transfer is reverted. * Requires the msg sender to be the owner, approved, or operator", + "params": { + "from": "current owner of the token", + "to": "address to receive the ownership of the given token ID", + "tokenId": "uint256 ID of the token to be transferred" + } + }, + "safeTransferFrom(address,address,uint256,bytes)": { + "details": "Safely transfers the ownership of a given token ID to another address If the target address is a contract, it must implement `onERC721Received`, which is called upon a safe transfer, and return the magic value `bytes4(keccak256(\"onERC721Received(address,address,uint256,bytes)\"))`; otherwise, the transfer is reverted. Requires the msg sender to be the owner, approved, or operator", + "params": { + "_data": "bytes data to send along with a safe transfer check", + "from": "current owner of the token", + "to": "address to receive the ownership of the given token ID", + "tokenId": "uint256 ID of the token to be transferred" + } + }, + "setApprovalForAll(address,bool)": { + "details": "Sets or unsets the approval of a given operator An operator is allowed to transfer all tokens of the sender on their behalf", + "params": { + "approved": "representing the status of the approval to be set", + "to": "operator address to set the approval" + } + }, + "supportsInterface(bytes4)": { + "details": "implement supportsInterface(bytes4) using a lookup table" + }, + "symbol()": { + "details": "Gets the token symbol", + "return": "string representing the token symbol" + }, + "tokenURI(uint256)": { + "details": "Returns an URI for a given token ID Throws if the token ID does not exist. May return an empty string.", + "params": { + "tokenId": "uint256 ID of the token to query" + } + }, + "transferFrom(address,address,uint256)": { + "details": "Transfers the ownership of a given token ID to another address Usage of this method is discouraged, use `safeTransferFrom` whenever possible Requires the msg sender to be the owner, approved, or operator", + "params": { + "from": "current owner of the token", + "to": "address to receive the ownership of the given token ID", + "tokenId": "uint256 ID of the token to be transferred" + } + } + }, + "title": "ERC721MetadataMintable" + }, + "userdoc": { + "methods": {} + } +} \ No newline at end of file diff --git a/node_modules/openzeppelin-solidity/build/contracts/ERC721Mintable.json b/node_modules/openzeppelin-solidity/build/contracts/ERC721Mintable.json new file mode 100644 index 0000000..f8ca4cf --- /dev/null +++ b/node_modules/openzeppelin-solidity/build/contracts/ERC721Mintable.json @@ -0,0 +1,1146 @@ +{ + "contractName": "ERC721Mintable", + "abi": [ + { + "constant": true, + "inputs": [ + { + "name": "interfaceId", + "type": "bytes4" + } + ], + "name": "supportsInterface", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "tokenId", + "type": "uint256" + } + ], + "name": "getApproved", + "outputs": [ + { + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "to", + "type": "address" + }, + { + "name": "tokenId", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "from", + "type": "address" + }, + { + "name": "to", + "type": "address" + }, + { + "name": "tokenId", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "from", + "type": "address" + }, + { + "name": "to", + "type": "address" + }, + { + "name": "tokenId", + "type": "uint256" + } + ], + "name": "safeTransferFrom", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "tokenId", + "type": "uint256" + } + ], + "name": "ownerOf", + "outputs": [ + { + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "owner", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "account", + "type": "address" + } + ], + "name": "addMinter", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [], + "name": "renounceMinter", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "to", + "type": "address" + }, + { + "name": "approved", + "type": "bool" + } + ], + "name": "setApprovalForAll", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "account", + "type": "address" + } + ], + "name": "isMinter", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "from", + "type": "address" + }, + { + "name": "to", + "type": "address" + }, + { + "name": "tokenId", + "type": "uint256" + }, + { + "name": "_data", + "type": "bytes" + } + ], + "name": "safeTransferFrom", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "owner", + "type": "address" + }, + { + "name": "operator", + "type": "address" + } + ], + "name": "isApprovedForAll", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "account", + "type": "address" + } + ], + "name": "MinterAdded", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "account", + "type": "address" + } + ], + "name": "MinterRemoved", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "from", + "type": "address" + }, + { + "indexed": true, + "name": "to", + "type": "address" + }, + { + "indexed": true, + "name": "tokenId", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "name": "approved", + "type": "address" + }, + { + "indexed": true, + "name": "tokenId", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "name": "operator", + "type": "address" + }, + { + "indexed": false, + "name": "approved", + "type": "bool" + } + ], + "name": "ApprovalForAll", + "type": "event" + }, + { + "constant": false, + "inputs": [ + { + "name": "to", + "type": "address" + }, + { + "name": "tokenId", + "type": "uint256" + } + ], + "name": "mint", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x6080604052620000416301ffc9a77c0100000000000000000000000000000000000000000000000000000000026200009e640100000000026401000000009004565b6200007e6380ac58cd7c0100000000000000000000000000000000000000000000000000000000026200009e640100000000026401000000009004565b62000098336200015c640100000000026401000000009004565b6200031e565b63ffffffff7c010000000000000000000000000000000000000000000000000000000002817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614151515620000f057600080fd5b6001600080837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b62000180816005620001c66401000000000262001651179091906401000000009004565b8073ffffffffffffffffffffffffffffffffffffffff167f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f660405160405180910390a250565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515156200020357600080fd5b6200021e828262000289640100000000026401000000009004565b1515156200022b57600080fd5b60018260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614151515620002c757600080fd5b8260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6117ef806200032e6000396000f3fe6080604052600436106100d0576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806301ffc9a7146100d5578063081812fc14610147578063095ea7b3146101c257806323b872dd1461021d57806340c10f191461029857806342842e0e1461030b5780636352211e1461038657806370a0823114610401578063983b2d561461046657806398650275146104b7578063a22cb465146104ce578063aa271e1a1461052b578063b88d4fde14610594578063e985e9c5146106a6575b600080fd5b3480156100e157600080fd5b5061012d600480360360208110156100f857600080fd5b8101908080357bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916906020019092919050505061072f565b604051808215151515815260200191505060405180910390f35b34801561015357600080fd5b506101806004803603602081101561016a57600080fd5b8101908080359060200190929190505050610796565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156101ce57600080fd5b5061021b600480360360408110156101e557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506107e7565b005b34801561022957600080fd5b506102966004803603606081101561024057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061092c565b005b3480156102a457600080fd5b506102f1600480360360408110156102bb57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610951565b604051808215151515815260200191505060405180910390f35b34801561031757600080fd5b506103846004803603606081101561032e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061097b565b005b34801561039257600080fd5b506103bf600480360360208110156103a957600080fd5b810190808035906020019092919050505061099c565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561040d57600080fd5b506104506004803603602081101561042457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610a1a565b6040518082815260200191505060405180910390f35b34801561047257600080fd5b506104b56004803603602081101561048957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610a9e565b005b3480156104c357600080fd5b506104cc610abe565b005b3480156104da57600080fd5b50610529600480360360408110156104f157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803515159060200190929190505050610ac9565b005b34801561053757600080fd5b5061057a6004803603602081101561054e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610c05565b604051808215151515815260200191505060405180910390f35b3480156105a057600080fd5b506106a4600480360360808110156105b757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291908035906020019064010000000081111561061e57600080fd5b82018360208201111561063057600080fd5b8035906020019184600183028401116401000000008311171561065257600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050610c22565b005b3480156106b257600080fd5b50610715600480360360408110156106c957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610c4a565b604051808215151515815260200191505060405180910390f35b6000806000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060009054906101000a900460ff169050919050565b60006107a182610cde565b15156107ac57600080fd5b6002600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b60006107f28261099c565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415151561082f57600080fd5b8073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061086f575061086e8133610c4a565b5b151561087a57600080fd5b826002600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a4505050565b6109363382610d50565b151561094157600080fd5b61094c838383610de5565b505050565b600061095c33610c05565b151561096757600080fd5b610971838361104a565b6001905092915050565b6109978383836020604051908101604052806000815250610c22565b505050565b6000806001600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515610a1157600080fd5b80915050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614151515610a5757600080fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610aa733610c05565b1515610ab257600080fd5b610abb816111e3565b50565b610ac73361123d565b565b3373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614151515610b0457600080fd5b80600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051808215151515815260200191505060405180910390a35050565b6000610c1b82600561129790919063ffffffff16565b9050919050565b610c2d84848461092c565b610c398484848461132b565b1515610c4457600080fd5b50505050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6000806001600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415915050919050565b600080610d5c8361099c565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480610dcb57508373ffffffffffffffffffffffffffffffffffffffff16610db384610796565b73ffffffffffffffffffffffffffffffffffffffff16145b80610ddc5750610ddb8185610c4a565b5b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff16610e058261099c565b73ffffffffffffffffffffffffffffffffffffffff16141515610e2757600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614151515610e6357600080fd5b610e6c8161154e565b610ebf6001600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461160e90919063ffffffff16565b600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610f556001600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461163090919063ffffffff16565b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816001600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415151561108657600080fd5b61108f81610cde565b15151561109b57600080fd5b816001600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506111406001600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461163090919063ffffffff16565b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b6111f781600561165190919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f660405160405180910390a250565b61125181600561170190919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167fe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb6669260405160405180910390a250565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141515156112d457600080fd5b8260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b600061134c8473ffffffffffffffffffffffffffffffffffffffff166117b0565b151561135b5760019050611546565b60008473ffffffffffffffffffffffffffffffffffffffff1663150b7a02338887876040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b83811015611452578082015181840152602081019050611437565b50505050905090810190601f16801561147f5780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b1580156114a157600080fd5b505af11580156114b5573d6000803e3d6000fd5b505050506040513d60208110156114cb57600080fd5b8101908080519060200190929190505050905063150b7a027c0100000000000000000000000000000000000000000000000000000000027bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149150505b949350505050565b600073ffffffffffffffffffffffffffffffffffffffff166002600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561160b5760006002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b50565b600082821115151561161f57600080fd5b600082840390508091505092915050565b600080828401905083811015151561164757600080fd5b8091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415151561168d57600080fd5b6116978282611297565b1515156116a357600080fd5b60018260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415151561173d57600080fd5b6117478282611297565b151561175257600080fd5b60008260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600080823b90506000811191505091905056fea165627a7a723058206e6438465d6df5c18ef4c7e3248fc32ae7fcd1d6cea566693a6f3588c007566a0029", + "deployedBytecode": "0x6080604052600436106100d0576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806301ffc9a7146100d5578063081812fc14610147578063095ea7b3146101c257806323b872dd1461021d57806340c10f191461029857806342842e0e1461030b5780636352211e1461038657806370a0823114610401578063983b2d561461046657806398650275146104b7578063a22cb465146104ce578063aa271e1a1461052b578063b88d4fde14610594578063e985e9c5146106a6575b600080fd5b3480156100e157600080fd5b5061012d600480360360208110156100f857600080fd5b8101908080357bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916906020019092919050505061072f565b604051808215151515815260200191505060405180910390f35b34801561015357600080fd5b506101806004803603602081101561016a57600080fd5b8101908080359060200190929190505050610796565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156101ce57600080fd5b5061021b600480360360408110156101e557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506107e7565b005b34801561022957600080fd5b506102966004803603606081101561024057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061092c565b005b3480156102a457600080fd5b506102f1600480360360408110156102bb57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610951565b604051808215151515815260200191505060405180910390f35b34801561031757600080fd5b506103846004803603606081101561032e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061097b565b005b34801561039257600080fd5b506103bf600480360360208110156103a957600080fd5b810190808035906020019092919050505061099c565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561040d57600080fd5b506104506004803603602081101561042457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610a1a565b6040518082815260200191505060405180910390f35b34801561047257600080fd5b506104b56004803603602081101561048957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610a9e565b005b3480156104c357600080fd5b506104cc610abe565b005b3480156104da57600080fd5b50610529600480360360408110156104f157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803515159060200190929190505050610ac9565b005b34801561053757600080fd5b5061057a6004803603602081101561054e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610c05565b604051808215151515815260200191505060405180910390f35b3480156105a057600080fd5b506106a4600480360360808110156105b757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291908035906020019064010000000081111561061e57600080fd5b82018360208201111561063057600080fd5b8035906020019184600183028401116401000000008311171561065257600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050610c22565b005b3480156106b257600080fd5b50610715600480360360408110156106c957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610c4a565b604051808215151515815260200191505060405180910390f35b6000806000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060009054906101000a900460ff169050919050565b60006107a182610cde565b15156107ac57600080fd5b6002600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b60006107f28261099c565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415151561082f57600080fd5b8073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061086f575061086e8133610c4a565b5b151561087a57600080fd5b826002600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a4505050565b6109363382610d50565b151561094157600080fd5b61094c838383610de5565b505050565b600061095c33610c05565b151561096757600080fd5b610971838361104a565b6001905092915050565b6109978383836020604051908101604052806000815250610c22565b505050565b6000806001600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515610a1157600080fd5b80915050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614151515610a5757600080fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610aa733610c05565b1515610ab257600080fd5b610abb816111e3565b50565b610ac73361123d565b565b3373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614151515610b0457600080fd5b80600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051808215151515815260200191505060405180910390a35050565b6000610c1b82600561129790919063ffffffff16565b9050919050565b610c2d84848461092c565b610c398484848461132b565b1515610c4457600080fd5b50505050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6000806001600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415915050919050565b600080610d5c8361099c565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480610dcb57508373ffffffffffffffffffffffffffffffffffffffff16610db384610796565b73ffffffffffffffffffffffffffffffffffffffff16145b80610ddc5750610ddb8185610c4a565b5b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff16610e058261099c565b73ffffffffffffffffffffffffffffffffffffffff16141515610e2757600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614151515610e6357600080fd5b610e6c8161154e565b610ebf6001600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461160e90919063ffffffff16565b600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610f556001600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461163090919063ffffffff16565b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816001600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415151561108657600080fd5b61108f81610cde565b15151561109b57600080fd5b816001600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506111406001600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461163090919063ffffffff16565b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b6111f781600561165190919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f660405160405180910390a250565b61125181600561170190919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167fe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb6669260405160405180910390a250565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141515156112d457600080fd5b8260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b600061134c8473ffffffffffffffffffffffffffffffffffffffff166117b0565b151561135b5760019050611546565b60008473ffffffffffffffffffffffffffffffffffffffff1663150b7a02338887876040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b83811015611452578082015181840152602081019050611437565b50505050905090810190601f16801561147f5780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b1580156114a157600080fd5b505af11580156114b5573d6000803e3d6000fd5b505050506040513d60208110156114cb57600080fd5b8101908080519060200190929190505050905063150b7a027c0100000000000000000000000000000000000000000000000000000000027bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149150505b949350505050565b600073ffffffffffffffffffffffffffffffffffffffff166002600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561160b5760006002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b50565b600082821115151561161f57600080fd5b600082840390508091505092915050565b600080828401905083811015151561164757600080fd5b8091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415151561168d57600080fd5b6116978282611297565b1515156116a357600080fd5b60018260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415151561173d57600080fd5b6117478282611297565b151561175257600080fd5b60008260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600080823b90506000811191505091905056fea165627a7a723058206e6438465d6df5c18ef4c7e3248fc32ae7fcd1d6cea566693a6f3588c007566a0029", + "sourceMap": "155:421:57:-;;;640:40:28;236:10;659:20;;640:18;;;:40;;;:::i;:::-;1906::50;1163:10;1925:20;;1906:18;;;:40;;;:::i;:::-;275:22:2;286:10;275;;;:22;;;:::i;:::-;155:421:57;;990:158:28;1080:10;1065:25;;:11;:25;;;;;1057:34;;;;;;;;1137:4;1101:20;:33;1122:11;1101:33;;;;;;;;;;;;;;;;;;:40;;;;;;;;;;;;;;;;;;990:158;:::o;685:119:2:-;741:21;754:7;741:8;:12;;;;;;:21;;;;;:::i;:::-;789:7;777:20;;;;;;;;;;;;685:119;:::o;259:181:0:-;354:1;335:21;;:7;:21;;;;327:30;;;;;;;;376:18;380:4;386:7;376:3;;;:18;;;:::i;:::-;375:19;367:28;;;;;;;;429:4;406;:11;;:20;418:7;406:20;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;259:181;;:::o;786:162::-;858:4;901:1;882:21;;:7;:21;;;;874:30;;;;;;;;921:4;:11;;:20;933:7;921:20;;;;;;;;;;;;;;;;;;;;;;;;;914:27;;786:162;;;;:::o;155:421:57:-;;;;;;;", + "deployedSourceMap": "155:421:57:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;778:133:28;;8:9:-1;5:2;;;30:1;27;20:12;5:2;778:133:28;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;778:133:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3705:151:50;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3705:151:50;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3705:151:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3128:292;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3128:292:50;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3128:292:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5260:180;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5260:180:50;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;5260:180:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;442:132:57;;8:9:-1;5:2;;;30:1;27;20:12;5:2;442:132:57;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;442:132:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6079::50;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6079:132:50;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;6079:132:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2530:177;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2530:177:50;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2530:177:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2156:150;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2156:150:50;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2156:150:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;508:90:2;;8:9:-1;5:2;;;30:1;27;20:12;5:2;508:90:2;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;508:90:2;;;;;;;;;;;;;;;;;;;;;;604:75;;8:9:-1;5:2;;;30:1;27;20:12;5:2;604:75:2;;;;;;4148:213:50;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4148:213:50;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4148:213:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;395:107:2;;8:9:-1;5:2;;;30:1;27;20:12;5:2;395:107:2;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;395:107:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6916:211:50;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6916:211:50;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;6916:211:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;6916:211:50;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;6916:211:50;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;6916:211:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;6916:211:50;;;;;;;;;;;;;;;;;;4682:145;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4682:145:50;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4682:145:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;778:133:28;848:4;871:20;:33;892:11;871:33;;;;;;;;;;;;;;;;;;;;;;;;;;;864:40;;778:133;;;:::o;3705:151:50:-;3764:7;3791:16;3799:7;3791;:16::i;:::-;3783:25;;;;;;;;3825:15;:24;3841:7;3825:24;;;;;;;;;;;;;;;;;;;;;3818:31;;3705:151;;;:::o;3128:292::-;3191:13;3207:16;3215:7;3207;:16::i;:::-;3191:32;;3247:5;3241:11;;:2;:11;;;;3233:20;;;;;;;;3285:5;3271:19;;:10;:19;;;:58;;;;3294:35;3311:5;3318:10;3294:16;:35::i;:::-;3271:58;3263:67;;;;;;;;3368:2;3341:15;:24;3357:7;3341:24;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;3405:7;3401:2;3385:28;;3394:5;3385:28;;;;;;;;;;;;3128:292;;;:::o;5260:180::-;5350:39;5369:10;5381:7;5350:18;:39::i;:::-;5342:48;;;;;;;;5401:32;5415:4;5421:2;5425:7;5401:13;:32::i;:::-;5260:180;;;:::o;442:132:57:-;512:4;350:20:2;359:10;350:8;:20::i;:::-;342:29;;;;;;;;528:18:57;534:2;538:7;528:5;:18::i;:::-;563:4;556:11;;442:132;;;;:::o;6079::50:-;6165:39;6182:4;6188:2;6192:7;6165:39;;;;;;;;;;;;;:16;:39::i;:::-;6079:132;;;:::o;2530:177::-;2585:7;2604:13;2620:11;:20;2632:7;2620:20;;;;;;;;;;;;;;;;;;;;;2604:36;;2675:1;2658:19;;:5;:19;;;;2650:28;;;;;;;;2695:5;2688:12;;;2530:177;;;:::o;2156:150::-;2211:7;2255:1;2238:19;;:5;:19;;;;2230:28;;;;;;;;2275:17;:24;2293:5;2275:24;;;;;;;;;;;;;;;;2268:31;;2156:150;;;:::o;508:90:2:-;350:20;359:10;350:8;:20::i;:::-;342:29;;;;;;;;572:19;583:7;572:10;:19::i;:::-;508:90;:::o;604:75::-;647:25;661:10;647:13;:25::i;:::-;604:75::o;4148:213:50:-;4233:10;4227:16;;:2;:16;;;;4219:25;;;;;;;;4291:8;4254:18;:30;4273:10;4254:30;;;;;;;;;;;;;;;:34;4285:2;4254:34;;;;;;;;;;;;;;;;:45;;;;;;;;;;;;;;;;;;4341:2;4314:40;;4329:10;4314:40;;;4345:8;4314:40;;;;;;;;;;;;;;;;;;;;;;4148:213;;:::o;395:107:2:-;451:4;474:21;487:7;474:8;:12;;:21;;;;:::i;:::-;467:28;;395:107;;;:::o;6916:211:50:-;7022:31;7035:4;7041:2;7045:7;7022:12;:31::i;:::-;7071:48;7094:4;7100:2;7104:7;7113:5;7071:22;:48::i;:::-;7063:57;;;;;;;;6916:211;;;;:::o;4682:145::-;4762:4;4785:18;:25;4804:5;4785:25;;;;;;;;;;;;;;;:35;4811:8;4785:35;;;;;;;;;;;;;;;;;;;;;;;;;4778:42;;4682:145;;;;:::o;7316:152::-;7373:4;7389:13;7405:11;:20;7417:7;7405:20;;;;;;;;;;;;;;;;;;;;;7389:36;;7459:1;7442:19;;:5;:19;;;;7435:26;;;7316:152;;;:::o;7831:246::-;7916:4;7932:13;7948:16;7956:7;7948;:16::i;:::-;7932:32;;7993:5;7982:16;;:7;:16;;;:51;;;;8026:7;8002:31;;:20;8014:7;8002:11;:20::i;:::-;:31;;;7982:51;:87;;;;8037:32;8054:5;8061:7;8037:16;:32::i;:::-;7982:87;7974:96;;;7831:246;;;;:::o;9819:402::-;9932:4;9912:24;;:16;9920:7;9912;:16::i;:::-;:24;;;9904:33;;;;;;;;9969:1;9955:16;;:2;:16;;;;9947:25;;;;;;;;9983:23;9998:7;9983:14;:23::i;:::-;10043:30;10071:1;10043:17;:23;10061:4;10043:23;;;;;;;;;;;;;;;;:27;;:30;;;;:::i;:::-;10017:17;:23;10035:4;10017:23;;;;;;;;;;;;;;;:56;;;;10107:28;10133:1;10107:17;:21;10125:2;10107:21;;;;;;;;;;;;;;;;:25;;:28;;;;:::i;:::-;10083:17;:21;10101:2;10083:21;;;;;;;;;;;;;;;:52;;;;10169:2;10146:11;:20;10158:7;10146:20;;;;;;;;;;;;:25;;;;;;;;;;;;;;;;;;10206:7;10202:2;10187:27;;10196:4;10187:27;;;;;;;;;;;;9819:402;;;:::o;8320:278::-;8405:1;8391:16;;:2;:16;;;;8383:25;;;;;;;;8427:16;8435:7;8427;:16::i;:::-;8426:17;8418:26;;;;;;;;8478:2;8455:11;:20;8467:7;8455:20;;;;;;;;;;;;:25;;;;;;;;;;;;;;;;;;8514:28;8540:1;8514:17;:21;8532:2;8514:21;;;;;;;;;;;;;;;;:25;;:28;;;;:::i;:::-;8490:17;:21;8508:2;8490:21;;;;;;;;;;;;;;;:52;;;;8583:7;8579:2;8558:33;;8575:1;8558:33;;;;;;;;;;;;8320:278;;:::o;685:119:2:-;741:21;754:7;741:8;:12;;:21;;;;:::i;:::-;789:7;777:20;;;;;;;;;;;;685:119;:::o;810:127::-;869:24;885:7;869:8;:15;;:24;;;;:::i;:::-;922:7;908:22;;;;;;;;;;;;810:127;:::o;786:162:0:-;858:4;901:1;882:21;;:7;:21;;;;874:30;;;;;;;;921:4;:11;;:20;933:7;921:20;;;;;;;;;;;;;;;;;;;;;;;;;914:27;;786:162;;;;:::o;10744:347:50:-;10865:4;10890:15;:2;:13;;;:15::i;:::-;10889:16;10885:58;;;10928:4;10921:11;;;;10885:58;10953:13;10985:2;10969:36;;;11006:10;11018:4;11024:7;11033:5;10969:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;10969:70:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10969:70:50;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;10969:70:50;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;10969:70:50;;;;;;;;;;;;;;;;10953:86;;658:10;11067:16;;11057:26;;;:6;:26;;;;11049:35;;;10744:347;;;;;;;:::o;11252:171::-;11351:1;11315:38;;:15;:24;11331:7;11315:24;;;;;;;;;;;;;;;;;;;;;:38;;;;11311:106;;;11404:1;11369:15;:24;11385:7;11369:24;;;;;;;;;;;;:37;;;;;;;;;;;;;;;;;;11311:106;11252:171;:::o;1205:145:33:-;1263:7;1295:1;1290;:6;;1282:15;;;;;;;;1307:9;1323:1;1319;:5;1307:17;;1342:1;1335:8;;;1205:145;;;;:::o;1431:::-;1489:7;1508:9;1524:1;1520;:5;1508:17;;1548:1;1543;:6;;1535:15;;;;;;;;1568:1;1561:8;;;1431:145;;;;:::o;259:181:0:-;354:1;335:21;;:7;:21;;;;327:30;;;;;;;;376:18;380:4;386:7;376:3;:18::i;:::-;375:19;367:28;;;;;;;;429:4;406;:11;;:20;418:7;406:20;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;259:181;;:::o;514:184::-;612:1;593:21;;:7;:21;;;;585:30;;;;;;;;633:18;637:4;643:7;633:3;:18::i;:::-;625:27;;;;;;;;686:5;663:4;:11;;:20;675:7;663:20;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;514:184;;:::o;463:616:64:-;523:4;539:12;1038:7;1026:20;1018:28;;1071:1;1064:4;:8;1057:15;;;463:616;;;:::o", + "source": "pragma solidity ^0.5.0;\n\nimport \"./ERC721.sol\";\nimport \"../../access/roles/MinterRole.sol\";\n\n/**\n * @title ERC721Mintable\n * @dev ERC721 minting logic\n */\ncontract ERC721Mintable is ERC721, MinterRole {\n /**\n * @dev Function to mint tokens\n * @param to The address that will receive the minted tokens.\n * @param tokenId The token id to mint.\n * @return A boolean that indicates if the operation was successful.\n */\n function mint(address to, uint256 tokenId) public onlyMinter returns (bool) {\n _mint(to, tokenId);\n return true;\n }\n}\n", + "sourcePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/token/ERC721/ERC721Mintable.sol", + "ast": { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/token/ERC721/ERC721Mintable.sol", + "exportedSymbols": { + "ERC721Mintable": [ + 6453 + ] + }, + "id": 6454, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 6427, + "literals": [ + "solidity", + "^", + "0.5", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "0:23:57" + }, + { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/token/ERC721/ERC721.sol", + "file": "./ERC721.sol", + "id": 6428, + "nodeType": "ImportDirective", + "scope": 6454, + "sourceUnit": 5855, + "src": "25:22:57", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/access/roles/MinterRole.sol", + "file": "../../access/roles/MinterRole.sol", + "id": 6429, + "nodeType": "ImportDirective", + "scope": 6454, + "sourceUnit": 300, + "src": "48:43:57", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 6430, + "name": "ERC721", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 5854, + "src": "182:6:57", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC721_$5854", + "typeString": "contract ERC721" + } + }, + "id": 6431, + "nodeType": "InheritanceSpecifier", + "src": "182:6:57" + }, + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 6432, + "name": "MinterRole", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 299, + "src": "190:10:57", + "typeDescriptions": { + "typeIdentifier": "t_contract$_MinterRole_$299", + "typeString": "contract MinterRole" + } + }, + "id": 6433, + "nodeType": "InheritanceSpecifier", + "src": "190:10:57" + } + ], + "contractDependencies": [ + 299, + 3055, + 3202, + 5854, + 6619 + ], + "contractKind": "contract", + "documentation": "@title ERC721Mintable\n@dev ERC721 minting logic", + "fullyImplemented": true, + "id": 6453, + "linearizedBaseContracts": [ + 6453, + 299, + 5854, + 6619, + 3055, + 3202 + ], + "name": "ERC721Mintable", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": { + "id": 6451, + "nodeType": "Block", + "src": "518:56:57", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 6445, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6435, + "src": "534:2:57", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 6446, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6437, + "src": "538:7:57", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 6444, + "name": "_mint", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5666, + "src": "528:5:57", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 6447, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "528:18:57", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 6448, + "nodeType": "ExpressionStatement", + "src": "528:18:57" + }, + { + "expression": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 6449, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "563:4:57", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 6443, + "id": 6450, + "nodeType": "Return", + "src": "556:11:57" + } + ] + }, + "documentation": "@dev Function to mint tokens\n@param to The address that will receive the minted tokens.\n@param tokenId The token id to mint.\n@return A boolean that indicates if the operation was successful.", + "id": 6452, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": null, + "id": 6440, + "modifierName": { + "argumentTypes": null, + "id": 6439, + "name": "onlyMinter", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 232, + "src": "492:10:57", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "492:10:57" + } + ], + "name": "mint", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6438, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6435, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 6452, + "src": "456:10:57", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6434, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "456:7:57", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 6437, + "name": "tokenId", + "nodeType": "VariableDeclaration", + "scope": 6452, + "src": "468:15:57", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6436, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "468:7:57", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "455:29:57" + }, + "returnParameters": { + "id": 6443, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6442, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 6452, + "src": "512:4:57", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 6441, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "512:4:57", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "511:6:57" + }, + "scope": 6453, + "src": "442:132:57", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + } + ], + "scope": 6454, + "src": "155:421:57" + } + ], + "src": "0:577:57" + }, + "legacyAST": { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/token/ERC721/ERC721Mintable.sol", + "exportedSymbols": { + "ERC721Mintable": [ + 6453 + ] + }, + "id": 6454, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 6427, + "literals": [ + "solidity", + "^", + "0.5", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "0:23:57" + }, + { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/token/ERC721/ERC721.sol", + "file": "./ERC721.sol", + "id": 6428, + "nodeType": "ImportDirective", + "scope": 6454, + "sourceUnit": 5855, + "src": "25:22:57", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/access/roles/MinterRole.sol", + "file": "../../access/roles/MinterRole.sol", + "id": 6429, + "nodeType": "ImportDirective", + "scope": 6454, + "sourceUnit": 300, + "src": "48:43:57", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 6430, + "name": "ERC721", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 5854, + "src": "182:6:57", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC721_$5854", + "typeString": "contract ERC721" + } + }, + "id": 6431, + "nodeType": "InheritanceSpecifier", + "src": "182:6:57" + }, + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 6432, + "name": "MinterRole", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 299, + "src": "190:10:57", + "typeDescriptions": { + "typeIdentifier": "t_contract$_MinterRole_$299", + "typeString": "contract MinterRole" + } + }, + "id": 6433, + "nodeType": "InheritanceSpecifier", + "src": "190:10:57" + } + ], + "contractDependencies": [ + 299, + 3055, + 3202, + 5854, + 6619 + ], + "contractKind": "contract", + "documentation": "@title ERC721Mintable\n@dev ERC721 minting logic", + "fullyImplemented": true, + "id": 6453, + "linearizedBaseContracts": [ + 6453, + 299, + 5854, + 6619, + 3055, + 3202 + ], + "name": "ERC721Mintable", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": { + "id": 6451, + "nodeType": "Block", + "src": "518:56:57", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 6445, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6435, + "src": "534:2:57", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 6446, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6437, + "src": "538:7:57", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 6444, + "name": "_mint", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5666, + "src": "528:5:57", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 6447, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "528:18:57", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 6448, + "nodeType": "ExpressionStatement", + "src": "528:18:57" + }, + { + "expression": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 6449, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "563:4:57", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 6443, + "id": 6450, + "nodeType": "Return", + "src": "556:11:57" + } + ] + }, + "documentation": "@dev Function to mint tokens\n@param to The address that will receive the minted tokens.\n@param tokenId The token id to mint.\n@return A boolean that indicates if the operation was successful.", + "id": 6452, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": null, + "id": 6440, + "modifierName": { + "argumentTypes": null, + "id": 6439, + "name": "onlyMinter", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 232, + "src": "492:10:57", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "492:10:57" + } + ], + "name": "mint", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6438, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6435, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 6452, + "src": "456:10:57", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6434, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "456:7:57", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 6437, + "name": "tokenId", + "nodeType": "VariableDeclaration", + "scope": 6452, + "src": "468:15:57", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6436, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "468:7:57", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "455:29:57" + }, + "returnParameters": { + "id": 6443, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6442, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 6452, + "src": "512:4:57", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 6441, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "512:4:57", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "511:6:57" + }, + "scope": 6453, + "src": "442:132:57", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + } + ], + "scope": 6454, + "src": "155:421:57" + } + ], + "src": "0:577:57" + }, + "compiler": { + "name": "solc", + "version": "0.5.0+commit.1d4f565a.Emscripten.clang" + }, + "networks": {}, + "schemaVersion": "3.0.0", + "updatedAt": "2019-01-04T21:44:02.906Z", + "devdoc": { + "details": "ERC721 minting logic", + "methods": { + "approve(address,uint256)": { + "details": "Approves another address to transfer the given token ID The zero address indicates there is no approved address. There can only be one approved address per token at a given time. Can only be called by the token owner or an approved operator.", + "params": { + "to": "address to be approved for the given token ID", + "tokenId": "uint256 ID of the token to be approved" + } + }, + "balanceOf(address)": { + "details": "Gets the balance of the specified address", + "params": { + "owner": "address to query the balance of" + }, + "return": "uint256 representing the amount owned by the passed address" + }, + "getApproved(uint256)": { + "details": "Gets the approved address for a token ID, or zero if no address set Reverts if the token ID does not exist.", + "params": { + "tokenId": "uint256 ID of the token to query the approval of" + }, + "return": "address currently approved for the given token ID" + }, + "isApprovedForAll(address,address)": { + "details": "Tells whether an operator is approved by a given owner", + "params": { + "operator": "operator address which you want to query the approval of", + "owner": "owner address which you want to query the approval of" + }, + "return": "bool whether the given operator is approved by the given owner" + }, + "mint(address,uint256)": { + "details": "Function to mint tokens", + "params": { + "to": "The address that will receive the minted tokens.", + "tokenId": "The token id to mint." + }, + "return": "A boolean that indicates if the operation was successful." + }, + "ownerOf(uint256)": { + "details": "Gets the owner of the specified token ID", + "params": { + "tokenId": "uint256 ID of the token to query the owner of" + }, + "return": "owner address currently marked as the owner of the given token ID" + }, + "safeTransferFrom(address,address,uint256)": { + "details": "Safely transfers the ownership of a given token ID to another address If the target address is a contract, it must implement `onERC721Received`, which is called upon a safe transfer, and return the magic value `bytes4(keccak256(\"onERC721Received(address,address,uint256,bytes)\"))`; otherwise, the transfer is reverted. * Requires the msg sender to be the owner, approved, or operator", + "params": { + "from": "current owner of the token", + "to": "address to receive the ownership of the given token ID", + "tokenId": "uint256 ID of the token to be transferred" + } + }, + "safeTransferFrom(address,address,uint256,bytes)": { + "details": "Safely transfers the ownership of a given token ID to another address If the target address is a contract, it must implement `onERC721Received`, which is called upon a safe transfer, and return the magic value `bytes4(keccak256(\"onERC721Received(address,address,uint256,bytes)\"))`; otherwise, the transfer is reverted. Requires the msg sender to be the owner, approved, or operator", + "params": { + "_data": "bytes data to send along with a safe transfer check", + "from": "current owner of the token", + "to": "address to receive the ownership of the given token ID", + "tokenId": "uint256 ID of the token to be transferred" + } + }, + "setApprovalForAll(address,bool)": { + "details": "Sets or unsets the approval of a given operator An operator is allowed to transfer all tokens of the sender on their behalf", + "params": { + "approved": "representing the status of the approval to be set", + "to": "operator address to set the approval" + } + }, + "supportsInterface(bytes4)": { + "details": "implement supportsInterface(bytes4) using a lookup table" + }, + "transferFrom(address,address,uint256)": { + "details": "Transfers the ownership of a given token ID to another address Usage of this method is discouraged, use `safeTransferFrom` whenever possible Requires the msg sender to be the owner, approved, or operator", + "params": { + "from": "current owner of the token", + "to": "address to receive the ownership of the given token ID", + "tokenId": "uint256 ID of the token to be transferred" + } + } + }, + "title": "ERC721Mintable" + }, + "userdoc": { + "methods": {} + } +} \ No newline at end of file diff --git a/node_modules/openzeppelin-solidity/build/contracts/ERC721Pausable.json b/node_modules/openzeppelin-solidity/build/contracts/ERC721Pausable.json new file mode 100644 index 0000000..d9e0224 --- /dev/null +++ b/node_modules/openzeppelin-solidity/build/contracts/ERC721Pausable.json @@ -0,0 +1,1956 @@ +{ + "contractName": "ERC721Pausable", + "abi": [ + { + "constant": true, + "inputs": [ + { + "name": "interfaceId", + "type": "bytes4" + } + ], + "name": "supportsInterface", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "tokenId", + "type": "uint256" + } + ], + "name": "getApproved", + "outputs": [ + { + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [], + "name": "unpause", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "from", + "type": "address" + }, + { + "name": "to", + "type": "address" + }, + { + "name": "tokenId", + "type": "uint256" + } + ], + "name": "safeTransferFrom", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "account", + "type": "address" + } + ], + "name": "isPauser", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "paused", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "tokenId", + "type": "uint256" + } + ], + "name": "ownerOf", + "outputs": [ + { + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [], + "name": "renouncePauser", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "owner", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "account", + "type": "address" + } + ], + "name": "addPauser", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [], + "name": "pause", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "from", + "type": "address" + }, + { + "name": "to", + "type": "address" + }, + { + "name": "tokenId", + "type": "uint256" + }, + { + "name": "_data", + "type": "bytes" + } + ], + "name": "safeTransferFrom", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "owner", + "type": "address" + }, + { + "name": "operator", + "type": "address" + } + ], + "name": "isApprovedForAll", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "name": "account", + "type": "address" + } + ], + "name": "Paused", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "name": "account", + "type": "address" + } + ], + "name": "Unpaused", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "account", + "type": "address" + } + ], + "name": "PauserAdded", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "account", + "type": "address" + } + ], + "name": "PauserRemoved", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "from", + "type": "address" + }, + { + "indexed": true, + "name": "to", + "type": "address" + }, + { + "indexed": true, + "name": "tokenId", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "name": "approved", + "type": "address" + }, + { + "indexed": true, + "name": "tokenId", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "name": "operator", + "type": "address" + }, + { + "indexed": false, + "name": "approved", + "type": "bool" + } + ], + "name": "ApprovalForAll", + "type": "event" + }, + { + "constant": false, + "inputs": [ + { + "name": "to", + "type": "address" + }, + { + "name": "tokenId", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "to", + "type": "address" + }, + { + "name": "approved", + "type": "bool" + } + ], + "name": "setApprovalForAll", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "from", + "type": "address" + }, + { + "name": "to", + "type": "address" + }, + { + "name": "tokenId", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x6080604052620000416301ffc9a77c010000000000000000000000000000000000000000000000000000000002620000b9640100000000026401000000009004565b6200007e6380ac58cd7c010000000000000000000000000000000000000000000000000000000002620000b9640100000000026401000000009004565b620000983362000177640100000000026401000000009004565b6000600660006101000a81548160ff02191690831515021790555062000339565b63ffffffff7c010000000000000000000000000000000000000000000000000000000002817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916141515156200010b57600080fd5b6001600080837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6200019b816005620001e16401000000000262001630179091906401000000009004565b8073ffffffffffffffffffffffffffffffffffffffff167f6719d08c1888103bea251a4ed56406bd0c3e69723c8a1686e017e7bbe159b6f860405160405180910390a250565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515156200021e57600080fd5b620002398282620002a4640100000000026401000000009004565b1515156200024657600080fd5b60018260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614151515620002e257600080fd5b8260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b61182280620003496000396000f3fe6080604052600436106100e6576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806301ffc9a7146100eb578063081812fc1461015d578063095ea7b3146101d857806323b872dd146102335780633f4ba83a146102ae57806342842e0e146102c557806346fbf68e146103405780635c975abb146103a95780636352211e146103d85780636ef8d66d1461045357806370a082311461046a57806382dc1ec4146104cf5780638456cb5914610520578063a22cb46514610537578063b88d4fde14610594578063e985e9c5146106a6575b600080fd5b3480156100f757600080fd5b506101436004803603602081101561010e57600080fd5b8101908080357bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916906020019092919050505061072f565b604051808215151515815260200191505060405180910390f35b34801561016957600080fd5b506101966004803603602081101561018057600080fd5b8101908080359060200190929190505050610796565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156101e457600080fd5b50610231600480360360408110156101fb57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506107e7565b005b34801561023f57600080fd5b506102ac6004803603606081101561025657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610811565b005b3480156102ba57600080fd5b506102c361083d565b005b3480156102d157600080fd5b5061033e600480360360608110156102e857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506108ec565b005b34801561034c57600080fd5b5061038f6004803603602081101561036357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061090d565b604051808215151515815260200191505060405180910390f35b3480156103b557600080fd5b506103be61092a565b604051808215151515815260200191505060405180910390f35b3480156103e457600080fd5b50610411600480360360208110156103fb57600080fd5b8101908080359060200190929190505050610941565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561045f57600080fd5b506104686109bf565b005b34801561047657600080fd5b506104b96004803603602081101561048d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506109ca565b6040518082815260200191505060405180910390f35b3480156104db57600080fd5b5061051e600480360360208110156104f257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610a4e565b005b34801561052c57600080fd5b50610535610a6e565b005b34801561054357600080fd5b506105926004803603604081101561055a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803515159060200190929190505050610b1e565b005b3480156105a057600080fd5b506106a4600480360360808110156105b757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291908035906020019064010000000081111561061e57600080fd5b82018360208201111561063057600080fd5b8035906020019184600183028401116401000000008311171561065257600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050610b48565b005b3480156106b257600080fd5b50610715600480360360408110156106c957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610b70565b604051808215151515815260200191505060405180910390f35b6000806000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060009054906101000a900460ff169050919050565b60006107a182610c04565b15156107ac57600080fd5b6002600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b600660009054906101000a900460ff1615151561080357600080fd5b61080d8282610c76565b5050565b600660009054906101000a900460ff1615151561082d57600080fd5b610838838383610dbb565b505050565b6108463361090d565b151561085157600080fd5b600660009054906101000a900460ff16151561086c57600080fd5b6000600660006101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa33604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a1565b6109088383836020604051908101604052806000815250610b48565b505050565b6000610923826005610de090919063ffffffff16565b9050919050565b6000600660009054906101000a900460ff16905090565b6000806001600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515156109b657600080fd5b80915050919050565b6109c833610e74565b565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614151515610a0757600080fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610a573361090d565b1515610a6257600080fd5b610a6b81610ece565b50565b610a773361090d565b1515610a8257600080fd5b600660009054906101000a900460ff16151515610a9e57600080fd5b6001600660006101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25833604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a1565b600660009054906101000a900460ff16151515610b3a57600080fd5b610b448282610f28565b5050565b610b53848484610811565b610b5f84848484611064565b1515610b6a57600080fd5b50505050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6000806001600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415915050919050565b6000610c8182610941565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614151515610cbe57600080fd5b8073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610cfe5750610cfd8133610b70565b5b1515610d0957600080fd5b826002600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a4505050565b610dc53382611287565b1515610dd057600080fd5b610ddb83838361131c565b505050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614151515610e1d57600080fd5b8260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b610e8881600561158190919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167fcd265ebaf09df2871cc7bd4133404a235ba12eff2041bb89d9c714a2621c7c7e60405160405180910390a250565b610ee281600561163090919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167f6719d08c1888103bea251a4ed56406bd0c3e69723c8a1686e017e7bbe159b6f860405160405180910390a250565b3373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614151515610f6357600080fd5b80600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051808215151515815260200191505060405180910390a35050565b60006110858473ffffffffffffffffffffffffffffffffffffffff166116e0565b1515611094576001905061127f565b60008473ffffffffffffffffffffffffffffffffffffffff1663150b7a02338887876040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561118b578082015181840152602081019050611170565b50505050905090810190601f1680156111b85780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b1580156111da57600080fd5b505af11580156111ee573d6000803e3d6000fd5b505050506040513d602081101561120457600080fd5b8101908080519060200190929190505050905063150b7a027c0100000000000000000000000000000000000000000000000000000000027bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149150505b949350505050565b60008061129383610941565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148061130257508373ffffffffffffffffffffffffffffffffffffffff166112ea84610796565b73ffffffffffffffffffffffffffffffffffffffff16145b8061131357506113128185610b70565b5b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff1661133c82610941565b73ffffffffffffffffffffffffffffffffffffffff1614151561135e57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415151561139a57600080fd5b6113a3816116f3565b6113f66001600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546117b390919063ffffffff16565b600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061148c6001600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546117d590919063ffffffff16565b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816001600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515156115bd57600080fd5b6115c78282610de0565b15156115d257600080fd5b60008260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415151561166c57600080fd5b6116768282610de0565b15151561168257600080fd5b60018260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600080823b905060008111915050919050565b600073ffffffffffffffffffffffffffffffffffffffff166002600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156117b05760006002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b50565b60008282111515156117c457600080fd5b600082840390508091505092915050565b60008082840190508381101515156117ec57600080fd5b809150509291505056fea165627a7a72305820ffd5fcc7c1214f0daf2c6975269db966c450049690302ab98da57e2674bdc30b0029", + "deployedBytecode": "0x6080604052600436106100e6576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806301ffc9a7146100eb578063081812fc1461015d578063095ea7b3146101d857806323b872dd146102335780633f4ba83a146102ae57806342842e0e146102c557806346fbf68e146103405780635c975abb146103a95780636352211e146103d85780636ef8d66d1461045357806370a082311461046a57806382dc1ec4146104cf5780638456cb5914610520578063a22cb46514610537578063b88d4fde14610594578063e985e9c5146106a6575b600080fd5b3480156100f757600080fd5b506101436004803603602081101561010e57600080fd5b8101908080357bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916906020019092919050505061072f565b604051808215151515815260200191505060405180910390f35b34801561016957600080fd5b506101966004803603602081101561018057600080fd5b8101908080359060200190929190505050610796565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156101e457600080fd5b50610231600480360360408110156101fb57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506107e7565b005b34801561023f57600080fd5b506102ac6004803603606081101561025657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610811565b005b3480156102ba57600080fd5b506102c361083d565b005b3480156102d157600080fd5b5061033e600480360360608110156102e857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506108ec565b005b34801561034c57600080fd5b5061038f6004803603602081101561036357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061090d565b604051808215151515815260200191505060405180910390f35b3480156103b557600080fd5b506103be61092a565b604051808215151515815260200191505060405180910390f35b3480156103e457600080fd5b50610411600480360360208110156103fb57600080fd5b8101908080359060200190929190505050610941565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561045f57600080fd5b506104686109bf565b005b34801561047657600080fd5b506104b96004803603602081101561048d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506109ca565b6040518082815260200191505060405180910390f35b3480156104db57600080fd5b5061051e600480360360208110156104f257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610a4e565b005b34801561052c57600080fd5b50610535610a6e565b005b34801561054357600080fd5b506105926004803603604081101561055a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803515159060200190929190505050610b1e565b005b3480156105a057600080fd5b506106a4600480360360808110156105b757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291908035906020019064010000000081111561061e57600080fd5b82018360208201111561063057600080fd5b8035906020019184600183028401116401000000008311171561065257600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050610b48565b005b3480156106b257600080fd5b50610715600480360360408110156106c957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610b70565b604051808215151515815260200191505060405180910390f35b6000806000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060009054906101000a900460ff169050919050565b60006107a182610c04565b15156107ac57600080fd5b6002600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b600660009054906101000a900460ff1615151561080357600080fd5b61080d8282610c76565b5050565b600660009054906101000a900460ff1615151561082d57600080fd5b610838838383610dbb565b505050565b6108463361090d565b151561085157600080fd5b600660009054906101000a900460ff16151561086c57600080fd5b6000600660006101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa33604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a1565b6109088383836020604051908101604052806000815250610b48565b505050565b6000610923826005610de090919063ffffffff16565b9050919050565b6000600660009054906101000a900460ff16905090565b6000806001600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515156109b657600080fd5b80915050919050565b6109c833610e74565b565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614151515610a0757600080fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610a573361090d565b1515610a6257600080fd5b610a6b81610ece565b50565b610a773361090d565b1515610a8257600080fd5b600660009054906101000a900460ff16151515610a9e57600080fd5b6001600660006101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25833604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a1565b600660009054906101000a900460ff16151515610b3a57600080fd5b610b448282610f28565b5050565b610b53848484610811565b610b5f84848484611064565b1515610b6a57600080fd5b50505050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6000806001600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415915050919050565b6000610c8182610941565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614151515610cbe57600080fd5b8073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610cfe5750610cfd8133610b70565b5b1515610d0957600080fd5b826002600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a4505050565b610dc53382611287565b1515610dd057600080fd5b610ddb83838361131c565b505050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614151515610e1d57600080fd5b8260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b610e8881600561158190919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167fcd265ebaf09df2871cc7bd4133404a235ba12eff2041bb89d9c714a2621c7c7e60405160405180910390a250565b610ee281600561163090919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167f6719d08c1888103bea251a4ed56406bd0c3e69723c8a1686e017e7bbe159b6f860405160405180910390a250565b3373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614151515610f6357600080fd5b80600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051808215151515815260200191505060405180910390a35050565b60006110858473ffffffffffffffffffffffffffffffffffffffff166116e0565b1515611094576001905061127f565b60008473ffffffffffffffffffffffffffffffffffffffff1663150b7a02338887876040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561118b578082015181840152602081019050611170565b50505050905090810190601f1680156111b85780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b1580156111da57600080fd5b505af11580156111ee573d6000803e3d6000fd5b505050506040513d602081101561120457600080fd5b8101908080519060200190929190505050905063150b7a027c0100000000000000000000000000000000000000000000000000000000027bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149150505b949350505050565b60008061129383610941565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148061130257508373ffffffffffffffffffffffffffffffffffffffff166112ea84610796565b73ffffffffffffffffffffffffffffffffffffffff16145b8061131357506113128185610b70565b5b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff1661133c82610941565b73ffffffffffffffffffffffffffffffffffffffff1614151561135e57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415151561139a57600080fd5b6113a3816116f3565b6113f66001600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546117b390919063ffffffff16565b600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061148c6001600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546117d590919063ffffffff16565b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816001600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515156115bd57600080fd5b6115c78282610de0565b15156115d257600080fd5b60008260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415151561166c57600080fd5b6116768282610de0565b15151561168257600080fd5b60018260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600080823b905060008111915050919050565b600073ffffffffffffffffffffffffffffffffffffffff166002600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156117b05760006002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b50565b60008282111515156117c457600080fd5b600082840390508091505092915050565b60008082840190508381101515156117ec57600080fd5b809150509291505056fea165627a7a72305820ffd5fcc7c1214f0daf2c6975269db966c450049690302ab98da57e2674bdc30b0029", + "sourceMap": "191:443:58:-;;;640:40:28;236:10;659:20;;640:18;;;:40;;;:::i;:::-;1906::50;1163:10;1925:20;;1906:18;;;:40;;;:::i;:::-;275:22:3;286:10;275;;;:22;;;:::i;:::-;362:5:31;352:7;;:15;;;;;;;;;;;;;;;;;;191:443:58;;990:158:28;1080:10;1065:25;;:11;:25;;;;;1057:34;;;;;;;;1137:4;1101:20;:33;1122:11;1101:33;;;;;;;;;;;;;;;;;;:40;;;;;;;;;;;;;;;;;;990:158;:::o;685:119:3:-;741:21;754:7;741:8;:12;;;;;;:21;;;;;:::i;:::-;789:7;777:20;;;;;;;;;;;;685:119;:::o;259:181:0:-;354:1;335:21;;:7;:21;;;;327:30;;;;;;;;376:18;380:4;386:7;376:3;;;:18;;;:::i;:::-;375:19;367:28;;;;;;;;429:4;406;:11;;:20;418:7;406:20;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;259:181;;:::o;786:162::-;858:4;901:1;882:21;;:7;:21;;;;874:30;;;;;;;;921:4;:11;;:20;933:7;921:20;;;;;;;;;;;;;;;;;;;;;;;;;914:27;;786:162;;;;:::o;191:443:58:-;;;;;;;", + "deployedSourceMap": "191:443:58:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;778:133:28;;8:9:-1;5:2;;;30:1;27;20:12;5:2;778:133:28;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;778:133:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3705:151:50;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3705:151:50;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3705:151:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;241:110:58;;8:9:-1;5:2;;;30:1;27;20:12;5:2;241:110:58;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;241:110:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;492:140;;8:9:-1;5:2;;;30:1;27;20:12;5:2;492:140:58;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;492:140:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1176:115:31;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1176:115:31;;;;;;6079:132:50;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6079:132:50;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;6079:132:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;395:107:3;;8:9:-1;5:2;;;30:1;27;20:12;5:2;395:107:3;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;395:107:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;460:76:31;;8:9:-1;5:2;;;30:1;27;20:12;5:2;460:76:31;;;;;;;;;;;;;;;;;;;;;;;;;;;2530:177:50;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2530:177:50;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2530:177:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;604:75:3;;8:9:-1;5:2;;;30:1;27;20:12;5:2;604:75:3;;;;;;2156:150:50;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2156:150:50;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2156:150:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;508:90:3;;8:9:-1;5:2;;;30:1;27;20:12;5:2;508:90:3;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;508:90:3;;;;;;;;;;;;;;;;;;;;;;973:113:31;;8:9:-1;5:2;;;30:1;27;20:12;5:2;973:113:31;;;;;;357:129:58;;8:9:-1;5:2;;;30:1;27;20:12;5:2;357:129:58;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;357:129:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6916:211:50;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6916:211:50;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;6916:211:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;6916:211:50;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;6916:211:50;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;6916:211:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;6916:211:50;;;;;;;;;;;;;;;;;;4682:145;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4682:145:50;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4682:145:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;778:133:28;848:4;871:20;:33;892:11;871:33;;;;;;;;;;;;;;;;;;;;;;;;;;;864:40;;778:133;;;:::o;3705:151:50:-;3764:7;3791:16;3799:7;3791;:16::i;:::-;3783:25;;;;;;;;3825:15;:24;3841:7;3825:24;;;;;;;;;;;;;;;;;;;;;3818:31;;3705:151;;;:::o;241:110:58:-;689:7:31;;;;;;;;;;;688:8;680:17;;;;;;;;318:26:58;332:2;336:7;318:13;:26::i;:::-;241:110;;:::o;492:140::-;689:7:31;;;;;;;;;;;688:8;680:17;;;;;;;;588:37:58;607:4;613:2;617:7;588:18;:37::i;:::-;492:140;;;:::o;1176:115:31:-;350:20:3;359:10;350:8;:20::i;:::-;342:29;;;;;;;;860:7:31;;;;;;;;;;;852:16;;;;;;;;1244:5;1234:7;;:15;;;;;;;;;;;;;;;;;;1264:20;1273:10;1264:20;;;;;;;;;;;;;;;;;;;;;;1176:115::o;6079:132:50:-;6165:39;6182:4;6188:2;6192:7;6165:39;;;;;;;;;;;;;:16;:39::i;:::-;6079:132;;;:::o;395:107:3:-;451:4;474:21;487:7;474:8;:12;;:21;;;;:::i;:::-;467:28;;395:107;;;:::o;460:76:31:-;499:4;522:7;;;;;;;;;;;515:14;;460:76;:::o;2530:177:50:-;2585:7;2604:13;2620:11;:20;2632:7;2620:20;;;;;;;;;;;;;;;;;;;;;2604:36;;2675:1;2658:19;;:5;:19;;;;2650:28;;;;;;;;2695:5;2688:12;;;2530:177;;;:::o;604:75:3:-;647:25;661:10;647:13;:25::i;:::-;604:75::o;2156:150:50:-;2211:7;2255:1;2238:19;;:5;:19;;;;2230:28;;;;;;;;2275:17;:24;2293:5;2275:24;;;;;;;;;;;;;;;;2268:31;;2156:150;;;:::o;508:90:3:-;350:20;359:10;350:8;:20::i;:::-;342:29;;;;;;;;572:19;583:7;572:10;:19::i;:::-;508:90;:::o;973:113:31:-;350:20:3;359:10;350:8;:20::i;:::-;342:29;;;;;;;;689:7:31;;;;;;;;;;;688:8;680:17;;;;;;;;1042:4;1032:7;;:14;;;;;;;;;;;;;;;;;;1061:18;1068:10;1061:18;;;;;;;;;;;;;;;;;;;;;;973:113::o;357:129:58:-;689:7:31;;;;;;;;;;;688:8;680:17;;;;;;;;442:37:58;466:2;470:8;442:23;:37::i;:::-;357:129;;:::o;6916:211:50:-;7022:31;7035:4;7041:2;7045:7;7022:12;:31::i;:::-;7071:48;7094:4;7100:2;7104:7;7113:5;7071:22;:48::i;:::-;7063:57;;;;;;;;6916:211;;;;:::o;4682:145::-;4762:4;4785:18;:25;4804:5;4785:25;;;;;;;;;;;;;;;:35;4811:8;4785:35;;;;;;;;;;;;;;;;;;;;;;;;;4778:42;;4682:145;;;;:::o;7316:152::-;7373:4;7389:13;7405:11;:20;7417:7;7405:20;;;;;;;;;;;;;;;;;;;;;7389:36;;7459:1;7442:19;;:5;:19;;;;7435:26;;;7316:152;;;:::o;3128:292::-;3191:13;3207:16;3215:7;3207;:16::i;:::-;3191:32;;3247:5;3241:11;;:2;:11;;;;3233:20;;;;;;;;3285:5;3271:19;;:10;:19;;;:58;;;;3294:35;3311:5;3318:10;3294:16;:35::i;:::-;3271:58;3263:67;;;;;;;;3368:2;3341:15;:24;3357:7;3341:24;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;3405:7;3401:2;3385:28;;3394:5;3385:28;;;;;;;;;;;;3128:292;;;:::o;5260:180::-;5350:39;5369:10;5381:7;5350:18;:39::i;:::-;5342:48;;;;;;;;5401:32;5415:4;5421:2;5425:7;5401:13;:32::i;:::-;5260:180;;;:::o;786:162:0:-;858:4;901:1;882:21;;:7;:21;;;;874:30;;;;;;;;921:4;:11;;:20;933:7;921:20;;;;;;;;;;;;;;;;;;;;;;;;;914:27;;786:162;;;;:::o;810:127:3:-;869:24;885:7;869:8;:15;;:24;;;;:::i;:::-;922:7;908:22;;;;;;;;;;;;810:127;:::o;685:119::-;741:21;754:7;741:8;:12;;:21;;;;:::i;:::-;789:7;777:20;;;;;;;;;;;;685:119;:::o;4148:213:50:-;4233:10;4227:16;;:2;:16;;;;4219:25;;;;;;;;4291:8;4254:18;:30;4273:10;4254:30;;;;;;;;;;;;;;;:34;4285:2;4254:34;;;;;;;;;;;;;;;;:45;;;;;;;;;;;;;;;;;;4341:2;4314:40;;4329:10;4314:40;;;4345:8;4314:40;;;;;;;;;;;;;;;;;;;;;;4148:213;;:::o;10744:347::-;10865:4;10890:15;:2;:13;;;:15::i;:::-;10889:16;10885:58;;;10928:4;10921:11;;;;10885:58;10953:13;10985:2;10969:36;;;11006:10;11018:4;11024:7;11033:5;10969:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;10969:70:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10969:70:50;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;10969:70:50;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;10969:70:50;;;;;;;;;;;;;;;;10953:86;;658:10;11067:16;;11057:26;;;:6;:26;;;;11049:35;;;10744:347;;;;;;;:::o;7831:246::-;7916:4;7932:13;7948:16;7956:7;7948;:16::i;:::-;7932:32;;7993:5;7982:16;;:7;:16;;;:51;;;;8026:7;8002:31;;:20;8014:7;8002:11;:20::i;:::-;:31;;;7982:51;:87;;;;8037:32;8054:5;8061:7;8037:16;:32::i;:::-;7982:87;7974:96;;;7831:246;;;;:::o;9819:402::-;9932:4;9912:24;;:16;9920:7;9912;:16::i;:::-;:24;;;9904:33;;;;;;;;9969:1;9955:16;;:2;:16;;;;9947:25;;;;;;;;9983:23;9998:7;9983:14;:23::i;:::-;10043:30;10071:1;10043:17;:23;10061:4;10043:23;;;;;;;;;;;;;;;;:27;;:30;;;;:::i;:::-;10017:17;:23;10035:4;10017:23;;;;;;;;;;;;;;;:56;;;;10107:28;10133:1;10107:17;:21;10125:2;10107:21;;;;;;;;;;;;;;;;:25;;:28;;;;:::i;:::-;10083:17;:21;10101:2;10083:21;;;;;;;;;;;;;;;:52;;;;10169:2;10146:11;:20;10158:7;10146:20;;;;;;;;;;;;:25;;;;;;;;;;;;;;;;;;10206:7;10202:2;10187:27;;10196:4;10187:27;;;;;;;;;;;;9819:402;;;:::o;514:184:0:-;612:1;593:21;;:7;:21;;;;585:30;;;;;;;;633:18;637:4;643:7;633:3;:18::i;:::-;625:27;;;;;;;;686:5;663:4;:11;;:20;675:7;663:20;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;514:184;;:::o;259:181::-;354:1;335:21;;:7;:21;;;;327:30;;;;;;;;376:18;380:4;386:7;376:3;:18::i;:::-;375:19;367:28;;;;;;;;429:4;406;:11;;:20;418:7;406:20;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;259:181;;:::o;463:616:64:-;523:4;539:12;1038:7;1026:20;1018:28;;1071:1;1064:4;:8;1057:15;;;463:616;;;:::o;11252:171:50:-;11351:1;11315:38;;:15;:24;11331:7;11315:24;;;;;;;;;;;;;;;;;;;;;:38;;;;11311:106;;;11404:1;11369:15;:24;11385:7;11369:24;;;;;;;;;;;;:37;;;;;;;;;;;;;;;;;;11311:106;11252:171;:::o;1205:145:33:-;1263:7;1295:1;1290;:6;;1282:15;;;;;;;;1307:9;1323:1;1319;:5;1307:17;;1342:1;1335:8;;;1205:145;;;;:::o;1431:::-;1489:7;1508:9;1524:1;1520;:5;1508:17;;1548:1;1543;:6;;1535:15;;;;;;;;1568:1;1561:8;;;1431:145;;;;:::o", + "source": "pragma solidity ^0.5.0;\n\nimport \"./ERC721.sol\";\nimport \"../../lifecycle/Pausable.sol\";\n\n/**\n * @title ERC721 Non-Fungible Pausable token\n * @dev ERC721 modified with pausable transfers.\n **/\ncontract ERC721Pausable is ERC721, Pausable {\n function approve(address to, uint256 tokenId) public whenNotPaused {\n super.approve(to, tokenId);\n }\n\n function setApprovalForAll(address to, bool approved) public whenNotPaused {\n super.setApprovalForAll(to, approved);\n }\n\n function transferFrom(address from, address to, uint256 tokenId) public whenNotPaused {\n super.transferFrom(from, to, tokenId);\n }\n}\n", + "sourcePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/token/ERC721/ERC721Pausable.sol", + "ast": { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/token/ERC721/ERC721Pausable.sol", + "exportedSymbols": { + "ERC721Pausable": [ + 6516 + ] + }, + "id": 6517, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 6455, + "literals": [ + "solidity", + "^", + "0.5", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "0:23:58" + }, + { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/token/ERC721/ERC721.sol", + "file": "./ERC721.sol", + "id": 6456, + "nodeType": "ImportDirective", + "scope": 6517, + "sourceUnit": 5855, + "src": "25:22:58", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/lifecycle/Pausable.sol", + "file": "../../lifecycle/Pausable.sol", + "id": 6457, + "nodeType": "ImportDirective", + "scope": 6517, + "sourceUnit": 3286, + "src": "48:38:58", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 6458, + "name": "ERC721", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 5854, + "src": "218:6:58", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC721_$5854", + "typeString": "contract ERC721" + } + }, + "id": 6459, + "nodeType": "InheritanceSpecifier", + "src": "218:6:58" + }, + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 6460, + "name": "Pausable", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 3285, + "src": "226:8:58", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Pausable_$3285", + "typeString": "contract Pausable" + } + }, + "id": 6461, + "nodeType": "InheritanceSpecifier", + "src": "226:8:58" + } + ], + "contractDependencies": [ + 402, + 3055, + 3202, + 3285, + 5854, + 6619 + ], + "contractKind": "contract", + "documentation": "@title ERC721 Non-Fungible Pausable token\n@dev ERC721 modified with pausable transfers.*", + "fullyImplemented": true, + "id": 6516, + "linearizedBaseContracts": [ + 6516, + 3285, + 402, + 5854, + 6619, + 3055, + 3202 + ], + "name": "ERC721Pausable", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": { + "id": 6477, + "nodeType": "Block", + "src": "308:43:58", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 6473, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6463, + "src": "332:2:58", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 6474, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6465, + "src": "336:7:58", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 6470, + "name": "super", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6989, + "src": "318:5:58", + "typeDescriptions": { + "typeIdentifier": "t_super$_ERC721Pausable_$6516", + "typeString": "contract super ERC721Pausable" + } + }, + "id": 6472, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "approve", + "nodeType": "MemberAccess", + "referencedDeclaration": 5433, + "src": "318:13:58", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 6475, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "318:26:58", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 6476, + "nodeType": "ExpressionStatement", + "src": "318:26:58" + } + ] + }, + "documentation": null, + "id": 6478, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": null, + "id": 6468, + "modifierName": { + "argumentTypes": null, + "id": 6467, + "name": "whenNotPaused", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3242, + "src": "294:13:58", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "294:13:58" + } + ], + "name": "approve", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6466, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6463, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 6478, + "src": "258:10:58", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6462, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "258:7:58", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 6465, + "name": "tokenId", + "nodeType": "VariableDeclaration", + "scope": 6478, + "src": "270:15:58", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6464, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "270:7:58", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "257:29:58" + }, + "returnParameters": { + "id": 6469, + "nodeType": "ParameterList", + "parameters": [], + "src": "308:0:58" + }, + "scope": 6516, + "src": "241:110:58", + "stateMutability": "nonpayable", + "superFunction": 5433, + "visibility": "public" + }, + { + "body": { + "id": 6494, + "nodeType": "Block", + "src": "432:54:58", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 6490, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6480, + "src": "466:2:58", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 6491, + "name": "approved", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6482, + "src": "470:8:58", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "expression": { + "argumentTypes": null, + "id": 6487, + "name": "super", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6989, + "src": "442:5:58", + "typeDescriptions": { + "typeIdentifier": "t_super$_ERC721Pausable_$6516", + "typeString": "contract super ERC721Pausable" + } + }, + "id": 6489, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "setApprovalForAll", + "nodeType": "MemberAccess", + "referencedDeclaration": 5482, + "src": "442:23:58", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bool_$returns$__$", + "typeString": "function (address,bool)" + } + }, + "id": 6492, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "442:37:58", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 6493, + "nodeType": "ExpressionStatement", + "src": "442:37:58" + } + ] + }, + "documentation": null, + "id": 6495, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": null, + "id": 6485, + "modifierName": { + "argumentTypes": null, + "id": 6484, + "name": "whenNotPaused", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3242, + "src": "418:13:58", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "418:13:58" + } + ], + "name": "setApprovalForAll", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6483, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6480, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 6495, + "src": "384:10:58", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6479, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "384:7:58", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 6482, + "name": "approved", + "nodeType": "VariableDeclaration", + "scope": 6495, + "src": "396:13:58", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 6481, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "396:4:58", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "383:27:58" + }, + "returnParameters": { + "id": 6486, + "nodeType": "ParameterList", + "parameters": [], + "src": "432:0:58" + }, + "scope": 6516, + "src": "357:129:58", + "stateMutability": "nonpayable", + "superFunction": 5482, + "visibility": "public" + }, + { + "body": { + "id": 6514, + "nodeType": "Block", + "src": "578:54:58", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 6509, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6497, + "src": "607:4:58", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 6510, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6499, + "src": "613:2:58", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 6511, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6501, + "src": "617:7:58", + "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": 6506, + "name": "super", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6989, + "src": "588:5:58", + "typeDescriptions": { + "typeIdentifier": "t_super$_ERC721Pausable_$6516", + "typeString": "contract super ERC721Pausable" + } + }, + "id": 6508, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "transferFrom", + "nodeType": "MemberAccess", + "referencedDeclaration": 5522, + "src": "588:18:58", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 6512, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "588:37:58", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 6513, + "nodeType": "ExpressionStatement", + "src": "588:37:58" + } + ] + }, + "documentation": null, + "id": 6515, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": null, + "id": 6504, + "modifierName": { + "argumentTypes": null, + "id": 6503, + "name": "whenNotPaused", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3242, + "src": "564:13:58", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "564:13:58" + } + ], + "name": "transferFrom", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6502, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6497, + "name": "from", + "nodeType": "VariableDeclaration", + "scope": 6515, + "src": "514:12:58", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6496, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "514:7:58", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 6499, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 6515, + "src": "528:10:58", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6498, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "528:7:58", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 6501, + "name": "tokenId", + "nodeType": "VariableDeclaration", + "scope": 6515, + "src": "540:15:58", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6500, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "540:7:58", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "513:43:58" + }, + "returnParameters": { + "id": 6505, + "nodeType": "ParameterList", + "parameters": [], + "src": "578:0:58" + }, + "scope": 6516, + "src": "492:140:58", + "stateMutability": "nonpayable", + "superFunction": 5522, + "visibility": "public" + } + ], + "scope": 6517, + "src": "191:443:58" + } + ], + "src": "0:635:58" + }, + "legacyAST": { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/token/ERC721/ERC721Pausable.sol", + "exportedSymbols": { + "ERC721Pausable": [ + 6516 + ] + }, + "id": 6517, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 6455, + "literals": [ + "solidity", + "^", + "0.5", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "0:23:58" + }, + { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/token/ERC721/ERC721.sol", + "file": "./ERC721.sol", + "id": 6456, + "nodeType": "ImportDirective", + "scope": 6517, + "sourceUnit": 5855, + "src": "25:22:58", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/lifecycle/Pausable.sol", + "file": "../../lifecycle/Pausable.sol", + "id": 6457, + "nodeType": "ImportDirective", + "scope": 6517, + "sourceUnit": 3286, + "src": "48:38:58", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 6458, + "name": "ERC721", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 5854, + "src": "218:6:58", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC721_$5854", + "typeString": "contract ERC721" + } + }, + "id": 6459, + "nodeType": "InheritanceSpecifier", + "src": "218:6:58" + }, + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 6460, + "name": "Pausable", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 3285, + "src": "226:8:58", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Pausable_$3285", + "typeString": "contract Pausable" + } + }, + "id": 6461, + "nodeType": "InheritanceSpecifier", + "src": "226:8:58" + } + ], + "contractDependencies": [ + 402, + 3055, + 3202, + 3285, + 5854, + 6619 + ], + "contractKind": "contract", + "documentation": "@title ERC721 Non-Fungible Pausable token\n@dev ERC721 modified with pausable transfers.*", + "fullyImplemented": true, + "id": 6516, + "linearizedBaseContracts": [ + 6516, + 3285, + 402, + 5854, + 6619, + 3055, + 3202 + ], + "name": "ERC721Pausable", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": { + "id": 6477, + "nodeType": "Block", + "src": "308:43:58", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 6473, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6463, + "src": "332:2:58", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 6474, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6465, + "src": "336:7:58", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 6470, + "name": "super", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6989, + "src": "318:5:58", + "typeDescriptions": { + "typeIdentifier": "t_super$_ERC721Pausable_$6516", + "typeString": "contract super ERC721Pausable" + } + }, + "id": 6472, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "approve", + "nodeType": "MemberAccess", + "referencedDeclaration": 5433, + "src": "318:13:58", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 6475, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "318:26:58", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 6476, + "nodeType": "ExpressionStatement", + "src": "318:26:58" + } + ] + }, + "documentation": null, + "id": 6478, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": null, + "id": 6468, + "modifierName": { + "argumentTypes": null, + "id": 6467, + "name": "whenNotPaused", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3242, + "src": "294:13:58", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "294:13:58" + } + ], + "name": "approve", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6466, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6463, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 6478, + "src": "258:10:58", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6462, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "258:7:58", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 6465, + "name": "tokenId", + "nodeType": "VariableDeclaration", + "scope": 6478, + "src": "270:15:58", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6464, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "270:7:58", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "257:29:58" + }, + "returnParameters": { + "id": 6469, + "nodeType": "ParameterList", + "parameters": [], + "src": "308:0:58" + }, + "scope": 6516, + "src": "241:110:58", + "stateMutability": "nonpayable", + "superFunction": 5433, + "visibility": "public" + }, + { + "body": { + "id": 6494, + "nodeType": "Block", + "src": "432:54:58", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 6490, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6480, + "src": "466:2:58", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 6491, + "name": "approved", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6482, + "src": "470:8:58", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "expression": { + "argumentTypes": null, + "id": 6487, + "name": "super", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6989, + "src": "442:5:58", + "typeDescriptions": { + "typeIdentifier": "t_super$_ERC721Pausable_$6516", + "typeString": "contract super ERC721Pausable" + } + }, + "id": 6489, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "setApprovalForAll", + "nodeType": "MemberAccess", + "referencedDeclaration": 5482, + "src": "442:23:58", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bool_$returns$__$", + "typeString": "function (address,bool)" + } + }, + "id": 6492, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "442:37:58", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 6493, + "nodeType": "ExpressionStatement", + "src": "442:37:58" + } + ] + }, + "documentation": null, + "id": 6495, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": null, + "id": 6485, + "modifierName": { + "argumentTypes": null, + "id": 6484, + "name": "whenNotPaused", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3242, + "src": "418:13:58", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "418:13:58" + } + ], + "name": "setApprovalForAll", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6483, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6480, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 6495, + "src": "384:10:58", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6479, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "384:7:58", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 6482, + "name": "approved", + "nodeType": "VariableDeclaration", + "scope": 6495, + "src": "396:13:58", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 6481, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "396:4:58", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "383:27:58" + }, + "returnParameters": { + "id": 6486, + "nodeType": "ParameterList", + "parameters": [], + "src": "432:0:58" + }, + "scope": 6516, + "src": "357:129:58", + "stateMutability": "nonpayable", + "superFunction": 5482, + "visibility": "public" + }, + { + "body": { + "id": 6514, + "nodeType": "Block", + "src": "578:54:58", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 6509, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6497, + "src": "607:4:58", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 6510, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6499, + "src": "613:2:58", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 6511, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6501, + "src": "617:7:58", + "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": 6506, + "name": "super", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6989, + "src": "588:5:58", + "typeDescriptions": { + "typeIdentifier": "t_super$_ERC721Pausable_$6516", + "typeString": "contract super ERC721Pausable" + } + }, + "id": 6508, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "transferFrom", + "nodeType": "MemberAccess", + "referencedDeclaration": 5522, + "src": "588:18:58", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 6512, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "588:37:58", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 6513, + "nodeType": "ExpressionStatement", + "src": "588:37:58" + } + ] + }, + "documentation": null, + "id": 6515, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": null, + "id": 6504, + "modifierName": { + "argumentTypes": null, + "id": 6503, + "name": "whenNotPaused", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3242, + "src": "564:13:58", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "564:13:58" + } + ], + "name": "transferFrom", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6502, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6497, + "name": "from", + "nodeType": "VariableDeclaration", + "scope": 6515, + "src": "514:12:58", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6496, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "514:7:58", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 6499, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 6515, + "src": "528:10:58", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6498, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "528:7:58", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 6501, + "name": "tokenId", + "nodeType": "VariableDeclaration", + "scope": 6515, + "src": "540:15:58", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6500, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "540:7:58", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "513:43:58" + }, + "returnParameters": { + "id": 6505, + "nodeType": "ParameterList", + "parameters": [], + "src": "578:0:58" + }, + "scope": 6516, + "src": "492:140:58", + "stateMutability": "nonpayable", + "superFunction": 5522, + "visibility": "public" + } + ], + "scope": 6517, + "src": "191:443:58" + } + ], + "src": "0:635:58" + }, + "compiler": { + "name": "solc", + "version": "0.5.0+commit.1d4f565a.Emscripten.clang" + }, + "networks": {}, + "schemaVersion": "3.0.0", + "updatedAt": "2019-01-04T21:44:02.906Z", + "devdoc": { + "details": "ERC721 modified with pausable transfers.*", + "methods": { + "balanceOf(address)": { + "details": "Gets the balance of the specified address", + "params": { + "owner": "address to query the balance of" + }, + "return": "uint256 representing the amount owned by the passed address" + }, + "getApproved(uint256)": { + "details": "Gets the approved address for a token ID, or zero if no address set Reverts if the token ID does not exist.", + "params": { + "tokenId": "uint256 ID of the token to query the approval of" + }, + "return": "address currently approved for the given token ID" + }, + "isApprovedForAll(address,address)": { + "details": "Tells whether an operator is approved by a given owner", + "params": { + "operator": "operator address which you want to query the approval of", + "owner": "owner address which you want to query the approval of" + }, + "return": "bool whether the given operator is approved by the given owner" + }, + "ownerOf(uint256)": { + "details": "Gets the owner of the specified token ID", + "params": { + "tokenId": "uint256 ID of the token to query the owner of" + }, + "return": "owner address currently marked as the owner of the given token ID" + }, + "pause()": { + "details": "called by the owner to pause, triggers stopped state" + }, + "paused()": { + "return": "true if the contract is paused, false otherwise." + }, + "safeTransferFrom(address,address,uint256)": { + "details": "Safely transfers the ownership of a given token ID to another address If the target address is a contract, it must implement `onERC721Received`, which is called upon a safe transfer, and return the magic value `bytes4(keccak256(\"onERC721Received(address,address,uint256,bytes)\"))`; otherwise, the transfer is reverted. * Requires the msg sender to be the owner, approved, or operator", + "params": { + "from": "current owner of the token", + "to": "address to receive the ownership of the given token ID", + "tokenId": "uint256 ID of the token to be transferred" + } + }, + "safeTransferFrom(address,address,uint256,bytes)": { + "details": "Safely transfers the ownership of a given token ID to another address If the target address is a contract, it must implement `onERC721Received`, which is called upon a safe transfer, and return the magic value `bytes4(keccak256(\"onERC721Received(address,address,uint256,bytes)\"))`; otherwise, the transfer is reverted. Requires the msg sender to be the owner, approved, or operator", + "params": { + "_data": "bytes data to send along with a safe transfer check", + "from": "current owner of the token", + "to": "address to receive the ownership of the given token ID", + "tokenId": "uint256 ID of the token to be transferred" + } + }, + "supportsInterface(bytes4)": { + "details": "implement supportsInterface(bytes4) using a lookup table" + }, + "unpause()": { + "details": "called by the owner to unpause, returns to normal state" + } + }, + "title": "ERC721 Non-Fungible Pausable token" + }, + "userdoc": { + "methods": {} + } +} \ No newline at end of file diff --git a/node_modules/openzeppelin-solidity/build/contracts/Escrow.json b/node_modules/openzeppelin-solidity/build/contracts/Escrow.json new file mode 100644 index 0000000..8048beb --- /dev/null +++ b/node_modules/openzeppelin-solidity/build/contracts/Escrow.json @@ -0,0 +1,2521 @@ +{ + "contractName": "Escrow", + "abi": [ + { + "constant": false, + "inputs": [ + { + "name": "recipient", + "type": "address" + } + ], + "name": "transferPrimary", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "primary", + "outputs": [ + { + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "payee", + "type": "address" + }, + { + "indexed": false, + "name": "weiAmount", + "type": "uint256" + } + ], + "name": "Deposited", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "payee", + "type": "address" + }, + { + "indexed": false, + "name": "weiAmount", + "type": "uint256" + } + ], + "name": "Withdrawn", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "name": "recipient", + "type": "address" + } + ], + "name": "PrimaryTransferred", + "type": "event" + }, + { + "constant": true, + "inputs": [ + { + "name": "payee", + "type": "address" + } + ], + "name": "depositsOf", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "payee", + "type": "address" + } + ], + "name": "deposit", + "outputs": [], + "payable": true, + "stateMutability": "payable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "payee", + "type": "address" + } + ], + "name": "withdraw", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x6080604052336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f4101e71e974f68df5e9730cc223280b41654676bbb052cdcc735c3337e64d2d96000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff16604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a16106f5806100d76000396000f3fe60806040526004361061006d576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680632348238c1461007257806351cff8d9146100c3578063c6dbdf6114610114578063e3a9db1a1461016b578063f340fa01146101d0575b600080fd5b34801561007e57600080fd5b506100c16004803603602081101561009557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610214565b005b3480156100cf57600080fd5b50610112600480360360208110156100e657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610372565b005b34801561012057600080fd5b506101296104ef565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561017757600080fd5b506101ba6004803603602081101561018e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610518565b6040518082815260200191505060405180910390f35b610212600480360360208110156101e657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610561565b005b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561026f57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515156102ab57600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f4101e71e974f68df5e9730cc223280b41654676bbb052cdcc735c3337e64d2d96000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff16604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a150565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156103cd57600080fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505015801561049c573d6000803e3d6000fd5b508173ffffffffffffffffffffffffffffffffffffffff167f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d5826040518082815260200191505060405180910390a25050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156105bc57600080fd5b600034905061061381600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546106a890919063ffffffff16565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff167f2da466a7b24304f47e87fa2e1e5a81b9831ce54fec19055ce277ca2f39ba42c4826040518082815260200191505060405180910390a25050565b60008082840190508381101515156106bf57600080fd5b809150509291505056fea165627a7a7230582023496572fcf4d9f739516d85468b6dc2a9180fc80fa3971283778e734e0a825c0029", + "deployedBytecode": "0x60806040526004361061006d576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680632348238c1461007257806351cff8d9146100c3578063c6dbdf6114610114578063e3a9db1a1461016b578063f340fa01146101d0575b600080fd5b34801561007e57600080fd5b506100c16004803603602081101561009557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610214565b005b3480156100cf57600080fd5b50610112600480360360208110156100e657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610372565b005b34801561012057600080fd5b506101296104ef565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561017757600080fd5b506101ba6004803603602081101561018e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610518565b6040518082815260200191505060405180910390f35b610212600480360360208110156101e657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610561565b005b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561026f57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515156102ab57600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f4101e71e974f68df5e9730cc223280b41654676bbb052cdcc735c3337e64d2d96000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff16604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a150565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156103cd57600080fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505015801561049c573d6000803e3d6000fd5b508173ffffffffffffffffffffffffffffffffffffffff167f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d5826040518082815260200191505060405180910390a25050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156105bc57600080fd5b600034905061061381600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546106a890919063ffffffff16565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff167f2da466a7b24304f47e87fa2e1e5a81b9831ce54fec19055ce277ca2f39ba42c4826040518082815260200191505060405180910390a25050565b60008082840190508381101515156106bf57600080fd5b809150509291505056fea165627a7a7230582023496572fcf4d9f739516d85468b6dc2a9180fc80fa3971283778e734e0a825c0029", + "sourceMap": "735:1064:39:-;;;418:10:35;407:8;;:21;;;;;;;;;;;;;;;;;;443:28;462:8;;;;;;;;;;;443:28;;;;;;;;;;;;;;;;;;;;;;735:1064:39;;;;;;", + "deployedSourceMap": "735:1064:39:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;922:185:35;;8:9:-1;5:2;;;30:1;27;20:12;5:2;922:185:35;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;922:185:35;;;;;;;;;;;;;;;;;;;;;;1580:217:39;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1580:217:39;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1580:217:39;;;;;;;;;;;;;;;;;;;;;;718:81:35;;8:9:-1;5:2;;;30:1;27;20:12;5:2;718:81:35;;;;;;;;;;;;;;;;;;;;;;;;;;;982:105:39;;8:9:-1;5:2;;;30:1;27;20:12;5:2;982:105:39;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;982:105:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1226:199;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1226:199:39;;;;;;;;;;;;;;;;;;;;;;922:185:35;626:8;;;;;;;;;;;612:22;;:10;:22;;;604:31;;;;;;;;1024:1;1003:23;;:9;:23;;;;995:32;;;;;;;;1048:9;1037:8;;:20;;;;;;;;;;;;;;;;;;1072:28;1091:8;;;;;;;;;;;1072:28;;;;;;;;;;;;;;;;;;;;;;922:185;:::o;1580:217:39:-;626:8:35;;;;;;;;;;;612:22;;:10;:22;;;604:31;;;;;;;;1650:15:39;1668:9;:16;1678:5;1668:16;;;;;;;;;;;;;;;;1650:34;;1714:1;1695:9;:16;1705:5;1695:16;;;;;;;;;;;;;;;:20;;;;1726:5;:14;;:23;1741:7;1726:23;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1726:23:39;1775:5;1765:25;;;1782:7;1765:25;;;;;;;;;;;;;;;;;;645:1:35;1580:217:39;:::o;718:81:35:-;758:7;784:8;;;;;;;;;;;777:15;;718:81;:::o;982:105:39:-;1038:7;1064:9;:16;1074:5;1064:16;;;;;;;;;;;;;;;;1057:23;;982:105;;;:::o;1226:199::-;626:8:35;;;;;;;;;;;612:22;;:10;:22;;;604:31;;;;;;;;1295:14:39;1312:9;1295:26;;1350:28;1371:6;1350:9;:16;1360:5;1350:16;;;;;;;;;;;;;;;;:20;;:28;;;;:::i;:::-;1331:9;:16;1341:5;1331:16;;;;;;;;;;;;;;;:47;;;;1404:5;1394:24;;;1411:6;1394:24;;;;;;;;;;;;;;;;;;645:1:35;1226:199:39;:::o;1431:145:33:-;1489:7;1508:9;1524:1;1520;:5;1508:17;;1548:1;1543;:6;;1535:15;;;;;;;;1568:1;1561:8;;;1431:145;;;;:::o", + "source": "pragma solidity ^0.5.0;\n\nimport \"../../math/SafeMath.sol\";\nimport \"../../ownership/Secondary.sol\";\n\n /**\n * @title Escrow\n * @dev Base escrow contract, holds funds designated for a payee until they\n * withdraw them.\n * @dev Intended usage: This contract (and derived escrow contracts) should be a\n * standalone contract, that only interacts with the contract that instantiated\n * it. That way, it is guaranteed that all Ether will be handled according to\n * the Escrow rules, and there is no need to check for payable functions or\n * transfers in the inheritance tree. The contract that uses the escrow as its\n * payment method should be its primary, and provide public methods redirecting\n * to the escrow's deposit and withdraw.\n */\ncontract Escrow is Secondary {\n using SafeMath for uint256;\n\n event Deposited(address indexed payee, uint256 weiAmount);\n event Withdrawn(address indexed payee, uint256 weiAmount);\n\n mapping(address => uint256) private _deposits;\n\n function depositsOf(address payee) public view returns (uint256) {\n return _deposits[payee];\n }\n\n /**\n * @dev Stores the sent amount as credit to be withdrawn.\n * @param payee The destination address of the funds.\n */\n function deposit(address payee) public onlyPrimary payable {\n uint256 amount = msg.value;\n _deposits[payee] = _deposits[payee].add(amount);\n\n emit Deposited(payee, amount);\n }\n\n /**\n * @dev Withdraw accumulated balance for a payee.\n * @param payee The address whose funds will be withdrawn and transferred to.\n */\n function withdraw(address payable payee) public onlyPrimary {\n uint256 payment = _deposits[payee];\n\n _deposits[payee] = 0;\n\n payee.transfer(payment);\n\n emit Withdrawn(payee, payment);\n }\n}\n", + "sourcePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/payment/escrow/Escrow.sol", + "ast": { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/payment/escrow/Escrow.sol", + "exportedSymbols": { + "Escrow": [ + 4124 + ] + }, + "id": 4125, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 4028, + "literals": [ + "solidity", + "^", + "0.5", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "0:23:39" + }, + { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/math/SafeMath.sol", + "file": "../../math/SafeMath.sol", + "id": 4029, + "nodeType": "ImportDirective", + "scope": 4125, + "sourceUnit": 3483, + "src": "25:33:39", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/ownership/Secondary.sol", + "file": "../../ownership/Secondary.sol", + "id": 4030, + "nodeType": "ImportDirective", + "scope": 4125, + "sourceUnit": 3657, + "src": "59:39:39", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 4031, + "name": "Secondary", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 3656, + "src": "754:9:39", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Secondary_$3656", + "typeString": "contract Secondary" + } + }, + "id": 4032, + "nodeType": "InheritanceSpecifier", + "src": "754:9:39" + } + ], + "contractDependencies": [ + 3656 + ], + "contractKind": "contract", + "documentation": "@title Escrow\n@dev Base escrow contract, holds funds designated for a payee until they\nwithdraw them.\n@dev Intended usage: This contract (and derived escrow contracts) should be a\nstandalone contract, that only interacts with the contract that instantiated\nit. That way, it is guaranteed that all Ether will be handled according to\nthe Escrow rules, and there is no need to check for payable functions or\ntransfers in the inheritance tree. The contract that uses the escrow as its\npayment method should be its primary, and provide public methods redirecting\nto the escrow's deposit and withdraw.", + "fullyImplemented": true, + "id": 4124, + "linearizedBaseContracts": [ + 4124, + 3656 + ], + "name": "Escrow", + "nodeType": "ContractDefinition", + "nodes": [ + { + "id": 4035, + "libraryName": { + "contractScope": null, + "id": 4033, + "name": "SafeMath", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 3482, + "src": "776:8:39", + "typeDescriptions": { + "typeIdentifier": "t_contract$_SafeMath_$3482", + "typeString": "library SafeMath" + } + }, + "nodeType": "UsingForDirective", + "src": "770:27:39", + "typeName": { + "id": 4034, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "789:7:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + { + "anonymous": false, + "documentation": null, + "id": 4041, + "name": "Deposited", + "nodeType": "EventDefinition", + "parameters": { + "id": 4040, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4037, + "indexed": true, + "name": "payee", + "nodeType": "VariableDeclaration", + "scope": 4041, + "src": "819:21:39", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4036, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "819:7:39", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 4039, + "indexed": false, + "name": "weiAmount", + "nodeType": "VariableDeclaration", + "scope": 4041, + "src": "842:17:39", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4038, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "842:7:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "818:42:39" + }, + "src": "803:58:39" + }, + { + "anonymous": false, + "documentation": null, + "id": 4047, + "name": "Withdrawn", + "nodeType": "EventDefinition", + "parameters": { + "id": 4046, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4043, + "indexed": true, + "name": "payee", + "nodeType": "VariableDeclaration", + "scope": 4047, + "src": "882:21:39", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4042, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "882:7:39", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 4045, + "indexed": false, + "name": "weiAmount", + "nodeType": "VariableDeclaration", + "scope": 4047, + "src": "905:17:39", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4044, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "905:7:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "881:42:39" + }, + "src": "866:58:39" + }, + { + "constant": false, + "id": 4051, + "name": "_deposits", + "nodeType": "VariableDeclaration", + "scope": 4124, + "src": "930:45:39", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + }, + "typeName": { + "id": 4050, + "keyType": { + "id": 4048, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "938:7:39", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "930:27:39", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + }, + "valueType": { + "id": 4049, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "949:7:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "value": null, + "visibility": "private" + }, + { + "body": { + "id": 4062, + "nodeType": "Block", + "src": "1047:40:39", + "statements": [ + { + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 4058, + "name": "_deposits", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4051, + "src": "1064:9:39", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 4060, + "indexExpression": { + "argumentTypes": null, + "id": 4059, + "name": "payee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4053, + "src": "1074:5:39", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "1064:16:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 4057, + "id": 4061, + "nodeType": "Return", + "src": "1057:23:39" + } + ] + }, + "documentation": null, + "id": 4063, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "depositsOf", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4054, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4053, + "name": "payee", + "nodeType": "VariableDeclaration", + "scope": 4063, + "src": "1002:13:39", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4052, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1002:7:39", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1001:15:39" + }, + "returnParameters": { + "id": 4057, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4056, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 4063, + "src": "1038:7:39", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4055, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1038:7:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1037:9:39" + }, + "scope": 4124, + "src": "982:105:39", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 4091, + "nodeType": "Block", + "src": "1285:140:39", + "statements": [ + { + "assignments": [ + 4071 + ], + "declarations": [ + { + "constant": false, + "id": 4071, + "name": "amount", + "nodeType": "VariableDeclaration", + "scope": 4091, + "src": "1295:14:39", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4070, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1295:7:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 4074, + "initialValue": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 4072, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6845, + "src": "1312:3:39", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 4073, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "value", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "1312:9:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "1295:26:39" + }, + { + "expression": { + "argumentTypes": null, + "id": 4084, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 4075, + "name": "_deposits", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4051, + "src": "1331:9:39", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 4077, + "indexExpression": { + "argumentTypes": null, + "id": 4076, + "name": "payee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4065, + "src": "1341:5:39", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "1331:16:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 4082, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4071, + "src": "1371:6:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 4078, + "name": "_deposits", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4051, + "src": "1350:9:39", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 4080, + "indexExpression": { + "argumentTypes": null, + "id": 4079, + "name": "payee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4065, + "src": "1360:5:39", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "1350:16:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 4081, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 3461, + "src": "1350:20:39", + "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": 4083, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1350:28:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1331:47:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 4085, + "nodeType": "ExpressionStatement", + "src": "1331:47:39" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 4087, + "name": "payee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4065, + "src": "1404:5:39", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 4088, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4071, + "src": "1411:6:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 4086, + "name": "Deposited", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4041, + "src": "1394:9:39", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 4089, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1394:24:39", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4090, + "nodeType": "EmitStatement", + "src": "1389:29:39" + } + ] + }, + "documentation": "@dev Stores the sent amount as credit to be withdrawn.\n@param payee The destination address of the funds.", + "id": 4092, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": null, + "id": 4068, + "modifierName": { + "argumentTypes": null, + "id": 4067, + "name": "onlyPrimary", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3623, + "src": "1265:11:39", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "1265:11:39" + } + ], + "name": "deposit", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4066, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4065, + "name": "payee", + "nodeType": "VariableDeclaration", + "scope": 4092, + "src": "1243:13:39", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4064, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1243:7:39", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1242:15:39" + }, + "returnParameters": { + "id": 4069, + "nodeType": "ParameterList", + "parameters": [], + "src": "1285:0:39" + }, + "scope": 4124, + "src": "1226:199:39", + "stateMutability": "payable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 4122, + "nodeType": "Block", + "src": "1640:157:39", + "statements": [ + { + "assignments": [ + 4100 + ], + "declarations": [ + { + "constant": false, + "id": 4100, + "name": "payment", + "nodeType": "VariableDeclaration", + "scope": 4122, + "src": "1650:15:39", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4099, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1650:7:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 4104, + "initialValue": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 4101, + "name": "_deposits", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4051, + "src": "1668:9:39", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 4103, + "indexExpression": { + "argumentTypes": null, + "id": 4102, + "name": "payee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4094, + "src": "1678:5:39", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "1668:16:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "1650:34:39" + }, + { + "expression": { + "argumentTypes": null, + "id": 4109, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 4105, + "name": "_deposits", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4051, + "src": "1695:9:39", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 4107, + "indexExpression": { + "argumentTypes": null, + "id": 4106, + "name": "payee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4094, + "src": "1705:5:39", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "1695:16:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "30", + "id": 4108, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1714:1:39", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "1695:20:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 4110, + "nodeType": "ExpressionStatement", + "src": "1695:20:39" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 4114, + "name": "payment", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4100, + "src": "1741:7:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 4111, + "name": "payee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4094, + "src": "1726:5:39", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "id": 4113, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "transfer", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "1726:14:39", + "typeDescriptions": { + "typeIdentifier": "t_function_transfer_nonpayable$_t_uint256_$returns$__$", + "typeString": "function (uint256)" + } + }, + "id": 4115, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1726:23:39", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4116, + "nodeType": "ExpressionStatement", + "src": "1726:23:39" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 4118, + "name": "payee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4094, + "src": "1775:5:39", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 4119, + "name": "payment", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4100, + "src": "1782:7:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 4117, + "name": "Withdrawn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4047, + "src": "1765:9:39", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 4120, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1765:25:39", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4121, + "nodeType": "EmitStatement", + "src": "1760:30:39" + } + ] + }, + "documentation": "@dev Withdraw accumulated balance for a payee.\n@param payee The address whose funds will be withdrawn and transferred to.", + "id": 4123, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": null, + "id": 4097, + "modifierName": { + "argumentTypes": null, + "id": 4096, + "name": "onlyPrimary", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3623, + "src": "1628:11:39", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "1628:11:39" + } + ], + "name": "withdraw", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4095, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4094, + "name": "payee", + "nodeType": "VariableDeclaration", + "scope": 4123, + "src": "1598:21:39", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + "typeName": { + "id": 4093, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1598:15:39", + "stateMutability": "payable", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1597:23:39" + }, + "returnParameters": { + "id": 4098, + "nodeType": "ParameterList", + "parameters": [], + "src": "1640:0:39" + }, + "scope": 4124, + "src": "1580:217:39", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + } + ], + "scope": 4125, + "src": "735:1064:39" + } + ], + "src": "0:1800:39" + }, + "legacyAST": { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/payment/escrow/Escrow.sol", + "exportedSymbols": { + "Escrow": [ + 4124 + ] + }, + "id": 4125, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 4028, + "literals": [ + "solidity", + "^", + "0.5", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "0:23:39" + }, + { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/math/SafeMath.sol", + "file": "../../math/SafeMath.sol", + "id": 4029, + "nodeType": "ImportDirective", + "scope": 4125, + "sourceUnit": 3483, + "src": "25:33:39", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/ownership/Secondary.sol", + "file": "../../ownership/Secondary.sol", + "id": 4030, + "nodeType": "ImportDirective", + "scope": 4125, + "sourceUnit": 3657, + "src": "59:39:39", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 4031, + "name": "Secondary", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 3656, + "src": "754:9:39", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Secondary_$3656", + "typeString": "contract Secondary" + } + }, + "id": 4032, + "nodeType": "InheritanceSpecifier", + "src": "754:9:39" + } + ], + "contractDependencies": [ + 3656 + ], + "contractKind": "contract", + "documentation": "@title Escrow\n@dev Base escrow contract, holds funds designated for a payee until they\nwithdraw them.\n@dev Intended usage: This contract (and derived escrow contracts) should be a\nstandalone contract, that only interacts with the contract that instantiated\nit. That way, it is guaranteed that all Ether will be handled according to\nthe Escrow rules, and there is no need to check for payable functions or\ntransfers in the inheritance tree. The contract that uses the escrow as its\npayment method should be its primary, and provide public methods redirecting\nto the escrow's deposit and withdraw.", + "fullyImplemented": true, + "id": 4124, + "linearizedBaseContracts": [ + 4124, + 3656 + ], + "name": "Escrow", + "nodeType": "ContractDefinition", + "nodes": [ + { + "id": 4035, + "libraryName": { + "contractScope": null, + "id": 4033, + "name": "SafeMath", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 3482, + "src": "776:8:39", + "typeDescriptions": { + "typeIdentifier": "t_contract$_SafeMath_$3482", + "typeString": "library SafeMath" + } + }, + "nodeType": "UsingForDirective", + "src": "770:27:39", + "typeName": { + "id": 4034, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "789:7:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + { + "anonymous": false, + "documentation": null, + "id": 4041, + "name": "Deposited", + "nodeType": "EventDefinition", + "parameters": { + "id": 4040, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4037, + "indexed": true, + "name": "payee", + "nodeType": "VariableDeclaration", + "scope": 4041, + "src": "819:21:39", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4036, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "819:7:39", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 4039, + "indexed": false, + "name": "weiAmount", + "nodeType": "VariableDeclaration", + "scope": 4041, + "src": "842:17:39", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4038, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "842:7:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "818:42:39" + }, + "src": "803:58:39" + }, + { + "anonymous": false, + "documentation": null, + "id": 4047, + "name": "Withdrawn", + "nodeType": "EventDefinition", + "parameters": { + "id": 4046, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4043, + "indexed": true, + "name": "payee", + "nodeType": "VariableDeclaration", + "scope": 4047, + "src": "882:21:39", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4042, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "882:7:39", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 4045, + "indexed": false, + "name": "weiAmount", + "nodeType": "VariableDeclaration", + "scope": 4047, + "src": "905:17:39", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4044, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "905:7:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "881:42:39" + }, + "src": "866:58:39" + }, + { + "constant": false, + "id": 4051, + "name": "_deposits", + "nodeType": "VariableDeclaration", + "scope": 4124, + "src": "930:45:39", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + }, + "typeName": { + "id": 4050, + "keyType": { + "id": 4048, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "938:7:39", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "930:27:39", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + }, + "valueType": { + "id": 4049, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "949:7:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "value": null, + "visibility": "private" + }, + { + "body": { + "id": 4062, + "nodeType": "Block", + "src": "1047:40:39", + "statements": [ + { + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 4058, + "name": "_deposits", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4051, + "src": "1064:9:39", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 4060, + "indexExpression": { + "argumentTypes": null, + "id": 4059, + "name": "payee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4053, + "src": "1074:5:39", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "1064:16:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 4057, + "id": 4061, + "nodeType": "Return", + "src": "1057:23:39" + } + ] + }, + "documentation": null, + "id": 4063, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "depositsOf", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4054, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4053, + "name": "payee", + "nodeType": "VariableDeclaration", + "scope": 4063, + "src": "1002:13:39", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4052, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1002:7:39", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1001:15:39" + }, + "returnParameters": { + "id": 4057, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4056, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 4063, + "src": "1038:7:39", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4055, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1038:7:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1037:9:39" + }, + "scope": 4124, + "src": "982:105:39", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 4091, + "nodeType": "Block", + "src": "1285:140:39", + "statements": [ + { + "assignments": [ + 4071 + ], + "declarations": [ + { + "constant": false, + "id": 4071, + "name": "amount", + "nodeType": "VariableDeclaration", + "scope": 4091, + "src": "1295:14:39", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4070, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1295:7:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 4074, + "initialValue": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 4072, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6845, + "src": "1312:3:39", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 4073, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "value", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "1312:9:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "1295:26:39" + }, + { + "expression": { + "argumentTypes": null, + "id": 4084, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 4075, + "name": "_deposits", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4051, + "src": "1331:9:39", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 4077, + "indexExpression": { + "argumentTypes": null, + "id": 4076, + "name": "payee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4065, + "src": "1341:5:39", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "1331:16:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 4082, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4071, + "src": "1371:6:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 4078, + "name": "_deposits", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4051, + "src": "1350:9:39", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 4080, + "indexExpression": { + "argumentTypes": null, + "id": 4079, + "name": "payee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4065, + "src": "1360:5:39", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "1350:16:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 4081, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 3461, + "src": "1350:20:39", + "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": 4083, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1350:28:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1331:47:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 4085, + "nodeType": "ExpressionStatement", + "src": "1331:47:39" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 4087, + "name": "payee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4065, + "src": "1404:5:39", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 4088, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4071, + "src": "1411:6:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 4086, + "name": "Deposited", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4041, + "src": "1394:9:39", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 4089, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1394:24:39", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4090, + "nodeType": "EmitStatement", + "src": "1389:29:39" + } + ] + }, + "documentation": "@dev Stores the sent amount as credit to be withdrawn.\n@param payee The destination address of the funds.", + "id": 4092, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": null, + "id": 4068, + "modifierName": { + "argumentTypes": null, + "id": 4067, + "name": "onlyPrimary", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3623, + "src": "1265:11:39", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "1265:11:39" + } + ], + "name": "deposit", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4066, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4065, + "name": "payee", + "nodeType": "VariableDeclaration", + "scope": 4092, + "src": "1243:13:39", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4064, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1243:7:39", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1242:15:39" + }, + "returnParameters": { + "id": 4069, + "nodeType": "ParameterList", + "parameters": [], + "src": "1285:0:39" + }, + "scope": 4124, + "src": "1226:199:39", + "stateMutability": "payable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 4122, + "nodeType": "Block", + "src": "1640:157:39", + "statements": [ + { + "assignments": [ + 4100 + ], + "declarations": [ + { + "constant": false, + "id": 4100, + "name": "payment", + "nodeType": "VariableDeclaration", + "scope": 4122, + "src": "1650:15:39", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4099, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1650:7:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 4104, + "initialValue": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 4101, + "name": "_deposits", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4051, + "src": "1668:9:39", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 4103, + "indexExpression": { + "argumentTypes": null, + "id": 4102, + "name": "payee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4094, + "src": "1678:5:39", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "1668:16:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "1650:34:39" + }, + { + "expression": { + "argumentTypes": null, + "id": 4109, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 4105, + "name": "_deposits", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4051, + "src": "1695:9:39", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 4107, + "indexExpression": { + "argumentTypes": null, + "id": 4106, + "name": "payee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4094, + "src": "1705:5:39", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "1695:16:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "30", + "id": 4108, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1714:1:39", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "1695:20:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 4110, + "nodeType": "ExpressionStatement", + "src": "1695:20:39" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 4114, + "name": "payment", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4100, + "src": "1741:7:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 4111, + "name": "payee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4094, + "src": "1726:5:39", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "id": 4113, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "transfer", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "1726:14:39", + "typeDescriptions": { + "typeIdentifier": "t_function_transfer_nonpayable$_t_uint256_$returns$__$", + "typeString": "function (uint256)" + } + }, + "id": 4115, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1726:23:39", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4116, + "nodeType": "ExpressionStatement", + "src": "1726:23:39" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 4118, + "name": "payee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4094, + "src": "1775:5:39", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 4119, + "name": "payment", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4100, + "src": "1782:7:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 4117, + "name": "Withdrawn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4047, + "src": "1765:9:39", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 4120, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1765:25:39", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4121, + "nodeType": "EmitStatement", + "src": "1760:30:39" + } + ] + }, + "documentation": "@dev Withdraw accumulated balance for a payee.\n@param payee The address whose funds will be withdrawn and transferred to.", + "id": 4123, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": null, + "id": 4097, + "modifierName": { + "argumentTypes": null, + "id": 4096, + "name": "onlyPrimary", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3623, + "src": "1628:11:39", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "1628:11:39" + } + ], + "name": "withdraw", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4095, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4094, + "name": "payee", + "nodeType": "VariableDeclaration", + "scope": 4123, + "src": "1598:21:39", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + "typeName": { + "id": 4093, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1598:15:39", + "stateMutability": "payable", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1597:23:39" + }, + "returnParameters": { + "id": 4098, + "nodeType": "ParameterList", + "parameters": [], + "src": "1640:0:39" + }, + "scope": 4124, + "src": "1580:217:39", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + } + ], + "scope": 4125, + "src": "735:1064:39" + } + ], + "src": "0:1800:39" + }, + "compiler": { + "name": "solc", + "version": "0.5.0+commit.1d4f565a.Emscripten.clang" + }, + "networks": {}, + "schemaVersion": "3.0.0", + "updatedAt": "2019-01-04T21:44:02.888Z", + "devdoc": { + "details": "Base escrow contract, holds funds designated for a payee until they withdraw them.Intended usage: This contract (and derived escrow contracts) should be a standalone contract, that only interacts with the contract that instantiated it. That way, it is guaranteed that all Ether will be handled according to the Escrow rules, and there is no need to check for payable functions or transfers in the inheritance tree. The contract that uses the escrow as its payment method should be its primary, and provide public methods redirecting to the escrow's deposit and withdraw.", + "methods": { + "deposit(address)": { + "details": "Stores the sent amount as credit to be withdrawn.", + "params": { + "payee": "The destination address of the funds." + } + }, + "primary()": { + "return": "the address of the primary." + }, + "transferPrimary(address)": { + "details": "Transfers contract to a new primary.", + "params": { + "recipient": "The address of new primary." + } + }, + "withdraw(address)": { + "details": "Withdraw accumulated balance for a payee.", + "params": { + "payee": "The address whose funds will be withdrawn and transferred to." + } + } + }, + "title": "Escrow" + }, + "userdoc": { + "methods": {} + } +} \ No newline at end of file diff --git a/node_modules/openzeppelin-solidity/build/contracts/FinalizableCrowdsale.json b/node_modules/openzeppelin-solidity/build/contracts/FinalizableCrowdsale.json new file mode 100644 index 0000000..fdd41b2 --- /dev/null +++ b/node_modules/openzeppelin-solidity/build/contracts/FinalizableCrowdsale.json @@ -0,0 +1,1561 @@ +{ + "contractName": "FinalizableCrowdsale", + "abi": [ + { + "constant": true, + "inputs": [], + "name": "hasClosed", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "rate", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "weiRaised", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "isOpen", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "closingTime", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "wallet", + "outputs": [ + { + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "openingTime", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "beneficiary", + "type": "address" + } + ], + "name": "buyTokens", + "outputs": [], + "payable": true, + "stateMutability": "payable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "token", + "outputs": [ + { + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "payable": true, + "stateMutability": "payable", + "type": "fallback" + }, + { + "anonymous": false, + "inputs": [], + "name": "CrowdsaleFinalized", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "purchaser", + "type": "address" + }, + { + "indexed": true, + "name": "beneficiary", + "type": "address" + }, + { + "indexed": false, + "name": "value", + "type": "uint256" + }, + { + "indexed": false, + "name": "amount", + "type": "uint256" + } + ], + "name": "TokensPurchased", + "type": "event" + }, + { + "constant": true, + "inputs": [], + "name": "finalized", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [], + "name": "finalize", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "sourceMap": "", + "deployedSourceMap": "", + "source": "pragma solidity ^0.5.0;\n\nimport \"../../math/SafeMath.sol\";\nimport \"../validation/TimedCrowdsale.sol\";\n\n/**\n * @title FinalizableCrowdsale\n * @dev Extension of Crowdsale with a one-off finalization action, where one\n * can do extra work after finishing.\n */\ncontract FinalizableCrowdsale is TimedCrowdsale {\n using SafeMath for uint256;\n\n bool private _finalized;\n\n event CrowdsaleFinalized();\n\n constructor () internal {\n _finalized = false;\n }\n\n /**\n * @return true if the crowdsale is finalized, false otherwise.\n */\n function finalized() public view returns (bool) {\n return _finalized;\n }\n\n /**\n * @dev Must be called after crowdsale ends, to do some extra finalization\n * work. Calls the contract's finalization function.\n */\n function finalize() public {\n require(!_finalized);\n require(hasClosed());\n\n _finalized = true;\n\n _finalization();\n emit CrowdsaleFinalized();\n }\n\n /**\n * @dev Can be overridden to add finalization logic. The overriding function\n * should call super._finalization() to ensure the chain of finalization is\n * executed entirely.\n */\n function _finalization() internal {\n // solhint-disable-previous-line no-empty-blocks\n }\n}\n", + "sourcePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/crowdsale/distribution/FinalizableCrowdsale.sol", + "ast": { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/crowdsale/distribution/FinalizableCrowdsale.sol", + "exportedSymbols": { + "FinalizableCrowdsale": [ + 1042 + ] + }, + "id": 1043, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 986, + "literals": [ + "solidity", + "^", + "0.5", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "0:23:8" + }, + { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/math/SafeMath.sol", + "file": "../../math/SafeMath.sol", + "id": 987, + "nodeType": "ImportDirective", + "scope": 1043, + "sourceUnit": 3483, + "src": "25:33:8", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/crowdsale/validation/TimedCrowdsale.sol", + "file": "../validation/TimedCrowdsale.sol", + "id": 988, + "nodeType": "ImportDirective", + "scope": 1043, + "sourceUnit": 1848, + "src": "59:42:8", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 989, + "name": "TimedCrowdsale", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 1847, + "src": "290:14:8", + "typeDescriptions": { + "typeIdentifier": "t_contract$_TimedCrowdsale_$1847", + "typeString": "contract TimedCrowdsale" + } + }, + "id": 990, + "nodeType": "InheritanceSpecifier", + "src": "290:14:8" + } + ], + "contractDependencies": [ + 984, + 1847, + 6830 + ], + "contractKind": "contract", + "documentation": "@title FinalizableCrowdsale\n@dev Extension of Crowdsale with a one-off finalization action, where one\ncan do extra work after finishing.", + "fullyImplemented": false, + "id": 1042, + "linearizedBaseContracts": [ + 1042, + 1847, + 984, + 6830 + ], + "name": "FinalizableCrowdsale", + "nodeType": "ContractDefinition", + "nodes": [ + { + "id": 993, + "libraryName": { + "contractScope": null, + "id": 991, + "name": "SafeMath", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 3482, + "src": "317:8:8", + "typeDescriptions": { + "typeIdentifier": "t_contract$_SafeMath_$3482", + "typeString": "library SafeMath" + } + }, + "nodeType": "UsingForDirective", + "src": "311:27:8", + "typeName": { + "id": 992, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "330:7:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + { + "constant": false, + "id": 995, + "name": "_finalized", + "nodeType": "VariableDeclaration", + "scope": 1042, + "src": "344:23:8", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 994, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "344:4:8", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "private" + }, + { + "anonymous": false, + "documentation": null, + "id": 997, + "name": "CrowdsaleFinalized", + "nodeType": "EventDefinition", + "parameters": { + "id": 996, + "nodeType": "ParameterList", + "parameters": [], + "src": "398:2:8" + }, + "src": "374:27:8" + }, + { + "body": { + "id": 1004, + "nodeType": "Block", + "src": "431:35:8", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 1002, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 1000, + "name": "_finalized", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 995, + "src": "441:10:8", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "66616c7365", + "id": 1001, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "454:5:8", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "src": "441:18:8", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1003, + "nodeType": "ExpressionStatement", + "src": "441:18:8" + } + ] + }, + "documentation": null, + "id": 1005, + "implemented": true, + "kind": "constructor", + "modifiers": [], + "name": "", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 998, + "nodeType": "ParameterList", + "parameters": [], + "src": "419:2:8" + }, + "returnParameters": { + "id": 999, + "nodeType": "ParameterList", + "parameters": [], + "src": "431:0:8" + }, + "scope": 1042, + "src": "407:59:8", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 1012, + "nodeType": "Block", + "src": "604:34:8", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 1010, + "name": "_finalized", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 995, + "src": "621:10:8", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 1009, + "id": 1011, + "nodeType": "Return", + "src": "614:17:8" + } + ] + }, + "documentation": "@return true if the crowdsale is finalized, false otherwise.", + "id": 1013, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "finalized", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1006, + "nodeType": "ParameterList", + "parameters": [], + "src": "574:2:8" + }, + "returnParameters": { + "id": 1009, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1008, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 1013, + "src": "598:4:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 1007, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "598:4:8", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "597:6:8" + }, + "scope": 1042, + "src": "556:82:8", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 1036, + "nodeType": "Block", + "src": "823:156:8", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1018, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "841:11:8", + "subExpression": { + "argumentTypes": null, + "id": 1017, + "name": "_finalized", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 995, + "src": "842:10:8", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 1016, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6848, + 6849 + ], + "referencedDeclaration": 6848, + "src": "833:7:8", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 1019, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "833:20:8", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1020, + "nodeType": "ExpressionStatement", + "src": "833:20:8" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 1022, + "name": "hasClosed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1829, + "src": "871:9:8", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_bool_$", + "typeString": "function () view returns (bool)" + } + }, + "id": 1023, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "871:11:8", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 1021, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6848, + 6849 + ], + "referencedDeclaration": 6848, + "src": "863:7:8", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 1024, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "863:20:8", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1025, + "nodeType": "ExpressionStatement", + "src": "863:20:8" + }, + { + "expression": { + "argumentTypes": null, + "id": 1028, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 1026, + "name": "_finalized", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 995, + "src": "894:10:8", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 1027, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "907:4:8", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "src": "894:17:8", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1029, + "nodeType": "ExpressionStatement", + "src": "894:17:8" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 1030, + "name": "_finalization", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1041, + "src": "922:13:8", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", + "typeString": "function ()" + } + }, + "id": 1031, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "922:15:8", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1032, + "nodeType": "ExpressionStatement", + "src": "922:15:8" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 1033, + "name": "CrowdsaleFinalized", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 997, + "src": "952:18:8", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$__$returns$__$", + "typeString": "function ()" + } + }, + "id": 1034, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "952:20:8", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1035, + "nodeType": "EmitStatement", + "src": "947:25:8" + } + ] + }, + "documentation": "@dev Must be called after crowdsale ends, to do some extra finalization\nwork. Calls the contract's finalization function.", + "id": 1037, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "finalize", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1014, + "nodeType": "ParameterList", + "parameters": [], + "src": "813:2:8" + }, + "returnParameters": { + "id": 1015, + "nodeType": "ParameterList", + "parameters": [], + "src": "823:0:8" + }, + "scope": 1042, + "src": "796:183:8", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 1040, + "nodeType": "Block", + "src": "1222:64:8", + "statements": [] + }, + "documentation": "@dev Can be overridden to add finalization logic. The overriding function\nshould call super._finalization() to ensure the chain of finalization is\nexecuted entirely.", + "id": 1041, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_finalization", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1038, + "nodeType": "ParameterList", + "parameters": [], + "src": "1210:2:8" + }, + "returnParameters": { + "id": 1039, + "nodeType": "ParameterList", + "parameters": [], + "src": "1222:0:8" + }, + "scope": 1042, + "src": "1188:98:8", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + } + ], + "scope": 1043, + "src": "257:1031:8" + } + ], + "src": "0:1289:8" + }, + "legacyAST": { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/crowdsale/distribution/FinalizableCrowdsale.sol", + "exportedSymbols": { + "FinalizableCrowdsale": [ + 1042 + ] + }, + "id": 1043, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 986, + "literals": [ + "solidity", + "^", + "0.5", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "0:23:8" + }, + { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/math/SafeMath.sol", + "file": "../../math/SafeMath.sol", + "id": 987, + "nodeType": "ImportDirective", + "scope": 1043, + "sourceUnit": 3483, + "src": "25:33:8", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/crowdsale/validation/TimedCrowdsale.sol", + "file": "../validation/TimedCrowdsale.sol", + "id": 988, + "nodeType": "ImportDirective", + "scope": 1043, + "sourceUnit": 1848, + "src": "59:42:8", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 989, + "name": "TimedCrowdsale", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 1847, + "src": "290:14:8", + "typeDescriptions": { + "typeIdentifier": "t_contract$_TimedCrowdsale_$1847", + "typeString": "contract TimedCrowdsale" + } + }, + "id": 990, + "nodeType": "InheritanceSpecifier", + "src": "290:14:8" + } + ], + "contractDependencies": [ + 984, + 1847, + 6830 + ], + "contractKind": "contract", + "documentation": "@title FinalizableCrowdsale\n@dev Extension of Crowdsale with a one-off finalization action, where one\ncan do extra work after finishing.", + "fullyImplemented": false, + "id": 1042, + "linearizedBaseContracts": [ + 1042, + 1847, + 984, + 6830 + ], + "name": "FinalizableCrowdsale", + "nodeType": "ContractDefinition", + "nodes": [ + { + "id": 993, + "libraryName": { + "contractScope": null, + "id": 991, + "name": "SafeMath", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 3482, + "src": "317:8:8", + "typeDescriptions": { + "typeIdentifier": "t_contract$_SafeMath_$3482", + "typeString": "library SafeMath" + } + }, + "nodeType": "UsingForDirective", + "src": "311:27:8", + "typeName": { + "id": 992, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "330:7:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + { + "constant": false, + "id": 995, + "name": "_finalized", + "nodeType": "VariableDeclaration", + "scope": 1042, + "src": "344:23:8", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 994, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "344:4:8", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "private" + }, + { + "anonymous": false, + "documentation": null, + "id": 997, + "name": "CrowdsaleFinalized", + "nodeType": "EventDefinition", + "parameters": { + "id": 996, + "nodeType": "ParameterList", + "parameters": [], + "src": "398:2:8" + }, + "src": "374:27:8" + }, + { + "body": { + "id": 1004, + "nodeType": "Block", + "src": "431:35:8", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 1002, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 1000, + "name": "_finalized", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 995, + "src": "441:10:8", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "66616c7365", + "id": 1001, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "454:5:8", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "src": "441:18:8", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1003, + "nodeType": "ExpressionStatement", + "src": "441:18:8" + } + ] + }, + "documentation": null, + "id": 1005, + "implemented": true, + "kind": "constructor", + "modifiers": [], + "name": "", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 998, + "nodeType": "ParameterList", + "parameters": [], + "src": "419:2:8" + }, + "returnParameters": { + "id": 999, + "nodeType": "ParameterList", + "parameters": [], + "src": "431:0:8" + }, + "scope": 1042, + "src": "407:59:8", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 1012, + "nodeType": "Block", + "src": "604:34:8", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 1010, + "name": "_finalized", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 995, + "src": "621:10:8", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 1009, + "id": 1011, + "nodeType": "Return", + "src": "614:17:8" + } + ] + }, + "documentation": "@return true if the crowdsale is finalized, false otherwise.", + "id": 1013, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "finalized", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1006, + "nodeType": "ParameterList", + "parameters": [], + "src": "574:2:8" + }, + "returnParameters": { + "id": 1009, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1008, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 1013, + "src": "598:4:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 1007, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "598:4:8", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "597:6:8" + }, + "scope": 1042, + "src": "556:82:8", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 1036, + "nodeType": "Block", + "src": "823:156:8", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1018, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "841:11:8", + "subExpression": { + "argumentTypes": null, + "id": 1017, + "name": "_finalized", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 995, + "src": "842:10:8", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 1016, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6848, + 6849 + ], + "referencedDeclaration": 6848, + "src": "833:7:8", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 1019, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "833:20:8", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1020, + "nodeType": "ExpressionStatement", + "src": "833:20:8" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 1022, + "name": "hasClosed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1829, + "src": "871:9:8", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_bool_$", + "typeString": "function () view returns (bool)" + } + }, + "id": 1023, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "871:11:8", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 1021, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6848, + 6849 + ], + "referencedDeclaration": 6848, + "src": "863:7:8", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 1024, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "863:20:8", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1025, + "nodeType": "ExpressionStatement", + "src": "863:20:8" + }, + { + "expression": { + "argumentTypes": null, + "id": 1028, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 1026, + "name": "_finalized", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 995, + "src": "894:10:8", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 1027, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "907:4:8", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "src": "894:17:8", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1029, + "nodeType": "ExpressionStatement", + "src": "894:17:8" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 1030, + "name": "_finalization", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1041, + "src": "922:13:8", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", + "typeString": "function ()" + } + }, + "id": 1031, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "922:15:8", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1032, + "nodeType": "ExpressionStatement", + "src": "922:15:8" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 1033, + "name": "CrowdsaleFinalized", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 997, + "src": "952:18:8", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$__$returns$__$", + "typeString": "function ()" + } + }, + "id": 1034, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "952:20:8", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1035, + "nodeType": "EmitStatement", + "src": "947:25:8" + } + ] + }, + "documentation": "@dev Must be called after crowdsale ends, to do some extra finalization\nwork. Calls the contract's finalization function.", + "id": 1037, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "finalize", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1014, + "nodeType": "ParameterList", + "parameters": [], + "src": "813:2:8" + }, + "returnParameters": { + "id": 1015, + "nodeType": "ParameterList", + "parameters": [], + "src": "823:0:8" + }, + "scope": 1042, + "src": "796:183:8", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 1040, + "nodeType": "Block", + "src": "1222:64:8", + "statements": [] + }, + "documentation": "@dev Can be overridden to add finalization logic. The overriding function\nshould call super._finalization() to ensure the chain of finalization is\nexecuted entirely.", + "id": 1041, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_finalization", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1038, + "nodeType": "ParameterList", + "parameters": [], + "src": "1210:2:8" + }, + "returnParameters": { + "id": 1039, + "nodeType": "ParameterList", + "parameters": [], + "src": "1222:0:8" + }, + "scope": 1042, + "src": "1188:98:8", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + } + ], + "scope": 1043, + "src": "257:1031:8" + } + ], + "src": "0:1289:8" + }, + "compiler": { + "name": "solc", + "version": "0.5.0+commit.1d4f565a.Emscripten.clang" + }, + "networks": {}, + "schemaVersion": "3.0.0", + "updatedAt": "2019-01-04T21:44:02.871Z", + "devdoc": { + "details": "Extension of Crowdsale with a one-off finalization action, where one can do extra work after finishing.", + "methods": { + "buyTokens(address)": { + "details": "low level token purchase ***DO NOT OVERRIDE*** This function has a non-reentrancy guard, so it shouldn't be called by another `nonReentrant` function.", + "params": { + "beneficiary": "Recipient of the token purchase" + } + }, + "closingTime()": { + "return": "the crowdsale closing time." + }, + "finalize()": { + "details": "Must be called after crowdsale ends, to do some extra finalization work. Calls the contract's finalization function." + }, + "finalized()": { + "return": "true if the crowdsale is finalized, false otherwise." + }, + "hasClosed()": { + "details": "Checks whether the period in which the crowdsale is open has already elapsed.", + "return": "Whether crowdsale period has elapsed" + }, + "isOpen()": { + "return": "true if the crowdsale is open, false otherwise." + }, + "openingTime()": { + "return": "the crowdsale opening time." + }, + "rate()": { + "return": "the number of token units a buyer gets per wei." + }, + "token()": { + "return": "the token being sold." + }, + "wallet()": { + "return": "the address where funds are collected." + }, + "weiRaised()": { + "return": "the amount of wei raised." + } + }, + "title": "FinalizableCrowdsale" + }, + "userdoc": { + "methods": {} + } +} \ No newline at end of file diff --git a/node_modules/openzeppelin-solidity/build/contracts/IERC165.json b/node_modules/openzeppelin-solidity/build/contracts/IERC165.json new file mode 100644 index 0000000..f1fd35e --- /dev/null +++ b/node_modules/openzeppelin-solidity/build/contracts/IERC165.json @@ -0,0 +1,300 @@ +{ + "contractName": "IERC165", + "abi": [ + { + "constant": true, + "inputs": [ + { + "name": "interfaceId", + "type": "bytes4" + } + ], + "name": "supportsInterface", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "sourceMap": "", + "deployedSourceMap": "", + "source": "pragma solidity ^0.5.0;\n\n/**\n * @title IERC165\n * @dev https://github.com/ethereum/EIPs/blob/master/EIPS/eip-165.md\n */\ninterface IERC165 {\n /**\n * @notice Query if a contract implements an interface\n * @param interfaceId The interface identifier, as specified in ERC-165\n * @dev Interface identification is specified in ERC-165. This function\n * uses less than 30,000 gas.\n */\n function supportsInterface(bytes4 interfaceId) external view returns (bool);\n}\n", + "sourcePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/introspection/IERC165.sol", + "ast": { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/introspection/IERC165.sol", + "exportedSymbols": { + "IERC165": [ + 3202 + ] + }, + "id": 3203, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 3194, + "literals": [ + "solidity", + "^", + "0.5", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "0:23:30" + }, + { + "baseContracts": [], + "contractDependencies": [], + "contractKind": "interface", + "documentation": "@title IERC165\n@dev https://github.com/ethereum/EIPs/blob/master/EIPS/eip-165.md", + "fullyImplemented": false, + "id": 3202, + "linearizedBaseContracts": [ + 3202 + ], + "name": "IERC165", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": null, + "documentation": "@notice Query if a contract implements an interface\n@param interfaceId The interface identifier, as specified in ERC-165\n@dev Interface identification is specified in ERC-165. This function\nuses less than 30,000 gas.", + "id": 3201, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "supportsInterface", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3197, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3196, + "name": "interfaceId", + "nodeType": "VariableDeclaration", + "scope": 3201, + "src": "432:18:30", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "typeName": { + "id": 3195, + "name": "bytes4", + "nodeType": "ElementaryTypeName", + "src": "432:6:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "431:20:30" + }, + "returnParameters": { + "id": 3200, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3199, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 3201, + "src": "475:4:30", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 3198, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "475:4:30", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "474:6:30" + }, + "scope": 3202, + "src": "405:76:30", + "stateMutability": "view", + "superFunction": null, + "visibility": "external" + } + ], + "scope": 3203, + "src": "120:363:30" + } + ], + "src": "0:484:30" + }, + "legacyAST": { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/introspection/IERC165.sol", + "exportedSymbols": { + "IERC165": [ + 3202 + ] + }, + "id": 3203, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 3194, + "literals": [ + "solidity", + "^", + "0.5", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "0:23:30" + }, + { + "baseContracts": [], + "contractDependencies": [], + "contractKind": "interface", + "documentation": "@title IERC165\n@dev https://github.com/ethereum/EIPs/blob/master/EIPS/eip-165.md", + "fullyImplemented": false, + "id": 3202, + "linearizedBaseContracts": [ + 3202 + ], + "name": "IERC165", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": null, + "documentation": "@notice Query if a contract implements an interface\n@param interfaceId The interface identifier, as specified in ERC-165\n@dev Interface identification is specified in ERC-165. This function\nuses less than 30,000 gas.", + "id": 3201, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "supportsInterface", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3197, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3196, + "name": "interfaceId", + "nodeType": "VariableDeclaration", + "scope": 3201, + "src": "432:18:30", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "typeName": { + "id": 3195, + "name": "bytes4", + "nodeType": "ElementaryTypeName", + "src": "432:6:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "431:20:30" + }, + "returnParameters": { + "id": 3200, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3199, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 3201, + "src": "475:4:30", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 3198, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "475:4:30", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "474:6:30" + }, + "scope": 3202, + "src": "405:76:30", + "stateMutability": "view", + "superFunction": null, + "visibility": "external" + } + ], + "scope": 3203, + "src": "120:363:30" + } + ], + "src": "0:484:30" + }, + "compiler": { + "name": "solc", + "version": "0.5.0+commit.1d4f565a.Emscripten.clang" + }, + "networks": {}, + "schemaVersion": "3.0.0", + "updatedAt": "2019-01-04T21:44:02.885Z", + "devdoc": { + "details": "https://github.com/ethereum/EIPs/blob/master/EIPS/eip-165.md", + "methods": { + "supportsInterface(bytes4)": { + "details": "Interface identification is specified in ERC-165. This function uses less than 30,000 gas.", + "params": { + "interfaceId": "The interface identifier, as specified in ERC-165" + } + } + }, + "title": "IERC165" + }, + "userdoc": { + "methods": { + "supportsInterface(bytes4)": { + "notice": "Query if a contract implements an interface" + } + } + } +} \ No newline at end of file diff --git a/node_modules/openzeppelin-solidity/build/contracts/IERC20.json b/node_modules/openzeppelin-solidity/build/contracts/IERC20.json new file mode 100644 index 0000000..cde6c18 --- /dev/null +++ b/node_modules/openzeppelin-solidity/build/contracts/IERC20.json @@ -0,0 +1,1865 @@ +{ + "contractName": "IERC20", + "abi": [ + { + "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" + }, + { + "constant": false, + "inputs": [ + { + "name": "to", + "type": "address" + }, + { + "name": "value", + "type": "uint256" + } + ], + "name": "transfer", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "spender", + "type": "address" + }, + { + "name": "value", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "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": "totalSupply", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "who", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "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" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "sourceMap": "", + "deployedSourceMap": "", + "source": "pragma solidity ^0.5.0;\n\n/**\n * @title ERC20 interface\n * @dev see https://github.com/ethereum/EIPs/issues/20\n */\ninterface IERC20 {\n function transfer(address to, uint256 value) external returns (bool);\n\n function approve(address spender, uint256 value) external returns (bool);\n\n function transferFrom(address from, address to, uint256 value) external returns (bool);\n\n function totalSupply() external view returns (uint256);\n\n function balanceOf(address who) external view returns (uint256);\n\n function allowance(address owner, address spender) external view returns (uint256);\n\n event Transfer(address indexed from, address indexed to, uint256 value);\n\n event Approval(address indexed owner, address indexed spender, uint256 value);\n}\n", + "sourcePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/token/ERC20/IERC20.sol", + "ast": { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/token/ERC20/IERC20.sol", + "exportedSymbols": { + "IERC20": [ + 5052 + ] + }, + "id": 5053, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 4985, + "literals": [ + "solidity", + "^", + "0.5", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "0:23:47" + }, + { + "baseContracts": [], + "contractDependencies": [], + "contractKind": "interface", + "documentation": "@title ERC20 interface\n@dev see https://github.com/ethereum/EIPs/issues/20", + "fullyImplemented": false, + "id": 5052, + "linearizedBaseContracts": [ + 5052 + ], + "name": "IERC20", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": null, + "documentation": null, + "id": 4994, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "transfer", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4990, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4987, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 4994, + "src": "155:10:47", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4986, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "155:7:47", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 4989, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 4994, + "src": "167:13:47", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4988, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "167:7:47", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "154:27:47" + }, + "returnParameters": { + "id": 4993, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4992, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 4994, + "src": "200:4:47", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 4991, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "200:4:47", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "199:6:47" + }, + "scope": 5052, + "src": "137:69:47", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "external" + }, + { + "body": null, + "documentation": null, + "id": 5003, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "approve", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4999, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4996, + "name": "spender", + "nodeType": "VariableDeclaration", + "scope": 5003, + "src": "229:15:47", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4995, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "229:7:47", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 4998, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 5003, + "src": "246:13:47", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4997, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "246:7:47", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "228:32:47" + }, + "returnParameters": { + "id": 5002, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5001, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 5003, + "src": "279:4:47", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 5000, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "279:4:47", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "278:6:47" + }, + "scope": 5052, + "src": "212:73:47", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "external" + }, + { + "body": null, + "documentation": null, + "id": 5014, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "transferFrom", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5010, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5005, + "name": "from", + "nodeType": "VariableDeclaration", + "scope": 5014, + "src": "313:12:47", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5004, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "313:7:47", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5007, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 5014, + "src": "327:10:47", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5006, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "327:7:47", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5009, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 5014, + "src": "339:13:47", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5008, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "339:7:47", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "312:41:47" + }, + "returnParameters": { + "id": 5013, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5012, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 5014, + "src": "372:4:47", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 5011, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "372:4:47", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "371:6:47" + }, + "scope": 5052, + "src": "291:87:47", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "external" + }, + { + "body": null, + "documentation": null, + "id": 5019, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "totalSupply", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5015, + "nodeType": "ParameterList", + "parameters": [], + "src": "404:2:47" + }, + "returnParameters": { + "id": 5018, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5017, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 5019, + "src": "430:7:47", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5016, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "430:7:47", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "429:9:47" + }, + "scope": 5052, + "src": "384:55:47", + "stateMutability": "view", + "superFunction": null, + "visibility": "external" + }, + { + "body": null, + "documentation": null, + "id": 5026, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "balanceOf", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5022, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5021, + "name": "who", + "nodeType": "VariableDeclaration", + "scope": 5026, + "src": "464:11:47", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5020, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "464:7:47", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "463:13:47" + }, + "returnParameters": { + "id": 5025, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5024, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 5026, + "src": "500:7:47", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5023, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "500:7:47", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "499:9:47" + }, + "scope": 5052, + "src": "445:64:47", + "stateMutability": "view", + "superFunction": null, + "visibility": "external" + }, + { + "body": null, + "documentation": null, + "id": 5035, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "allowance", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5031, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5028, + "name": "owner", + "nodeType": "VariableDeclaration", + "scope": 5035, + "src": "534:13:47", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5027, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "534:7:47", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5030, + "name": "spender", + "nodeType": "VariableDeclaration", + "scope": 5035, + "src": "549:15:47", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5029, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "549:7:47", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "533:32:47" + }, + "returnParameters": { + "id": 5034, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5033, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 5035, + "src": "589:7:47", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5032, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "589:7:47", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "588:9:47" + }, + "scope": 5052, + "src": "515:83:47", + "stateMutability": "view", + "superFunction": null, + "visibility": "external" + }, + { + "anonymous": false, + "documentation": null, + "id": 5043, + "name": "Transfer", + "nodeType": "EventDefinition", + "parameters": { + "id": 5042, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5037, + "indexed": true, + "name": "from", + "nodeType": "VariableDeclaration", + "scope": 5043, + "src": "619:20:47", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5036, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "619:7:47", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5039, + "indexed": true, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 5043, + "src": "641:18:47", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5038, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "641:7:47", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5041, + "indexed": false, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 5043, + "src": "661:13:47", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5040, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "661:7:47", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "618:57:47" + }, + "src": "604:72:47" + }, + { + "anonymous": false, + "documentation": null, + "id": 5051, + "name": "Approval", + "nodeType": "EventDefinition", + "parameters": { + "id": 5050, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5045, + "indexed": true, + "name": "owner", + "nodeType": "VariableDeclaration", + "scope": 5051, + "src": "697:21:47", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5044, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "697:7:47", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5047, + "indexed": true, + "name": "spender", + "nodeType": "VariableDeclaration", + "scope": 5051, + "src": "720:23:47", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5046, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "720:7:47", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5049, + "indexed": false, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 5051, + "src": "745:13:47", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5048, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "745:7:47", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "696:63:47" + }, + "src": "682:78:47" + } + ], + "scope": 5053, + "src": "114:648:47" + } + ], + "src": "0:763:47" + }, + "legacyAST": { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/token/ERC20/IERC20.sol", + "exportedSymbols": { + "IERC20": [ + 5052 + ] + }, + "id": 5053, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 4985, + "literals": [ + "solidity", + "^", + "0.5", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "0:23:47" + }, + { + "baseContracts": [], + "contractDependencies": [], + "contractKind": "interface", + "documentation": "@title ERC20 interface\n@dev see https://github.com/ethereum/EIPs/issues/20", + "fullyImplemented": false, + "id": 5052, + "linearizedBaseContracts": [ + 5052 + ], + "name": "IERC20", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": null, + "documentation": null, + "id": 4994, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "transfer", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4990, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4987, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 4994, + "src": "155:10:47", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4986, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "155:7:47", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 4989, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 4994, + "src": "167:13:47", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4988, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "167:7:47", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "154:27:47" + }, + "returnParameters": { + "id": 4993, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4992, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 4994, + "src": "200:4:47", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 4991, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "200:4:47", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "199:6:47" + }, + "scope": 5052, + "src": "137:69:47", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "external" + }, + { + "body": null, + "documentation": null, + "id": 5003, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "approve", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4999, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4996, + "name": "spender", + "nodeType": "VariableDeclaration", + "scope": 5003, + "src": "229:15:47", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4995, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "229:7:47", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 4998, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 5003, + "src": "246:13:47", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4997, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "246:7:47", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "228:32:47" + }, + "returnParameters": { + "id": 5002, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5001, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 5003, + "src": "279:4:47", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 5000, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "279:4:47", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "278:6:47" + }, + "scope": 5052, + "src": "212:73:47", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "external" + }, + { + "body": null, + "documentation": null, + "id": 5014, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "transferFrom", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5010, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5005, + "name": "from", + "nodeType": "VariableDeclaration", + "scope": 5014, + "src": "313:12:47", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5004, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "313:7:47", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5007, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 5014, + "src": "327:10:47", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5006, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "327:7:47", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5009, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 5014, + "src": "339:13:47", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5008, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "339:7:47", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "312:41:47" + }, + "returnParameters": { + "id": 5013, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5012, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 5014, + "src": "372:4:47", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 5011, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "372:4:47", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "371:6:47" + }, + "scope": 5052, + "src": "291:87:47", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "external" + }, + { + "body": null, + "documentation": null, + "id": 5019, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "totalSupply", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5015, + "nodeType": "ParameterList", + "parameters": [], + "src": "404:2:47" + }, + "returnParameters": { + "id": 5018, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5017, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 5019, + "src": "430:7:47", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5016, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "430:7:47", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "429:9:47" + }, + "scope": 5052, + "src": "384:55:47", + "stateMutability": "view", + "superFunction": null, + "visibility": "external" + }, + { + "body": null, + "documentation": null, + "id": 5026, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "balanceOf", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5022, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5021, + "name": "who", + "nodeType": "VariableDeclaration", + "scope": 5026, + "src": "464:11:47", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5020, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "464:7:47", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "463:13:47" + }, + "returnParameters": { + "id": 5025, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5024, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 5026, + "src": "500:7:47", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5023, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "500:7:47", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "499:9:47" + }, + "scope": 5052, + "src": "445:64:47", + "stateMutability": "view", + "superFunction": null, + "visibility": "external" + }, + { + "body": null, + "documentation": null, + "id": 5035, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "allowance", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5031, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5028, + "name": "owner", + "nodeType": "VariableDeclaration", + "scope": 5035, + "src": "534:13:47", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5027, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "534:7:47", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5030, + "name": "spender", + "nodeType": "VariableDeclaration", + "scope": 5035, + "src": "549:15:47", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5029, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "549:7:47", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "533:32:47" + }, + "returnParameters": { + "id": 5034, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5033, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 5035, + "src": "589:7:47", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5032, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "589:7:47", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "588:9:47" + }, + "scope": 5052, + "src": "515:83:47", + "stateMutability": "view", + "superFunction": null, + "visibility": "external" + }, + { + "anonymous": false, + "documentation": null, + "id": 5043, + "name": "Transfer", + "nodeType": "EventDefinition", + "parameters": { + "id": 5042, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5037, + "indexed": true, + "name": "from", + "nodeType": "VariableDeclaration", + "scope": 5043, + "src": "619:20:47", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5036, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "619:7:47", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5039, + "indexed": true, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 5043, + "src": "641:18:47", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5038, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "641:7:47", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5041, + "indexed": false, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 5043, + "src": "661:13:47", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5040, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "661:7:47", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "618:57:47" + }, + "src": "604:72:47" + }, + { + "anonymous": false, + "documentation": null, + "id": 5051, + "name": "Approval", + "nodeType": "EventDefinition", + "parameters": { + "id": 5050, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5045, + "indexed": true, + "name": "owner", + "nodeType": "VariableDeclaration", + "scope": 5051, + "src": "697:21:47", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5044, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "697:7:47", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5047, + "indexed": true, + "name": "spender", + "nodeType": "VariableDeclaration", + "scope": 5051, + "src": "720:23:47", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5046, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "720:7:47", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5049, + "indexed": false, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 5051, + "src": "745:13:47", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5048, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "745:7:47", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "696:63:47" + }, + "src": "682:78:47" + } + ], + "scope": 5053, + "src": "114:648:47" + } + ], + "src": "0:763:47" + }, + "compiler": { + "name": "solc", + "version": "0.5.0+commit.1d4f565a.Emscripten.clang" + }, + "networks": {}, + "schemaVersion": "3.0.0", + "updatedAt": "2019-01-04T21:44:02.893Z", + "devdoc": { + "details": "see https://github.com/ethereum/EIPs/issues/20", + "methods": {}, + "title": "ERC20 interface" + }, + "userdoc": { + "methods": {} + } +} \ No newline at end of file diff --git a/node_modules/openzeppelin-solidity/build/contracts/IERC721.json b/node_modules/openzeppelin-solidity/build/contracts/IERC721.json new file mode 100644 index 0000000..2f6f1d0 --- /dev/null +++ b/node_modules/openzeppelin-solidity/build/contracts/IERC721.json @@ -0,0 +1,2778 @@ +{ + "contractName": "IERC721", + "abi": [ + { + "constant": true, + "inputs": [ + { + "name": "interfaceId", + "type": "bytes4" + } + ], + "name": "supportsInterface", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "from", + "type": "address" + }, + { + "indexed": true, + "name": "to", + "type": "address" + }, + { + "indexed": true, + "name": "tokenId", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "name": "approved", + "type": "address" + }, + { + "indexed": true, + "name": "tokenId", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "name": "operator", + "type": "address" + }, + { + "indexed": false, + "name": "approved", + "type": "bool" + } + ], + "name": "ApprovalForAll", + "type": "event" + }, + { + "constant": true, + "inputs": [ + { + "name": "owner", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "name": "balance", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "tokenId", + "type": "uint256" + } + ], + "name": "ownerOf", + "outputs": [ + { + "name": "owner", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "to", + "type": "address" + }, + { + "name": "tokenId", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "tokenId", + "type": "uint256" + } + ], + "name": "getApproved", + "outputs": [ + { + "name": "operator", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "operator", + "type": "address" + }, + { + "name": "_approved", + "type": "bool" + } + ], + "name": "setApprovalForAll", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "owner", + "type": "address" + }, + { + "name": "operator", + "type": "address" + } + ], + "name": "isApprovedForAll", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "from", + "type": "address" + }, + { + "name": "to", + "type": "address" + }, + { + "name": "tokenId", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "from", + "type": "address" + }, + { + "name": "to", + "type": "address" + }, + { + "name": "tokenId", + "type": "uint256" + } + ], + "name": "safeTransferFrom", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "from", + "type": "address" + }, + { + "name": "to", + "type": "address" + }, + { + "name": "tokenId", + "type": "uint256" + }, + { + "name": "data", + "type": "bytes" + } + ], + "name": "safeTransferFrom", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "sourceMap": "", + "deployedSourceMap": "", + "source": "pragma solidity ^0.5.0;\n\nimport \"../../introspection/IERC165.sol\";\n\n/**\n * @title ERC721 Non-Fungible Token Standard basic interface\n * @dev see https://github.com/ethereum/EIPs/blob/master/EIPS/eip-721.md\n */\ncontract IERC721 is IERC165 {\n event Transfer(address indexed from, address indexed to, uint256 indexed tokenId);\n event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId);\n event ApprovalForAll(address indexed owner, address indexed operator, bool approved);\n\n function balanceOf(address owner) public view returns (uint256 balance);\n function ownerOf(uint256 tokenId) public view returns (address owner);\n\n function approve(address to, uint256 tokenId) public;\n function getApproved(uint256 tokenId) public view returns (address operator);\n\n function setApprovalForAll(address operator, bool _approved) public;\n function isApprovedForAll(address owner, address operator) public view returns (bool);\n\n function transferFrom(address from, address to, uint256 tokenId) public;\n function safeTransferFrom(address from, address to, uint256 tokenId) public;\n\n function safeTransferFrom(address from, address to, uint256 tokenId, bytes memory data) public;\n}\n", + "sourcePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/token/ERC721/IERC721.sol", + "ast": { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/token/ERC721/IERC721.sol", + "exportedSymbols": { + "IERC721": [ + 6619 + ] + }, + "id": 6620, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 6518, + "literals": [ + "solidity", + "^", + "0.5", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "0:23:59" + }, + { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/introspection/IERC165.sol", + "file": "../../introspection/IERC165.sol", + "id": 6519, + "nodeType": "ImportDirective", + "scope": 6620, + "sourceUnit": 3203, + "src": "25:41:59", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 6520, + "name": "IERC165", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 3202, + "src": "230:7:59", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC165_$3202", + "typeString": "contract IERC165" + } + }, + "id": 6521, + "nodeType": "InheritanceSpecifier", + "src": "230:7:59" + } + ], + "contractDependencies": [ + 3202 + ], + "contractKind": "contract", + "documentation": "@title ERC721 Non-Fungible Token Standard basic interface\n@dev see https://github.com/ethereum/EIPs/blob/master/EIPS/eip-721.md", + "fullyImplemented": false, + "id": 6619, + "linearizedBaseContracts": [ + 6619, + 3202 + ], + "name": "IERC721", + "nodeType": "ContractDefinition", + "nodes": [ + { + "anonymous": false, + "documentation": null, + "id": 6529, + "name": "Transfer", + "nodeType": "EventDefinition", + "parameters": { + "id": 6528, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6523, + "indexed": true, + "name": "from", + "nodeType": "VariableDeclaration", + "scope": 6529, + "src": "259:20:59", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6522, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "259:7:59", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 6525, + "indexed": true, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 6529, + "src": "281:18:59", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6524, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "281:7:59", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 6527, + "indexed": true, + "name": "tokenId", + "nodeType": "VariableDeclaration", + "scope": 6529, + "src": "301:23:59", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6526, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "301:7:59", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "258:67:59" + }, + "src": "244:82:59" + }, + { + "anonymous": false, + "documentation": null, + "id": 6537, + "name": "Approval", + "nodeType": "EventDefinition", + "parameters": { + "id": 6536, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6531, + "indexed": true, + "name": "owner", + "nodeType": "VariableDeclaration", + "scope": 6537, + "src": "346:21:59", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6530, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "346:7:59", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 6533, + "indexed": true, + "name": "approved", + "nodeType": "VariableDeclaration", + "scope": 6537, + "src": "369:24:59", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6532, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "369:7:59", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 6535, + "indexed": true, + "name": "tokenId", + "nodeType": "VariableDeclaration", + "scope": 6537, + "src": "395:23:59", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6534, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "395:7:59", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "345:74:59" + }, + "src": "331:89:59" + }, + { + "anonymous": false, + "documentation": null, + "id": 6545, + "name": "ApprovalForAll", + "nodeType": "EventDefinition", + "parameters": { + "id": 6544, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6539, + "indexed": true, + "name": "owner", + "nodeType": "VariableDeclaration", + "scope": 6545, + "src": "446:21:59", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6538, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "446:7:59", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 6541, + "indexed": true, + "name": "operator", + "nodeType": "VariableDeclaration", + "scope": 6545, + "src": "469:24:59", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6540, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "469:7:59", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 6543, + "indexed": false, + "name": "approved", + "nodeType": "VariableDeclaration", + "scope": 6545, + "src": "495:13:59", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 6542, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "495:4:59", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "445:64:59" + }, + "src": "425:85:59" + }, + { + "body": null, + "documentation": null, + "id": 6552, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "balanceOf", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6548, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6547, + "name": "owner", + "nodeType": "VariableDeclaration", + "scope": 6552, + "src": "535:13:59", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6546, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "535:7:59", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "534:15:59" + }, + "returnParameters": { + "id": 6551, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6550, + "name": "balance", + "nodeType": "VariableDeclaration", + "scope": 6552, + "src": "571:15:59", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6549, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "571:7:59", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "570:17:59" + }, + "scope": 6619, + "src": "516:72:59", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": null, + "documentation": null, + "id": 6559, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "ownerOf", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6555, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6554, + "name": "tokenId", + "nodeType": "VariableDeclaration", + "scope": 6559, + "src": "610:15:59", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6553, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "610:7:59", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "609:17:59" + }, + "returnParameters": { + "id": 6558, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6557, + "name": "owner", + "nodeType": "VariableDeclaration", + "scope": 6559, + "src": "648:13:59", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6556, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "648:7:59", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "647:15:59" + }, + "scope": 6619, + "src": "593:70:59", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": null, + "documentation": null, + "id": 6566, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "approve", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6564, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6561, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 6566, + "src": "686:10:59", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6560, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "686:7:59", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 6563, + "name": "tokenId", + "nodeType": "VariableDeclaration", + "scope": 6566, + "src": "698:15:59", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6562, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "698:7:59", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "685:29:59" + }, + "returnParameters": { + "id": 6565, + "nodeType": "ParameterList", + "parameters": [], + "src": "721:0:59" + }, + "scope": 6619, + "src": "669:53:59", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": null, + "documentation": null, + "id": 6573, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "getApproved", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6569, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6568, + "name": "tokenId", + "nodeType": "VariableDeclaration", + "scope": 6573, + "src": "748:15:59", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6567, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "748:7:59", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "747:17:59" + }, + "returnParameters": { + "id": 6572, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6571, + "name": "operator", + "nodeType": "VariableDeclaration", + "scope": 6573, + "src": "786:16:59", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6570, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "786:7:59", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "785:18:59" + }, + "scope": 6619, + "src": "727:77:59", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": null, + "documentation": null, + "id": 6580, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "setApprovalForAll", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6578, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6575, + "name": "operator", + "nodeType": "VariableDeclaration", + "scope": 6580, + "src": "837:16:59", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6574, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "837:7:59", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 6577, + "name": "_approved", + "nodeType": "VariableDeclaration", + "scope": 6580, + "src": "855:14:59", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 6576, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "855:4:59", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "836:34:59" + }, + "returnParameters": { + "id": 6579, + "nodeType": "ParameterList", + "parameters": [], + "src": "877:0:59" + }, + "scope": 6619, + "src": "810:68:59", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": null, + "documentation": null, + "id": 6589, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "isApprovedForAll", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6585, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6582, + "name": "owner", + "nodeType": "VariableDeclaration", + "scope": 6589, + "src": "909:13:59", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6581, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "909:7:59", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 6584, + "name": "operator", + "nodeType": "VariableDeclaration", + "scope": 6589, + "src": "924:16:59", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6583, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "924:7:59", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "908:33:59" + }, + "returnParameters": { + "id": 6588, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6587, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 6589, + "src": "963:4:59", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 6586, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "963:4:59", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "962:6:59" + }, + "scope": 6619, + "src": "883:86:59", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": null, + "documentation": null, + "id": 6598, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "transferFrom", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6596, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6591, + "name": "from", + "nodeType": "VariableDeclaration", + "scope": 6598, + "src": "997:12:59", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6590, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "997:7:59", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 6593, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 6598, + "src": "1011:10:59", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6592, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1011:7:59", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 6595, + "name": "tokenId", + "nodeType": "VariableDeclaration", + "scope": 6598, + "src": "1023:15:59", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6594, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1023:7:59", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "996:43:59" + }, + "returnParameters": { + "id": 6597, + "nodeType": "ParameterList", + "parameters": [], + "src": "1046:0:59" + }, + "scope": 6619, + "src": "975:72:59", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": null, + "documentation": null, + "id": 6607, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "safeTransferFrom", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6605, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6600, + "name": "from", + "nodeType": "VariableDeclaration", + "scope": 6607, + "src": "1078:12:59", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6599, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1078:7:59", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 6602, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 6607, + "src": "1092:10:59", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6601, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1092:7:59", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 6604, + "name": "tokenId", + "nodeType": "VariableDeclaration", + "scope": 6607, + "src": "1104:15:59", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6603, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1104:7:59", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1077:43:59" + }, + "returnParameters": { + "id": 6606, + "nodeType": "ParameterList", + "parameters": [], + "src": "1127:0:59" + }, + "scope": 6619, + "src": "1052:76:59", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": null, + "documentation": null, + "id": 6618, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "safeTransferFrom", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6616, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6609, + "name": "from", + "nodeType": "VariableDeclaration", + "scope": 6618, + "src": "1160:12:59", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6608, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1160:7:59", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 6611, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 6618, + "src": "1174:10:59", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6610, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1174:7:59", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 6613, + "name": "tokenId", + "nodeType": "VariableDeclaration", + "scope": 6618, + "src": "1186:15:59", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6612, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1186:7:59", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 6615, + "name": "data", + "nodeType": "VariableDeclaration", + "scope": 6618, + "src": "1203:17:59", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 6614, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "1203:5:59", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1159:62:59" + }, + "returnParameters": { + "id": 6617, + "nodeType": "ParameterList", + "parameters": [], + "src": "1228:0:59" + }, + "scope": 6619, + "src": "1134:95:59", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + } + ], + "scope": 6620, + "src": "210:1021:59" + } + ], + "src": "0:1232:59" + }, + "legacyAST": { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/token/ERC721/IERC721.sol", + "exportedSymbols": { + "IERC721": [ + 6619 + ] + }, + "id": 6620, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 6518, + "literals": [ + "solidity", + "^", + "0.5", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "0:23:59" + }, + { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/introspection/IERC165.sol", + "file": "../../introspection/IERC165.sol", + "id": 6519, + "nodeType": "ImportDirective", + "scope": 6620, + "sourceUnit": 3203, + "src": "25:41:59", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 6520, + "name": "IERC165", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 3202, + "src": "230:7:59", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC165_$3202", + "typeString": "contract IERC165" + } + }, + "id": 6521, + "nodeType": "InheritanceSpecifier", + "src": "230:7:59" + } + ], + "contractDependencies": [ + 3202 + ], + "contractKind": "contract", + "documentation": "@title ERC721 Non-Fungible Token Standard basic interface\n@dev see https://github.com/ethereum/EIPs/blob/master/EIPS/eip-721.md", + "fullyImplemented": false, + "id": 6619, + "linearizedBaseContracts": [ + 6619, + 3202 + ], + "name": "IERC721", + "nodeType": "ContractDefinition", + "nodes": [ + { + "anonymous": false, + "documentation": null, + "id": 6529, + "name": "Transfer", + "nodeType": "EventDefinition", + "parameters": { + "id": 6528, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6523, + "indexed": true, + "name": "from", + "nodeType": "VariableDeclaration", + "scope": 6529, + "src": "259:20:59", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6522, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "259:7:59", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 6525, + "indexed": true, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 6529, + "src": "281:18:59", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6524, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "281:7:59", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 6527, + "indexed": true, + "name": "tokenId", + "nodeType": "VariableDeclaration", + "scope": 6529, + "src": "301:23:59", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6526, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "301:7:59", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "258:67:59" + }, + "src": "244:82:59" + }, + { + "anonymous": false, + "documentation": null, + "id": 6537, + "name": "Approval", + "nodeType": "EventDefinition", + "parameters": { + "id": 6536, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6531, + "indexed": true, + "name": "owner", + "nodeType": "VariableDeclaration", + "scope": 6537, + "src": "346:21:59", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6530, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "346:7:59", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 6533, + "indexed": true, + "name": "approved", + "nodeType": "VariableDeclaration", + "scope": 6537, + "src": "369:24:59", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6532, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "369:7:59", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 6535, + "indexed": true, + "name": "tokenId", + "nodeType": "VariableDeclaration", + "scope": 6537, + "src": "395:23:59", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6534, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "395:7:59", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "345:74:59" + }, + "src": "331:89:59" + }, + { + "anonymous": false, + "documentation": null, + "id": 6545, + "name": "ApprovalForAll", + "nodeType": "EventDefinition", + "parameters": { + "id": 6544, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6539, + "indexed": true, + "name": "owner", + "nodeType": "VariableDeclaration", + "scope": 6545, + "src": "446:21:59", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6538, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "446:7:59", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 6541, + "indexed": true, + "name": "operator", + "nodeType": "VariableDeclaration", + "scope": 6545, + "src": "469:24:59", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6540, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "469:7:59", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 6543, + "indexed": false, + "name": "approved", + "nodeType": "VariableDeclaration", + "scope": 6545, + "src": "495:13:59", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 6542, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "495:4:59", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "445:64:59" + }, + "src": "425:85:59" + }, + { + "body": null, + "documentation": null, + "id": 6552, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "balanceOf", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6548, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6547, + "name": "owner", + "nodeType": "VariableDeclaration", + "scope": 6552, + "src": "535:13:59", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6546, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "535:7:59", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "534:15:59" + }, + "returnParameters": { + "id": 6551, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6550, + "name": "balance", + "nodeType": "VariableDeclaration", + "scope": 6552, + "src": "571:15:59", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6549, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "571:7:59", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "570:17:59" + }, + "scope": 6619, + "src": "516:72:59", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": null, + "documentation": null, + "id": 6559, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "ownerOf", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6555, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6554, + "name": "tokenId", + "nodeType": "VariableDeclaration", + "scope": 6559, + "src": "610:15:59", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6553, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "610:7:59", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "609:17:59" + }, + "returnParameters": { + "id": 6558, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6557, + "name": "owner", + "nodeType": "VariableDeclaration", + "scope": 6559, + "src": "648:13:59", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6556, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "648:7:59", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "647:15:59" + }, + "scope": 6619, + "src": "593:70:59", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": null, + "documentation": null, + "id": 6566, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "approve", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6564, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6561, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 6566, + "src": "686:10:59", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6560, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "686:7:59", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 6563, + "name": "tokenId", + "nodeType": "VariableDeclaration", + "scope": 6566, + "src": "698:15:59", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6562, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "698:7:59", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "685:29:59" + }, + "returnParameters": { + "id": 6565, + "nodeType": "ParameterList", + "parameters": [], + "src": "721:0:59" + }, + "scope": 6619, + "src": "669:53:59", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": null, + "documentation": null, + "id": 6573, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "getApproved", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6569, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6568, + "name": "tokenId", + "nodeType": "VariableDeclaration", + "scope": 6573, + "src": "748:15:59", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6567, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "748:7:59", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "747:17:59" + }, + "returnParameters": { + "id": 6572, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6571, + "name": "operator", + "nodeType": "VariableDeclaration", + "scope": 6573, + "src": "786:16:59", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6570, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "786:7:59", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "785:18:59" + }, + "scope": 6619, + "src": "727:77:59", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": null, + "documentation": null, + "id": 6580, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "setApprovalForAll", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6578, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6575, + "name": "operator", + "nodeType": "VariableDeclaration", + "scope": 6580, + "src": "837:16:59", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6574, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "837:7:59", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 6577, + "name": "_approved", + "nodeType": "VariableDeclaration", + "scope": 6580, + "src": "855:14:59", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 6576, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "855:4:59", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "836:34:59" + }, + "returnParameters": { + "id": 6579, + "nodeType": "ParameterList", + "parameters": [], + "src": "877:0:59" + }, + "scope": 6619, + "src": "810:68:59", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": null, + "documentation": null, + "id": 6589, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "isApprovedForAll", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6585, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6582, + "name": "owner", + "nodeType": "VariableDeclaration", + "scope": 6589, + "src": "909:13:59", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6581, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "909:7:59", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 6584, + "name": "operator", + "nodeType": "VariableDeclaration", + "scope": 6589, + "src": "924:16:59", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6583, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "924:7:59", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "908:33:59" + }, + "returnParameters": { + "id": 6588, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6587, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 6589, + "src": "963:4:59", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 6586, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "963:4:59", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "962:6:59" + }, + "scope": 6619, + "src": "883:86:59", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": null, + "documentation": null, + "id": 6598, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "transferFrom", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6596, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6591, + "name": "from", + "nodeType": "VariableDeclaration", + "scope": 6598, + "src": "997:12:59", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6590, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "997:7:59", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 6593, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 6598, + "src": "1011:10:59", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6592, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1011:7:59", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 6595, + "name": "tokenId", + "nodeType": "VariableDeclaration", + "scope": 6598, + "src": "1023:15:59", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6594, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1023:7:59", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "996:43:59" + }, + "returnParameters": { + "id": 6597, + "nodeType": "ParameterList", + "parameters": [], + "src": "1046:0:59" + }, + "scope": 6619, + "src": "975:72:59", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": null, + "documentation": null, + "id": 6607, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "safeTransferFrom", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6605, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6600, + "name": "from", + "nodeType": "VariableDeclaration", + "scope": 6607, + "src": "1078:12:59", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6599, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1078:7:59", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 6602, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 6607, + "src": "1092:10:59", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6601, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1092:7:59", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 6604, + "name": "tokenId", + "nodeType": "VariableDeclaration", + "scope": 6607, + "src": "1104:15:59", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6603, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1104:7:59", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1077:43:59" + }, + "returnParameters": { + "id": 6606, + "nodeType": "ParameterList", + "parameters": [], + "src": "1127:0:59" + }, + "scope": 6619, + "src": "1052:76:59", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": null, + "documentation": null, + "id": 6618, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "safeTransferFrom", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6616, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6609, + "name": "from", + "nodeType": "VariableDeclaration", + "scope": 6618, + "src": "1160:12:59", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6608, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1160:7:59", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 6611, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 6618, + "src": "1174:10:59", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6610, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1174:7:59", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 6613, + "name": "tokenId", + "nodeType": "VariableDeclaration", + "scope": 6618, + "src": "1186:15:59", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6612, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1186:7:59", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 6615, + "name": "data", + "nodeType": "VariableDeclaration", + "scope": 6618, + "src": "1203:17:59", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 6614, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "1203:5:59", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1159:62:59" + }, + "returnParameters": { + "id": 6617, + "nodeType": "ParameterList", + "parameters": [], + "src": "1228:0:59" + }, + "scope": 6619, + "src": "1134:95:59", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + } + ], + "scope": 6620, + "src": "210:1021:59" + } + ], + "src": "0:1232:59" + }, + "compiler": { + "name": "solc", + "version": "0.5.0+commit.1d4f565a.Emscripten.clang" + }, + "networks": {}, + "schemaVersion": "3.0.0", + "updatedAt": "2019-01-04T21:44:02.907Z", + "devdoc": { + "details": "see https://github.com/ethereum/EIPs/blob/master/EIPS/eip-721.md", + "methods": { + "supportsInterface(bytes4)": { + "details": "Interface identification is specified in ERC-165. This function uses less than 30,000 gas.", + "params": { + "interfaceId": "The interface identifier, as specified in ERC-165" + } + } + }, + "title": "ERC721 Non-Fungible Token Standard basic interface" + }, + "userdoc": { + "methods": { + "supportsInterface(bytes4)": { + "notice": "Query if a contract implements an interface" + } + } + } +} \ No newline at end of file diff --git a/node_modules/openzeppelin-solidity/build/contracts/IERC721Enumerable.json b/node_modules/openzeppelin-solidity/build/contracts/IERC721Enumerable.json new file mode 100644 index 0000000..77c1961 --- /dev/null +++ b/node_modules/openzeppelin-solidity/build/contracts/IERC721Enumerable.json @@ -0,0 +1,1002 @@ +{ + "contractName": "IERC721Enumerable", + "abi": [ + { + "constant": true, + "inputs": [ + { + "name": "interfaceId", + "type": "bytes4" + } + ], + "name": "supportsInterface", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "tokenId", + "type": "uint256" + } + ], + "name": "getApproved", + "outputs": [ + { + "name": "operator", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "to", + "type": "address" + }, + { + "name": "tokenId", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "from", + "type": "address" + }, + { + "name": "to", + "type": "address" + }, + { + "name": "tokenId", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "from", + "type": "address" + }, + { + "name": "to", + "type": "address" + }, + { + "name": "tokenId", + "type": "uint256" + } + ], + "name": "safeTransferFrom", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "tokenId", + "type": "uint256" + } + ], + "name": "ownerOf", + "outputs": [ + { + "name": "owner", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "owner", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "name": "balance", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "operator", + "type": "address" + }, + { + "name": "_approved", + "type": "bool" + } + ], + "name": "setApprovalForAll", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "from", + "type": "address" + }, + { + "name": "to", + "type": "address" + }, + { + "name": "tokenId", + "type": "uint256" + }, + { + "name": "data", + "type": "bytes" + } + ], + "name": "safeTransferFrom", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "owner", + "type": "address" + }, + { + "name": "operator", + "type": "address" + } + ], + "name": "isApprovedForAll", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "from", + "type": "address" + }, + { + "indexed": true, + "name": "to", + "type": "address" + }, + { + "indexed": true, + "name": "tokenId", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "name": "approved", + "type": "address" + }, + { + "indexed": true, + "name": "tokenId", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "name": "operator", + "type": "address" + }, + { + "indexed": false, + "name": "approved", + "type": "bool" + } + ], + "name": "ApprovalForAll", + "type": "event" + }, + { + "constant": true, + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "owner", + "type": "address" + }, + { + "name": "index", + "type": "uint256" + } + ], + "name": "tokenOfOwnerByIndex", + "outputs": [ + { + "name": "tokenId", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "index", + "type": "uint256" + } + ], + "name": "tokenByIndex", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "sourceMap": "", + "deployedSourceMap": "", + "source": "pragma solidity ^0.5.0;\n\nimport \"./IERC721.sol\";\n\n/**\n * @title ERC-721 Non-Fungible Token Standard, optional enumeration extension\n * @dev See https://github.com/ethereum/EIPs/blob/master/EIPS/eip-721.md\n */\ncontract IERC721Enumerable is IERC721 {\n function totalSupply() public view returns (uint256);\n function tokenOfOwnerByIndex(address owner, uint256 index) public view returns (uint256 tokenId);\n\n function tokenByIndex(uint256 index) public view returns (uint256);\n}\n", + "sourcePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/token/ERC721/IERC721Enumerable.sol", + "ast": { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/token/ERC721/IERC721Enumerable.sol", + "exportedSymbols": { + "IERC721Enumerable": [ + 6646 + ] + }, + "id": 6647, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 6621, + "literals": [ + "solidity", + "^", + "0.5", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "0:23:60" + }, + { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/token/ERC721/IERC721.sol", + "file": "./IERC721.sol", + "id": 6622, + "nodeType": "ImportDirective", + "scope": 6647, + "sourceUnit": 6620, + "src": "25:23:60", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 6623, + "name": "IERC721", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 6619, + "src": "239:7:60", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC721_$6619", + "typeString": "contract IERC721" + } + }, + "id": 6624, + "nodeType": "InheritanceSpecifier", + "src": "239:7:60" + } + ], + "contractDependencies": [ + 3202, + 6619 + ], + "contractKind": "contract", + "documentation": "@title ERC-721 Non-Fungible Token Standard, optional enumeration extension\n@dev See https://github.com/ethereum/EIPs/blob/master/EIPS/eip-721.md", + "fullyImplemented": false, + "id": 6646, + "linearizedBaseContracts": [ + 6646, + 6619, + 3202 + ], + "name": "IERC721Enumerable", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": null, + "documentation": null, + "id": 6629, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "totalSupply", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6625, + "nodeType": "ParameterList", + "parameters": [], + "src": "273:2:60" + }, + "returnParameters": { + "id": 6628, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6627, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 6629, + "src": "297:7:60", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6626, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "297:7:60", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "296:9:60" + }, + "scope": 6646, + "src": "253:53:60", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": null, + "documentation": null, + "id": 6638, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "tokenOfOwnerByIndex", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6634, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6631, + "name": "owner", + "nodeType": "VariableDeclaration", + "scope": 6638, + "src": "340:13:60", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6630, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "340:7:60", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 6633, + "name": "index", + "nodeType": "VariableDeclaration", + "scope": 6638, + "src": "355:13:60", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6632, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "355:7:60", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "339:30:60" + }, + "returnParameters": { + "id": 6637, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6636, + "name": "tokenId", + "nodeType": "VariableDeclaration", + "scope": 6638, + "src": "391:15:60", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6635, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "391:7:60", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "390:17:60" + }, + "scope": 6646, + "src": "311:97:60", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": null, + "documentation": null, + "id": 6645, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "tokenByIndex", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6641, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6640, + "name": "index", + "nodeType": "VariableDeclaration", + "scope": 6645, + "src": "436:13:60", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6639, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "436:7:60", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "435:15:60" + }, + "returnParameters": { + "id": 6644, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6643, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 6645, + "src": "472:7:60", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6642, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "472:7:60", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "471:9:60" + }, + "scope": 6646, + "src": "414:67:60", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + } + ], + "scope": 6647, + "src": "209:274:60" + } + ], + "src": "0:484:60" + }, + "legacyAST": { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/token/ERC721/IERC721Enumerable.sol", + "exportedSymbols": { + "IERC721Enumerable": [ + 6646 + ] + }, + "id": 6647, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 6621, + "literals": [ + "solidity", + "^", + "0.5", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "0:23:60" + }, + { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/token/ERC721/IERC721.sol", + "file": "./IERC721.sol", + "id": 6622, + "nodeType": "ImportDirective", + "scope": 6647, + "sourceUnit": 6620, + "src": "25:23:60", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 6623, + "name": "IERC721", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 6619, + "src": "239:7:60", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC721_$6619", + "typeString": "contract IERC721" + } + }, + "id": 6624, + "nodeType": "InheritanceSpecifier", + "src": "239:7:60" + } + ], + "contractDependencies": [ + 3202, + 6619 + ], + "contractKind": "contract", + "documentation": "@title ERC-721 Non-Fungible Token Standard, optional enumeration extension\n@dev See https://github.com/ethereum/EIPs/blob/master/EIPS/eip-721.md", + "fullyImplemented": false, + "id": 6646, + "linearizedBaseContracts": [ + 6646, + 6619, + 3202 + ], + "name": "IERC721Enumerable", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": null, + "documentation": null, + "id": 6629, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "totalSupply", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6625, + "nodeType": "ParameterList", + "parameters": [], + "src": "273:2:60" + }, + "returnParameters": { + "id": 6628, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6627, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 6629, + "src": "297:7:60", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6626, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "297:7:60", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "296:9:60" + }, + "scope": 6646, + "src": "253:53:60", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": null, + "documentation": null, + "id": 6638, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "tokenOfOwnerByIndex", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6634, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6631, + "name": "owner", + "nodeType": "VariableDeclaration", + "scope": 6638, + "src": "340:13:60", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6630, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "340:7:60", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 6633, + "name": "index", + "nodeType": "VariableDeclaration", + "scope": 6638, + "src": "355:13:60", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6632, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "355:7:60", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "339:30:60" + }, + "returnParameters": { + "id": 6637, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6636, + "name": "tokenId", + "nodeType": "VariableDeclaration", + "scope": 6638, + "src": "391:15:60", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6635, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "391:7:60", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "390:17:60" + }, + "scope": 6646, + "src": "311:97:60", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": null, + "documentation": null, + "id": 6645, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "tokenByIndex", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6641, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6640, + "name": "index", + "nodeType": "VariableDeclaration", + "scope": 6645, + "src": "436:13:60", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6639, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "436:7:60", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "435:15:60" + }, + "returnParameters": { + "id": 6644, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6643, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 6645, + "src": "472:7:60", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6642, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "472:7:60", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "471:9:60" + }, + "scope": 6646, + "src": "414:67:60", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + } + ], + "scope": 6647, + "src": "209:274:60" + } + ], + "src": "0:484:60" + }, + "compiler": { + "name": "solc", + "version": "0.5.0+commit.1d4f565a.Emscripten.clang" + }, + "networks": {}, + "schemaVersion": "3.0.0", + "updatedAt": "2019-01-04T21:44:02.907Z", + "devdoc": { + "details": "See https://github.com/ethereum/EIPs/blob/master/EIPS/eip-721.md", + "methods": { + "supportsInterface(bytes4)": { + "details": "Interface identification is specified in ERC-165. This function uses less than 30,000 gas.", + "params": { + "interfaceId": "The interface identifier, as specified in ERC-165" + } + } + }, + "title": "ERC-721 Non-Fungible Token Standard, optional enumeration extension" + }, + "userdoc": { + "methods": { + "supportsInterface(bytes4)": { + "notice": "Query if a contract implements an interface" + } + } + } +} \ No newline at end of file diff --git a/node_modules/openzeppelin-solidity/build/contracts/IERC721Full.json b/node_modules/openzeppelin-solidity/build/contracts/IERC721Full.json new file mode 100644 index 0000000..127ff4c --- /dev/null +++ b/node_modules/openzeppelin-solidity/build/contracts/IERC721Full.json @@ -0,0 +1,685 @@ +{ + "contractName": "IERC721Full", + "abi": [ + { + "constant": true, + "inputs": [ + { + "name": "interfaceId", + "type": "bytes4" + } + ], + "name": "supportsInterface", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "name", + "outputs": [ + { + "name": "", + "type": "string" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "tokenId", + "type": "uint256" + } + ], + "name": "getApproved", + "outputs": [ + { + "name": "operator", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "to", + "type": "address" + }, + { + "name": "tokenId", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [], + "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": "tokenId", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "owner", + "type": "address" + }, + { + "name": "index", + "type": "uint256" + } + ], + "name": "tokenOfOwnerByIndex", + "outputs": [ + { + "name": "tokenId", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "from", + "type": "address" + }, + { + "name": "to", + "type": "address" + }, + { + "name": "tokenId", + "type": "uint256" + } + ], + "name": "safeTransferFrom", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "index", + "type": "uint256" + } + ], + "name": "tokenByIndex", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "tokenId", + "type": "uint256" + } + ], + "name": "ownerOf", + "outputs": [ + { + "name": "owner", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "owner", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "name": "balance", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "symbol", + "outputs": [ + { + "name": "", + "type": "string" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "operator", + "type": "address" + }, + { + "name": "_approved", + "type": "bool" + } + ], + "name": "setApprovalForAll", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "from", + "type": "address" + }, + { + "name": "to", + "type": "address" + }, + { + "name": "tokenId", + "type": "uint256" + }, + { + "name": "data", + "type": "bytes" + } + ], + "name": "safeTransferFrom", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "tokenId", + "type": "uint256" + } + ], + "name": "tokenURI", + "outputs": [ + { + "name": "", + "type": "string" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "owner", + "type": "address" + }, + { + "name": "operator", + "type": "address" + } + ], + "name": "isApprovedForAll", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "from", + "type": "address" + }, + { + "indexed": true, + "name": "to", + "type": "address" + }, + { + "indexed": true, + "name": "tokenId", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "name": "approved", + "type": "address" + }, + { + "indexed": true, + "name": "tokenId", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "name": "operator", + "type": "address" + }, + { + "indexed": false, + "name": "approved", + "type": "bool" + } + ], + "name": "ApprovalForAll", + "type": "event" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "sourceMap": "", + "deployedSourceMap": "", + "source": "pragma solidity ^0.5.0;\n\nimport \"./IERC721.sol\";\nimport \"./IERC721Enumerable.sol\";\nimport \"./IERC721Metadata.sol\";\n\n/**\n * @title ERC-721 Non-Fungible Token Standard, full implementation interface\n * @dev See https://github.com/ethereum/EIPs/blob/master/EIPS/eip-721.md\n */\ncontract IERC721Full is IERC721, IERC721Enumerable, IERC721Metadata {\n // solhint-disable-previous-line no-empty-blocks\n}\n", + "sourcePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/token/ERC721/IERC721Full.sol", + "ast": { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/token/ERC721/IERC721Full.sol", + "exportedSymbols": { + "IERC721Full": [ + 6658 + ] + }, + "id": 6659, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 6648, + "literals": [ + "solidity", + "^", + "0.5", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "0:23:61" + }, + { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/token/ERC721/IERC721.sol", + "file": "./IERC721.sol", + "id": 6649, + "nodeType": "ImportDirective", + "scope": 6659, + "sourceUnit": 6620, + "src": "25:23:61", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/token/ERC721/IERC721Enumerable.sol", + "file": "./IERC721Enumerable.sol", + "id": 6650, + "nodeType": "ImportDirective", + "scope": 6659, + "sourceUnit": 6647, + "src": "49:33:61", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/token/ERC721/IERC721Metadata.sol", + "file": "./IERC721Metadata.sol", + "id": 6651, + "nodeType": "ImportDirective", + "scope": 6659, + "sourceUnit": 6682, + "src": "83:31:61", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 6652, + "name": "IERC721", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 6619, + "src": "298:7:61", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC721_$6619", + "typeString": "contract IERC721" + } + }, + "id": 6653, + "nodeType": "InheritanceSpecifier", + "src": "298:7:61" + }, + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 6654, + "name": "IERC721Enumerable", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 6646, + "src": "307:17:61", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC721Enumerable_$6646", + "typeString": "contract IERC721Enumerable" + } + }, + "id": 6655, + "nodeType": "InheritanceSpecifier", + "src": "307:17:61" + }, + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 6656, + "name": "IERC721Metadata", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 6681, + "src": "326:15:61", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC721Metadata_$6681", + "typeString": "contract IERC721Metadata" + } + }, + "id": 6657, + "nodeType": "InheritanceSpecifier", + "src": "326:15:61" + } + ], + "contractDependencies": [ + 3202, + 6619, + 6646, + 6681 + ], + "contractKind": "contract", + "documentation": "@title ERC-721 Non-Fungible Token Standard, full implementation interface\n@dev See https://github.com/ethereum/EIPs/blob/master/EIPS/eip-721.md", + "fullyImplemented": false, + "id": 6658, + "linearizedBaseContracts": [ + 6658, + 6681, + 6646, + 6619, + 3202 + ], + "name": "IERC721Full", + "nodeType": "ContractDefinition", + "nodes": [], + "scope": 6659, + "src": "274:124:61" + } + ], + "src": "0:399:61" + }, + "legacyAST": { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/token/ERC721/IERC721Full.sol", + "exportedSymbols": { + "IERC721Full": [ + 6658 + ] + }, + "id": 6659, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 6648, + "literals": [ + "solidity", + "^", + "0.5", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "0:23:61" + }, + { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/token/ERC721/IERC721.sol", + "file": "./IERC721.sol", + "id": 6649, + "nodeType": "ImportDirective", + "scope": 6659, + "sourceUnit": 6620, + "src": "25:23:61", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/token/ERC721/IERC721Enumerable.sol", + "file": "./IERC721Enumerable.sol", + "id": 6650, + "nodeType": "ImportDirective", + "scope": 6659, + "sourceUnit": 6647, + "src": "49:33:61", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/token/ERC721/IERC721Metadata.sol", + "file": "./IERC721Metadata.sol", + "id": 6651, + "nodeType": "ImportDirective", + "scope": 6659, + "sourceUnit": 6682, + "src": "83:31:61", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 6652, + "name": "IERC721", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 6619, + "src": "298:7:61", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC721_$6619", + "typeString": "contract IERC721" + } + }, + "id": 6653, + "nodeType": "InheritanceSpecifier", + "src": "298:7:61" + }, + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 6654, + "name": "IERC721Enumerable", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 6646, + "src": "307:17:61", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC721Enumerable_$6646", + "typeString": "contract IERC721Enumerable" + } + }, + "id": 6655, + "nodeType": "InheritanceSpecifier", + "src": "307:17:61" + }, + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 6656, + "name": "IERC721Metadata", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 6681, + "src": "326:15:61", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC721Metadata_$6681", + "typeString": "contract IERC721Metadata" + } + }, + "id": 6657, + "nodeType": "InheritanceSpecifier", + "src": "326:15:61" + } + ], + "contractDependencies": [ + 3202, + 6619, + 6646, + 6681 + ], + "contractKind": "contract", + "documentation": "@title ERC-721 Non-Fungible Token Standard, full implementation interface\n@dev See https://github.com/ethereum/EIPs/blob/master/EIPS/eip-721.md", + "fullyImplemented": false, + "id": 6658, + "linearizedBaseContracts": [ + 6658, + 6681, + 6646, + 6619, + 3202 + ], + "name": "IERC721Full", + "nodeType": "ContractDefinition", + "nodes": [], + "scope": 6659, + "src": "274:124:61" + } + ], + "src": "0:399:61" + }, + "compiler": { + "name": "solc", + "version": "0.5.0+commit.1d4f565a.Emscripten.clang" + }, + "networks": {}, + "schemaVersion": "3.0.0", + "updatedAt": "2019-01-04T21:44:02.907Z", + "devdoc": { + "details": "See https://github.com/ethereum/EIPs/blob/master/EIPS/eip-721.md", + "methods": { + "supportsInterface(bytes4)": { + "details": "Interface identification is specified in ERC-165. This function uses less than 30,000 gas.", + "params": { + "interfaceId": "The interface identifier, as specified in ERC-165" + } + } + }, + "title": "ERC-721 Non-Fungible Token Standard, full implementation interface" + }, + "userdoc": { + "methods": { + "supportsInterface(bytes4)": { + "notice": "Query if a contract implements an interface" + } + } + } +} \ No newline at end of file diff --git a/node_modules/openzeppelin-solidity/build/contracts/IERC721Metadata.json b/node_modules/openzeppelin-solidity/build/contracts/IERC721Metadata.json new file mode 100644 index 0000000..15f339f --- /dev/null +++ b/node_modules/openzeppelin-solidity/build/contracts/IERC721Metadata.json @@ -0,0 +1,885 @@ +{ + "contractName": "IERC721Metadata", + "abi": [ + { + "constant": true, + "inputs": [ + { + "name": "interfaceId", + "type": "bytes4" + } + ], + "name": "supportsInterface", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "tokenId", + "type": "uint256" + } + ], + "name": "getApproved", + "outputs": [ + { + "name": "operator", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "to", + "type": "address" + }, + { + "name": "tokenId", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "from", + "type": "address" + }, + { + "name": "to", + "type": "address" + }, + { + "name": "tokenId", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "from", + "type": "address" + }, + { + "name": "to", + "type": "address" + }, + { + "name": "tokenId", + "type": "uint256" + } + ], + "name": "safeTransferFrom", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "tokenId", + "type": "uint256" + } + ], + "name": "ownerOf", + "outputs": [ + { + "name": "owner", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "owner", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "name": "balance", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "operator", + "type": "address" + }, + { + "name": "_approved", + "type": "bool" + } + ], + "name": "setApprovalForAll", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "from", + "type": "address" + }, + { + "name": "to", + "type": "address" + }, + { + "name": "tokenId", + "type": "uint256" + }, + { + "name": "data", + "type": "bytes" + } + ], + "name": "safeTransferFrom", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "owner", + "type": "address" + }, + { + "name": "operator", + "type": "address" + } + ], + "name": "isApprovedForAll", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "from", + "type": "address" + }, + { + "indexed": true, + "name": "to", + "type": "address" + }, + { + "indexed": true, + "name": "tokenId", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "name": "approved", + "type": "address" + }, + { + "indexed": true, + "name": "tokenId", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "name": "operator", + "type": "address" + }, + { + "indexed": false, + "name": "approved", + "type": "bool" + } + ], + "name": "ApprovalForAll", + "type": "event" + }, + { + "constant": true, + "inputs": [], + "name": "name", + "outputs": [ + { + "name": "", + "type": "string" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "symbol", + "outputs": [ + { + "name": "", + "type": "string" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "tokenId", + "type": "uint256" + } + ], + "name": "tokenURI", + "outputs": [ + { + "name": "", + "type": "string" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "sourceMap": "", + "deployedSourceMap": "", + "source": "pragma solidity ^0.5.0;\n\nimport \"./IERC721.sol\";\n\n/**\n * @title ERC-721 Non-Fungible Token Standard, optional metadata extension\n * @dev See https://github.com/ethereum/EIPs/blob/master/EIPS/eip-721.md\n */\ncontract IERC721Metadata is IERC721 {\n function name() external view returns (string memory);\n function symbol() external view returns (string memory);\n function tokenURI(uint256 tokenId) external view returns (string memory);\n}\n", + "sourcePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/token/ERC721/IERC721Metadata.sol", + "ast": { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/token/ERC721/IERC721Metadata.sol", + "exportedSymbols": { + "IERC721Metadata": [ + 6681 + ] + }, + "id": 6682, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 6660, + "literals": [ + "solidity", + "^", + "0.5", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "0:23:62" + }, + { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/token/ERC721/IERC721.sol", + "file": "./IERC721.sol", + "id": 6661, + "nodeType": "ImportDirective", + "scope": 6682, + "sourceUnit": 6620, + "src": "25:23:62", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 6662, + "name": "IERC721", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 6619, + "src": "234:7:62", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC721_$6619", + "typeString": "contract IERC721" + } + }, + "id": 6663, + "nodeType": "InheritanceSpecifier", + "src": "234:7:62" + } + ], + "contractDependencies": [ + 3202, + 6619 + ], + "contractKind": "contract", + "documentation": "@title ERC-721 Non-Fungible Token Standard, optional metadata extension\n@dev See https://github.com/ethereum/EIPs/blob/master/EIPS/eip-721.md", + "fullyImplemented": false, + "id": 6681, + "linearizedBaseContracts": [ + 6681, + 6619, + 3202 + ], + "name": "IERC721Metadata", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": null, + "documentation": null, + "id": 6668, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "name", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6664, + "nodeType": "ParameterList", + "parameters": [], + "src": "261:2:62" + }, + "returnParameters": { + "id": 6667, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6666, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 6668, + "src": "287:13:62", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 6665, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "287:6:62", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "286:15:62" + }, + "scope": 6681, + "src": "248:54:62", + "stateMutability": "view", + "superFunction": null, + "visibility": "external" + }, + { + "body": null, + "documentation": null, + "id": 6673, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "symbol", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6669, + "nodeType": "ParameterList", + "parameters": [], + "src": "322:2:62" + }, + "returnParameters": { + "id": 6672, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6671, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 6673, + "src": "348:13:62", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 6670, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "348:6:62", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "347:15:62" + }, + "scope": 6681, + "src": "307:56:62", + "stateMutability": "view", + "superFunction": null, + "visibility": "external" + }, + { + "body": null, + "documentation": null, + "id": 6680, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "tokenURI", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6676, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6675, + "name": "tokenId", + "nodeType": "VariableDeclaration", + "scope": 6680, + "src": "386:15:62", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6674, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "386:7:62", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "385:17:62" + }, + "returnParameters": { + "id": 6679, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6678, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 6680, + "src": "426:13:62", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 6677, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "426:6:62", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "425:15:62" + }, + "scope": 6681, + "src": "368:73:62", + "stateMutability": "view", + "superFunction": null, + "visibility": "external" + } + ], + "scope": 6682, + "src": "206:237:62" + } + ], + "src": "0:444:62" + }, + "legacyAST": { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/token/ERC721/IERC721Metadata.sol", + "exportedSymbols": { + "IERC721Metadata": [ + 6681 + ] + }, + "id": 6682, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 6660, + "literals": [ + "solidity", + "^", + "0.5", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "0:23:62" + }, + { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/token/ERC721/IERC721.sol", + "file": "./IERC721.sol", + "id": 6661, + "nodeType": "ImportDirective", + "scope": 6682, + "sourceUnit": 6620, + "src": "25:23:62", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 6662, + "name": "IERC721", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 6619, + "src": "234:7:62", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC721_$6619", + "typeString": "contract IERC721" + } + }, + "id": 6663, + "nodeType": "InheritanceSpecifier", + "src": "234:7:62" + } + ], + "contractDependencies": [ + 3202, + 6619 + ], + "contractKind": "contract", + "documentation": "@title ERC-721 Non-Fungible Token Standard, optional metadata extension\n@dev See https://github.com/ethereum/EIPs/blob/master/EIPS/eip-721.md", + "fullyImplemented": false, + "id": 6681, + "linearizedBaseContracts": [ + 6681, + 6619, + 3202 + ], + "name": "IERC721Metadata", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": null, + "documentation": null, + "id": 6668, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "name", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6664, + "nodeType": "ParameterList", + "parameters": [], + "src": "261:2:62" + }, + "returnParameters": { + "id": 6667, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6666, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 6668, + "src": "287:13:62", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 6665, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "287:6:62", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "286:15:62" + }, + "scope": 6681, + "src": "248:54:62", + "stateMutability": "view", + "superFunction": null, + "visibility": "external" + }, + { + "body": null, + "documentation": null, + "id": 6673, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "symbol", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6669, + "nodeType": "ParameterList", + "parameters": [], + "src": "322:2:62" + }, + "returnParameters": { + "id": 6672, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6671, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 6673, + "src": "348:13:62", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 6670, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "348:6:62", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "347:15:62" + }, + "scope": 6681, + "src": "307:56:62", + "stateMutability": "view", + "superFunction": null, + "visibility": "external" + }, + { + "body": null, + "documentation": null, + "id": 6680, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "tokenURI", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6676, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6675, + "name": "tokenId", + "nodeType": "VariableDeclaration", + "scope": 6680, + "src": "386:15:62", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6674, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "386:7:62", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "385:17:62" + }, + "returnParameters": { + "id": 6679, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6678, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 6680, + "src": "426:13:62", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 6677, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "426:6:62", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "425:15:62" + }, + "scope": 6681, + "src": "368:73:62", + "stateMutability": "view", + "superFunction": null, + "visibility": "external" + } + ], + "scope": 6682, + "src": "206:237:62" + } + ], + "src": "0:444:62" + }, + "compiler": { + "name": "solc", + "version": "0.5.0+commit.1d4f565a.Emscripten.clang" + }, + "networks": {}, + "schemaVersion": "3.0.0", + "updatedAt": "2019-01-04T21:44:02.907Z", + "devdoc": { + "details": "See https://github.com/ethereum/EIPs/blob/master/EIPS/eip-721.md", + "methods": { + "supportsInterface(bytes4)": { + "details": "Interface identification is specified in ERC-165. This function uses less than 30,000 gas.", + "params": { + "interfaceId": "The interface identifier, as specified in ERC-165" + } + } + }, + "title": "ERC-721 Non-Fungible Token Standard, optional metadata extension" + }, + "userdoc": { + "methods": { + "supportsInterface(bytes4)": { + "notice": "Query if a contract implements an interface" + } + } + } +} \ No newline at end of file diff --git a/node_modules/openzeppelin-solidity/build/contracts/IERC721Receiver.json b/node_modules/openzeppelin-solidity/build/contracts/IERC721Receiver.json new file mode 100644 index 0000000..570ba26 --- /dev/null +++ b/node_modules/openzeppelin-solidity/build/contracts/IERC721Receiver.json @@ -0,0 +1,476 @@ +{ + "contractName": "IERC721Receiver", + "abi": [ + { + "constant": false, + "inputs": [ + { + "name": "operator", + "type": "address" + }, + { + "name": "from", + "type": "address" + }, + { + "name": "tokenId", + "type": "uint256" + }, + { + "name": "data", + "type": "bytes" + } + ], + "name": "onERC721Received", + "outputs": [ + { + "name": "", + "type": "bytes4" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "sourceMap": "", + "deployedSourceMap": "", + "source": "pragma solidity ^0.5.0;\n\n/**\n * @title ERC721 token receiver interface\n * @dev Interface for any contract that wants to support safeTransfers\n * from ERC721 asset contracts.\n */\ncontract IERC721Receiver {\n /**\n * @notice Handle the receipt of an NFT\n * @dev The ERC721 smart contract calls this function on the recipient\n * after a `safeTransfer`. This function MUST return the function selector,\n * otherwise the caller will revert the transaction. The selector to be\n * returned can be obtained as `this.onERC721Received.selector`. This\n * function MAY throw to revert and reject the transfer.\n * Note: the ERC721 contract address is always the message sender.\n * @param operator The address which called `safeTransferFrom` function\n * @param from The address which previously owned the token\n * @param tokenId The NFT identifier which is being transferred\n * @param data Additional data with no specified format\n * @return `bytes4(keccak256(\"onERC721Received(address,address,uint256,bytes)\"))`\n */\n function onERC721Received(address operator, address from, uint256 tokenId, bytes memory data)\n public returns (bytes4);\n}\n", + "sourcePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/token/ERC721/IERC721Receiver.sol", + "ast": { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/token/ERC721/IERC721Receiver.sol", + "exportedSymbols": { + "IERC721Receiver": [ + 6697 + ] + }, + "id": 6698, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 6683, + "literals": [ + "solidity", + "^", + "0.5", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "0:23:63" + }, + { + "baseContracts": [], + "contractDependencies": [], + "contractKind": "contract", + "documentation": "@title ERC721 token receiver interface\n@dev Interface for any contract that wants to support safeTransfers\nfrom ERC721 asset contracts.", + "fullyImplemented": false, + "id": 6697, + "linearizedBaseContracts": [ + 6697 + ], + "name": "IERC721Receiver", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": null, + "documentation": "@notice Handle the receipt of an NFT\n@dev The ERC721 smart contract calls this function on the recipient\nafter a `safeTransfer`. This function MUST return the function selector,\notherwise the caller will revert the transaction. The selector to be\nreturned can be obtained as `this.onERC721Received.selector`. This\nfunction MAY throw to revert and reject the transfer.\nNote: the ERC721 contract address is always the message sender.\n@param operator The address which called `safeTransferFrom` function\n@param from The address which previously owned the token\n@param tokenId The NFT identifier which is being transferred\n@param data Additional data with no specified format\n@return `bytes4(keccak256(\"onERC721Received(address,address,uint256,bytes)\"))`", + "id": 6696, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "onERC721Received", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6692, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6685, + "name": "operator", + "nodeType": "VariableDeclaration", + "scope": 6696, + "src": "1086:16:63", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6684, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1086:7:63", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 6687, + "name": "from", + "nodeType": "VariableDeclaration", + "scope": 6696, + "src": "1104:12:63", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6686, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1104:7:63", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 6689, + "name": "tokenId", + "nodeType": "VariableDeclaration", + "scope": 6696, + "src": "1118:15:63", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6688, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1118:7:63", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 6691, + "name": "data", + "nodeType": "VariableDeclaration", + "scope": 6696, + "src": "1135:17:63", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 6690, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "1135:5:63", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1085:68:63" + }, + "returnParameters": { + "id": 6695, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6694, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 6696, + "src": "1174:6:63", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "typeName": { + "id": 6693, + "name": "bytes4", + "nodeType": "ElementaryTypeName", + "src": "1174:6:63", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1173:8:63" + }, + "scope": 6697, + "src": "1060:122:63", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + } + ], + "scope": 6698, + "src": "178:1006:63" + } + ], + "src": "0:1185:63" + }, + "legacyAST": { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/token/ERC721/IERC721Receiver.sol", + "exportedSymbols": { + "IERC721Receiver": [ + 6697 + ] + }, + "id": 6698, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 6683, + "literals": [ + "solidity", + "^", + "0.5", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "0:23:63" + }, + { + "baseContracts": [], + "contractDependencies": [], + "contractKind": "contract", + "documentation": "@title ERC721 token receiver interface\n@dev Interface for any contract that wants to support safeTransfers\nfrom ERC721 asset contracts.", + "fullyImplemented": false, + "id": 6697, + "linearizedBaseContracts": [ + 6697 + ], + "name": "IERC721Receiver", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": null, + "documentation": "@notice Handle the receipt of an NFT\n@dev The ERC721 smart contract calls this function on the recipient\nafter a `safeTransfer`. This function MUST return the function selector,\notherwise the caller will revert the transaction. The selector to be\nreturned can be obtained as `this.onERC721Received.selector`. This\nfunction MAY throw to revert and reject the transfer.\nNote: the ERC721 contract address is always the message sender.\n@param operator The address which called `safeTransferFrom` function\n@param from The address which previously owned the token\n@param tokenId The NFT identifier which is being transferred\n@param data Additional data with no specified format\n@return `bytes4(keccak256(\"onERC721Received(address,address,uint256,bytes)\"))`", + "id": 6696, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "onERC721Received", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6692, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6685, + "name": "operator", + "nodeType": "VariableDeclaration", + "scope": 6696, + "src": "1086:16:63", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6684, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1086:7:63", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 6687, + "name": "from", + "nodeType": "VariableDeclaration", + "scope": 6696, + "src": "1104:12:63", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6686, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1104:7:63", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 6689, + "name": "tokenId", + "nodeType": "VariableDeclaration", + "scope": 6696, + "src": "1118:15:63", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6688, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1118:7:63", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 6691, + "name": "data", + "nodeType": "VariableDeclaration", + "scope": 6696, + "src": "1135:17:63", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 6690, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "1135:5:63", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1085:68:63" + }, + "returnParameters": { + "id": 6695, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6694, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 6696, + "src": "1174:6:63", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "typeName": { + "id": 6693, + "name": "bytes4", + "nodeType": "ElementaryTypeName", + "src": "1174:6:63", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1173:8:63" + }, + "scope": 6697, + "src": "1060:122:63", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + } + ], + "scope": 6698, + "src": "178:1006:63" + } + ], + "src": "0:1185:63" + }, + "compiler": { + "name": "solc", + "version": "0.5.0+commit.1d4f565a.Emscripten.clang" + }, + "networks": {}, + "schemaVersion": "3.0.0", + "updatedAt": "2019-01-04T21:44:02.908Z", + "devdoc": { + "details": "Interface for any contract that wants to support safeTransfers from ERC721 asset contracts.", + "methods": { + "onERC721Received(address,address,uint256,bytes)": { + "details": "The ERC721 smart contract calls this function on the recipient after a `safeTransfer`. This function MUST return the function selector, otherwise the caller will revert the transaction. The selector to be returned can be obtained as `this.onERC721Received.selector`. This function MAY throw to revert and reject the transfer. Note: the ERC721 contract address is always the message sender.", + "params": { + "data": "Additional data with no specified format", + "from": "The address which previously owned the token", + "operator": "The address which called `safeTransferFrom` function", + "tokenId": "The NFT identifier which is being transferred" + }, + "return": "`bytes4(keccak256(\"onERC721Received(address,address,uint256,bytes)\"))`" + } + }, + "title": "ERC721 token receiver interface" + }, + "userdoc": { + "methods": { + "onERC721Received(address,address,uint256,bytes)": { + "notice": "Handle the receipt of an NFT" + } + } + } +} \ No newline at end of file diff --git a/node_modules/openzeppelin-solidity/build/contracts/IncreasingPriceCrowdsale.json b/node_modules/openzeppelin-solidity/build/contracts/IncreasingPriceCrowdsale.json new file mode 100644 index 0000000..aab5c4e --- /dev/null +++ b/node_modules/openzeppelin-solidity/build/contracts/IncreasingPriceCrowdsale.json @@ -0,0 +1,3685 @@ +{ + "contractName": "IncreasingPriceCrowdsale", + "abi": [ + { + "constant": true, + "inputs": [], + "name": "hasClosed", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "weiRaised", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "isOpen", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "closingTime", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "wallet", + "outputs": [ + { + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "openingTime", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "beneficiary", + "type": "address" + } + ], + "name": "buyTokens", + "outputs": [], + "payable": true, + "stateMutability": "payable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "token", + "outputs": [ + { + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "name": "initialRate", + "type": "uint256" + }, + { + "name": "finalRate", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "payable": true, + "stateMutability": "payable", + "type": "fallback" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "purchaser", + "type": "address" + }, + { + "indexed": true, + "name": "beneficiary", + "type": "address" + }, + { + "indexed": false, + "name": "value", + "type": "uint256" + }, + { + "indexed": false, + "name": "amount", + "type": "uint256" + } + ], + "name": "TokensPurchased", + "type": "event" + }, + { + "constant": true, + "inputs": [], + "name": "rate", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "initialRate", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "finalRate", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "getCurrentRate", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "sourceMap": "", + "deployedSourceMap": "", + "source": "pragma solidity ^0.5.0;\n\nimport \"../validation/TimedCrowdsale.sol\";\nimport \"../../math/SafeMath.sol\";\n\n/**\n * @title IncreasingPriceCrowdsale\n * @dev Extension of Crowdsale contract that increases the price of tokens linearly in time.\n * Note that what should be provided to the constructor is the initial and final _rates_, that is,\n * the amount of tokens per wei contributed. Thus, the initial rate must be greater than the final rate.\n */\ncontract IncreasingPriceCrowdsale is TimedCrowdsale {\n using SafeMath for uint256;\n\n uint256 private _initialRate;\n uint256 private _finalRate;\n\n /**\n * @dev Constructor, takes initial and final rates of tokens received per wei contributed.\n * @param initialRate Number of tokens a buyer gets per wei at the start of the crowdsale\n * @param finalRate Number of tokens a buyer gets per wei at the end of the crowdsale\n */\n constructor (uint256 initialRate, uint256 finalRate) public {\n require(finalRate > 0);\n require(initialRate > finalRate);\n _initialRate = initialRate;\n _finalRate = finalRate;\n }\n\n /**\n * The base rate function is overridden to revert, since this crowdsale doens't use it, and\n * all calls to it are a mistake.\n */\n function rate() public view returns (uint256) {\n revert();\n }\n\n /**\n * @return the initial rate of the crowdsale.\n */\n function initialRate() public view returns (uint256) {\n return _initialRate;\n }\n\n /**\n * @return the final rate of the crowdsale.\n */\n function finalRate() public view returns (uint256) {\n return _finalRate;\n }\n\n /**\n * @dev Returns the rate of tokens per wei at the present time.\n * Note that, as price _increases_ with time, the rate _decreases_.\n * @return The number of tokens a buyer gets per wei at a given time\n */\n function getCurrentRate() public view returns (uint256) {\n if (!isOpen()) {\n return 0;\n }\n\n // solhint-disable-next-line not-rely-on-time\n uint256 elapsedTime = block.timestamp.sub(openingTime());\n uint256 timeRange = closingTime().sub(openingTime());\n uint256 rateRange = _initialRate.sub(_finalRate);\n return _initialRate.sub(elapsedTime.mul(rateRange).div(timeRange));\n }\n\n /**\n * @dev Overrides parent method taking into account variable rate.\n * @param weiAmount The value in wei to be converted into tokens\n * @return The number of tokens _weiAmount wei will buy at present time\n */\n function _getTokenAmount(uint256 weiAmount) internal view returns (uint256) {\n uint256 currentRate = getCurrentRate();\n return currentRate.mul(weiAmount);\n }\n}\n", + "sourcePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/crowdsale/price/IncreasingPriceCrowdsale.sol", + "ast": { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/crowdsale/price/IncreasingPriceCrowdsale.sol", + "exportedSymbols": { + "IncreasingPriceCrowdsale": [ + 1523 + ] + }, + "id": 1524, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 1391, + "literals": [ + "solidity", + "^", + "0.5", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "0:23:14" + }, + { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/crowdsale/validation/TimedCrowdsale.sol", + "file": "../validation/TimedCrowdsale.sol", + "id": 1392, + "nodeType": "ImportDirective", + "scope": 1524, + "sourceUnit": 1848, + "src": "25:42:14", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/math/SafeMath.sol", + "file": "../../math/SafeMath.sol", + "id": 1393, + "nodeType": "ImportDirective", + "scope": 1524, + "sourceUnit": 3483, + "src": "68:33:14", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 1394, + "name": "TimedCrowdsale", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 1847, + "src": "480:14:14", + "typeDescriptions": { + "typeIdentifier": "t_contract$_TimedCrowdsale_$1847", + "typeString": "contract TimedCrowdsale" + } + }, + "id": 1395, + "nodeType": "InheritanceSpecifier", + "src": "480:14:14" + } + ], + "contractDependencies": [ + 984, + 1847, + 6830 + ], + "contractKind": "contract", + "documentation": "@title IncreasingPriceCrowdsale\n@dev Extension of Crowdsale contract that increases the price of tokens linearly in time.\nNote that what should be provided to the constructor is the initial and final _rates_, that is,\nthe amount of tokens per wei contributed. Thus, the initial rate must be greater than the final rate.", + "fullyImplemented": false, + "id": 1523, + "linearizedBaseContracts": [ + 1523, + 1847, + 984, + 6830 + ], + "name": "IncreasingPriceCrowdsale", + "nodeType": "ContractDefinition", + "nodes": [ + { + "id": 1398, + "libraryName": { + "contractScope": null, + "id": 1396, + "name": "SafeMath", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 3482, + "src": "507:8:14", + "typeDescriptions": { + "typeIdentifier": "t_contract$_SafeMath_$3482", + "typeString": "library SafeMath" + } + }, + "nodeType": "UsingForDirective", + "src": "501:27:14", + "typeName": { + "id": 1397, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "520:7:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + { + "constant": false, + "id": 1400, + "name": "_initialRate", + "nodeType": "VariableDeclaration", + "scope": 1523, + "src": "534:28:14", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1399, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "534:7:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "private" + }, + { + "constant": false, + "id": 1402, + "name": "_finalRate", + "nodeType": "VariableDeclaration", + "scope": 1523, + "src": "568:26:14", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1401, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "568:7:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "private" + }, + { + "body": { + "id": 1429, + "nodeType": "Block", + "src": "956:149:14", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1412, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1410, + "name": "finalRate", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1406, + "src": "974:9:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 1411, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "986:1:14", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "974:13:14", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 1409, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6848, + 6849 + ], + "referencedDeclaration": 6848, + "src": "966:7:14", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 1413, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "966:22:14", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1414, + "nodeType": "ExpressionStatement", + "src": "966:22:14" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1418, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1416, + "name": "initialRate", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1404, + "src": "1006:11:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "id": 1417, + "name": "finalRate", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1406, + "src": "1020:9:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1006:23:14", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 1415, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6848, + 6849 + ], + "referencedDeclaration": 6848, + "src": "998:7:14", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 1419, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "998:32:14", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1420, + "nodeType": "ExpressionStatement", + "src": "998:32:14" + }, + { + "expression": { + "argumentTypes": null, + "id": 1423, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 1421, + "name": "_initialRate", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1400, + "src": "1040:12:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 1422, + "name": "initialRate", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1404, + "src": "1055:11:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1040:26:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1424, + "nodeType": "ExpressionStatement", + "src": "1040:26:14" + }, + { + "expression": { + "argumentTypes": null, + "id": 1427, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 1425, + "name": "_finalRate", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1402, + "src": "1076:10:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 1426, + "name": "finalRate", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1406, + "src": "1089:9:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1076:22:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1428, + "nodeType": "ExpressionStatement", + "src": "1076:22:14" + } + ] + }, + "documentation": "@dev Constructor, takes initial and final rates of tokens received per wei contributed.\n@param initialRate Number of tokens a buyer gets per wei at the start of the crowdsale\n@param finalRate Number of tokens a buyer gets per wei at the end of the crowdsale", + "id": 1430, + "implemented": true, + "kind": "constructor", + "modifiers": [], + "name": "", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1407, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1404, + "name": "initialRate", + "nodeType": "VariableDeclaration", + "scope": 1430, + "src": "909:19:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1403, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "909:7:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1406, + "name": "finalRate", + "nodeType": "VariableDeclaration", + "scope": 1430, + "src": "930:17:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1405, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "930:7:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "908:40:14" + }, + "returnParameters": { + "id": 1408, + "nodeType": "ParameterList", + "parameters": [], + "src": "956:0:14" + }, + "scope": 1523, + "src": "896:209:14", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 1438, + "nodeType": "Block", + "src": "1307:25:14", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 1435, + "name": "revert", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6850, + 6851 + ], + "referencedDeclaration": 6850, + "src": "1317:6:14", + "typeDescriptions": { + "typeIdentifier": "t_function_revert_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 1436, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1317:8:14", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1437, + "nodeType": "ExpressionStatement", + "src": "1317:8:14" + } + ] + }, + "documentation": "The base rate function is overridden to revert, since this crowdsale doens't use it, and\nall calls to it are a mistake.", + "id": 1439, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "rate", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1431, + "nodeType": "ParameterList", + "parameters": [], + "src": "1274:2:14" + }, + "returnParameters": { + "id": 1434, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1433, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 1439, + "src": "1298:7:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1432, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1298:7:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1297:9:14" + }, + "scope": 1523, + "src": "1261:71:14", + "stateMutability": "view", + "superFunction": 828, + "visibility": "public" + }, + { + "body": { + "id": 1446, + "nodeType": "Block", + "src": "1457:36:14", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 1444, + "name": "_initialRate", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1400, + "src": "1474:12:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 1443, + "id": 1445, + "nodeType": "Return", + "src": "1467:19:14" + } + ] + }, + "documentation": "@return the initial rate of the crowdsale.", + "id": 1447, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "initialRate", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1440, + "nodeType": "ParameterList", + "parameters": [], + "src": "1424:2:14" + }, + "returnParameters": { + "id": 1443, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1442, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 1447, + "src": "1448:7:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1441, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1448:7:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1447:9:14" + }, + "scope": 1523, + "src": "1404:89:14", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 1454, + "nodeType": "Block", + "src": "1614:34:14", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 1452, + "name": "_finalRate", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1402, + "src": "1631:10:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 1451, + "id": 1453, + "nodeType": "Return", + "src": "1624:17:14" + } + ] + }, + "documentation": "@return the final rate of the crowdsale.", + "id": 1455, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "finalRate", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1448, + "nodeType": "ParameterList", + "parameters": [], + "src": "1581:2:14" + }, + "returnParameters": { + "id": 1451, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1450, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 1455, + "src": "1605:7:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1449, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1605:7:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1604:9:14" + }, + "scope": 1523, + "src": "1563:85:14", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 1503, + "nodeType": "Block", + "src": "1939:381:14", + "statements": [ + { + "condition": { + "argumentTypes": null, + "id": 1462, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "1953:9:14", + "subExpression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 1460, + "name": "isOpen", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1818, + "src": "1954:6:14", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_bool_$", + "typeString": "function () view returns (bool)" + } + }, + "id": 1461, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1954:8:14", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 1466, + "nodeType": "IfStatement", + "src": "1949:48:14", + "trueBody": { + "id": 1465, + "nodeType": "Block", + "src": "1964:33:14", + "statements": [ + { + "expression": { + "argumentTypes": null, + "hexValue": "30", + "id": 1463, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1985:1:14", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "functionReturnParameters": 1459, + "id": 1464, + "nodeType": "Return", + "src": "1978:8:14" + } + ] + } + }, + { + "assignments": [ + 1468 + ], + "declarations": [ + { + "constant": false, + "id": 1468, + "name": "elapsedTime", + "nodeType": "VariableDeclaration", + "scope": 1503, + "src": "2061:19:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1467, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2061:7:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1475, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 1472, + "name": "openingTime", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1794, + "src": "2103:11:14", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$", + "typeString": "function () view returns (uint256)" + } + }, + "id": 1473, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2103:13:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1469, + "name": "block", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6835, + "src": "2083:5:14", + "typeDescriptions": { + "typeIdentifier": "t_magic_block", + "typeString": "block" + } + }, + "id": 1470, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "timestamp", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2083:15:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1471, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sub", + "nodeType": "MemberAccess", + "referencedDeclaration": 3437, + "src": "2083:19:14", + "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": 1474, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2083:34:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "2061:56:14" + }, + { + "assignments": [ + 1477 + ], + "declarations": [ + { + "constant": false, + "id": 1477, + "name": "timeRange", + "nodeType": "VariableDeclaration", + "scope": 1503, + "src": "2127:17:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1476, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2127:7:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1484, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 1481, + "name": "openingTime", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1794, + "src": "2165:11:14", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$", + "typeString": "function () view returns (uint256)" + } + }, + "id": 1482, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2165:13:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 1478, + "name": "closingTime", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1802, + "src": "2147:11:14", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$", + "typeString": "function () view returns (uint256)" + } + }, + "id": 1479, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2147:13:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1480, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sub", + "nodeType": "MemberAccess", + "referencedDeclaration": 3437, + "src": "2147:17:14", + "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": 1483, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2147:32:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "2127:52:14" + }, + { + "assignments": [ + 1486 + ], + "declarations": [ + { + "constant": false, + "id": 1486, + "name": "rateRange", + "nodeType": "VariableDeclaration", + "scope": 1503, + "src": "2189:17:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1485, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2189:7:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1491, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1489, + "name": "_finalRate", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1402, + "src": "2226:10:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 1487, + "name": "_initialRate", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1400, + "src": "2209:12:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1488, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sub", + "nodeType": "MemberAccess", + "referencedDeclaration": 3437, + "src": "2209:16:14", + "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": 1490, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2209:28:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "2189:48:14" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1499, + "name": "timeRange", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1477, + "src": "2302:9:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1496, + "name": "rateRange", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1486, + "src": "2287:9:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 1494, + "name": "elapsedTime", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1468, + "src": "2271:11:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1495, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "mul", + "nodeType": "MemberAccess", + "referencedDeclaration": 3389, + "src": "2271:15:14", + "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": 1497, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2271:26:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1498, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "div", + "nodeType": "MemberAccess", + "referencedDeclaration": 3413, + "src": "2271:30:14", + "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": 1500, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2271:41:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 1492, + "name": "_initialRate", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1400, + "src": "2254:12:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1493, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sub", + "nodeType": "MemberAccess", + "referencedDeclaration": 3437, + "src": "2254:16:14", + "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": 1501, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2254:59:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 1459, + "id": 1502, + "nodeType": "Return", + "src": "2247:66:14" + } + ] + }, + "documentation": "@dev Returns the rate of tokens per wei at the present time.\nNote that, as price _increases_ with time, the rate _decreases_.\n@return The number of tokens a buyer gets per wei at a given time", + "id": 1504, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getCurrentRate", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1456, + "nodeType": "ParameterList", + "parameters": [], + "src": "1906:2:14" + }, + "returnParameters": { + "id": 1459, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1458, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 1504, + "src": "1930:7:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1457, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1930:7:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1929:9:14" + }, + "scope": 1523, + "src": "1883:437:14", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 1521, + "nodeType": "Block", + "src": "2634:98:14", + "statements": [ + { + "assignments": [ + 1512 + ], + "declarations": [ + { + "constant": false, + "id": 1512, + "name": "currentRate", + "nodeType": "VariableDeclaration", + "scope": 1521, + "src": "2644:19:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1511, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2644:7:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1515, + "initialValue": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 1513, + "name": "getCurrentRate", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1504, + "src": "2666:14:14", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$", + "typeString": "function () view returns (uint256)" + } + }, + "id": 1514, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2666:16:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "2644:38:14" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1518, + "name": "weiAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1506, + "src": "2715:9:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 1516, + "name": "currentRate", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1512, + "src": "2699:11:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1517, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "mul", + "nodeType": "MemberAccess", + "referencedDeclaration": 3389, + "src": "2699:15:14", + "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": 1519, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2699:26:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 1510, + "id": 1520, + "nodeType": "Return", + "src": "2692:33:14" + } + ] + }, + "documentation": "@dev Overrides parent method taking into account variable rate.\n@param weiAmount The value in wei to be converted into tokens\n@return The number of tokens _weiAmount wei will buy at present time", + "id": 1522, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_getTokenAmount", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1507, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1506, + "name": "weiAmount", + "nodeType": "VariableDeclaration", + "scope": 1522, + "src": "2583:17:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1505, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2583:7:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2582:19:14" + }, + "returnParameters": { + "id": 1510, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1509, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 1522, + "src": "2625:7:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1508, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2625:7:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2624:9:14" + }, + "scope": 1523, + "src": "2558:174:14", + "stateMutability": "view", + "superFunction": 972, + "visibility": "internal" + } + ], + "scope": 1524, + "src": "443:2291:14" + } + ], + "src": "0:2735:14" + }, + "legacyAST": { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/crowdsale/price/IncreasingPriceCrowdsale.sol", + "exportedSymbols": { + "IncreasingPriceCrowdsale": [ + 1523 + ] + }, + "id": 1524, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 1391, + "literals": [ + "solidity", + "^", + "0.5", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "0:23:14" + }, + { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/crowdsale/validation/TimedCrowdsale.sol", + "file": "../validation/TimedCrowdsale.sol", + "id": 1392, + "nodeType": "ImportDirective", + "scope": 1524, + "sourceUnit": 1848, + "src": "25:42:14", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/math/SafeMath.sol", + "file": "../../math/SafeMath.sol", + "id": 1393, + "nodeType": "ImportDirective", + "scope": 1524, + "sourceUnit": 3483, + "src": "68:33:14", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 1394, + "name": "TimedCrowdsale", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 1847, + "src": "480:14:14", + "typeDescriptions": { + "typeIdentifier": "t_contract$_TimedCrowdsale_$1847", + "typeString": "contract TimedCrowdsale" + } + }, + "id": 1395, + "nodeType": "InheritanceSpecifier", + "src": "480:14:14" + } + ], + "contractDependencies": [ + 984, + 1847, + 6830 + ], + "contractKind": "contract", + "documentation": "@title IncreasingPriceCrowdsale\n@dev Extension of Crowdsale contract that increases the price of tokens linearly in time.\nNote that what should be provided to the constructor is the initial and final _rates_, that is,\nthe amount of tokens per wei contributed. Thus, the initial rate must be greater than the final rate.", + "fullyImplemented": false, + "id": 1523, + "linearizedBaseContracts": [ + 1523, + 1847, + 984, + 6830 + ], + "name": "IncreasingPriceCrowdsale", + "nodeType": "ContractDefinition", + "nodes": [ + { + "id": 1398, + "libraryName": { + "contractScope": null, + "id": 1396, + "name": "SafeMath", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 3482, + "src": "507:8:14", + "typeDescriptions": { + "typeIdentifier": "t_contract$_SafeMath_$3482", + "typeString": "library SafeMath" + } + }, + "nodeType": "UsingForDirective", + "src": "501:27:14", + "typeName": { + "id": 1397, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "520:7:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + { + "constant": false, + "id": 1400, + "name": "_initialRate", + "nodeType": "VariableDeclaration", + "scope": 1523, + "src": "534:28:14", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1399, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "534:7:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "private" + }, + { + "constant": false, + "id": 1402, + "name": "_finalRate", + "nodeType": "VariableDeclaration", + "scope": 1523, + "src": "568:26:14", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1401, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "568:7:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "private" + }, + { + "body": { + "id": 1429, + "nodeType": "Block", + "src": "956:149:14", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1412, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1410, + "name": "finalRate", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1406, + "src": "974:9:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 1411, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "986:1:14", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "974:13:14", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 1409, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6848, + 6849 + ], + "referencedDeclaration": 6848, + "src": "966:7:14", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 1413, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "966:22:14", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1414, + "nodeType": "ExpressionStatement", + "src": "966:22:14" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1418, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1416, + "name": "initialRate", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1404, + "src": "1006:11:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "id": 1417, + "name": "finalRate", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1406, + "src": "1020:9:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1006:23:14", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 1415, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6848, + 6849 + ], + "referencedDeclaration": 6848, + "src": "998:7:14", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 1419, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "998:32:14", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1420, + "nodeType": "ExpressionStatement", + "src": "998:32:14" + }, + { + "expression": { + "argumentTypes": null, + "id": 1423, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 1421, + "name": "_initialRate", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1400, + "src": "1040:12:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 1422, + "name": "initialRate", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1404, + "src": "1055:11:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1040:26:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1424, + "nodeType": "ExpressionStatement", + "src": "1040:26:14" + }, + { + "expression": { + "argumentTypes": null, + "id": 1427, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 1425, + "name": "_finalRate", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1402, + "src": "1076:10:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 1426, + "name": "finalRate", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1406, + "src": "1089:9:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1076:22:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1428, + "nodeType": "ExpressionStatement", + "src": "1076:22:14" + } + ] + }, + "documentation": "@dev Constructor, takes initial and final rates of tokens received per wei contributed.\n@param initialRate Number of tokens a buyer gets per wei at the start of the crowdsale\n@param finalRate Number of tokens a buyer gets per wei at the end of the crowdsale", + "id": 1430, + "implemented": true, + "kind": "constructor", + "modifiers": [], + "name": "", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1407, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1404, + "name": "initialRate", + "nodeType": "VariableDeclaration", + "scope": 1430, + "src": "909:19:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1403, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "909:7:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1406, + "name": "finalRate", + "nodeType": "VariableDeclaration", + "scope": 1430, + "src": "930:17:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1405, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "930:7:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "908:40:14" + }, + "returnParameters": { + "id": 1408, + "nodeType": "ParameterList", + "parameters": [], + "src": "956:0:14" + }, + "scope": 1523, + "src": "896:209:14", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 1438, + "nodeType": "Block", + "src": "1307:25:14", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 1435, + "name": "revert", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6850, + 6851 + ], + "referencedDeclaration": 6850, + "src": "1317:6:14", + "typeDescriptions": { + "typeIdentifier": "t_function_revert_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 1436, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1317:8:14", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1437, + "nodeType": "ExpressionStatement", + "src": "1317:8:14" + } + ] + }, + "documentation": "The base rate function is overridden to revert, since this crowdsale doens't use it, and\nall calls to it are a mistake.", + "id": 1439, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "rate", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1431, + "nodeType": "ParameterList", + "parameters": [], + "src": "1274:2:14" + }, + "returnParameters": { + "id": 1434, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1433, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 1439, + "src": "1298:7:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1432, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1298:7:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1297:9:14" + }, + "scope": 1523, + "src": "1261:71:14", + "stateMutability": "view", + "superFunction": 828, + "visibility": "public" + }, + { + "body": { + "id": 1446, + "nodeType": "Block", + "src": "1457:36:14", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 1444, + "name": "_initialRate", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1400, + "src": "1474:12:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 1443, + "id": 1445, + "nodeType": "Return", + "src": "1467:19:14" + } + ] + }, + "documentation": "@return the initial rate of the crowdsale.", + "id": 1447, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "initialRate", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1440, + "nodeType": "ParameterList", + "parameters": [], + "src": "1424:2:14" + }, + "returnParameters": { + "id": 1443, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1442, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 1447, + "src": "1448:7:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1441, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1448:7:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1447:9:14" + }, + "scope": 1523, + "src": "1404:89:14", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 1454, + "nodeType": "Block", + "src": "1614:34:14", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 1452, + "name": "_finalRate", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1402, + "src": "1631:10:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 1451, + "id": 1453, + "nodeType": "Return", + "src": "1624:17:14" + } + ] + }, + "documentation": "@return the final rate of the crowdsale.", + "id": 1455, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "finalRate", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1448, + "nodeType": "ParameterList", + "parameters": [], + "src": "1581:2:14" + }, + "returnParameters": { + "id": 1451, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1450, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 1455, + "src": "1605:7:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1449, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1605:7:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1604:9:14" + }, + "scope": 1523, + "src": "1563:85:14", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 1503, + "nodeType": "Block", + "src": "1939:381:14", + "statements": [ + { + "condition": { + "argumentTypes": null, + "id": 1462, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "1953:9:14", + "subExpression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 1460, + "name": "isOpen", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1818, + "src": "1954:6:14", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_bool_$", + "typeString": "function () view returns (bool)" + } + }, + "id": 1461, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1954:8:14", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 1466, + "nodeType": "IfStatement", + "src": "1949:48:14", + "trueBody": { + "id": 1465, + "nodeType": "Block", + "src": "1964:33:14", + "statements": [ + { + "expression": { + "argumentTypes": null, + "hexValue": "30", + "id": 1463, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1985:1:14", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "functionReturnParameters": 1459, + "id": 1464, + "nodeType": "Return", + "src": "1978:8:14" + } + ] + } + }, + { + "assignments": [ + 1468 + ], + "declarations": [ + { + "constant": false, + "id": 1468, + "name": "elapsedTime", + "nodeType": "VariableDeclaration", + "scope": 1503, + "src": "2061:19:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1467, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2061:7:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1475, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 1472, + "name": "openingTime", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1794, + "src": "2103:11:14", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$", + "typeString": "function () view returns (uint256)" + } + }, + "id": 1473, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2103:13:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1469, + "name": "block", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6835, + "src": "2083:5:14", + "typeDescriptions": { + "typeIdentifier": "t_magic_block", + "typeString": "block" + } + }, + "id": 1470, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "timestamp", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2083:15:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1471, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sub", + "nodeType": "MemberAccess", + "referencedDeclaration": 3437, + "src": "2083:19:14", + "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": 1474, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2083:34:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "2061:56:14" + }, + { + "assignments": [ + 1477 + ], + "declarations": [ + { + "constant": false, + "id": 1477, + "name": "timeRange", + "nodeType": "VariableDeclaration", + "scope": 1503, + "src": "2127:17:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1476, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2127:7:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1484, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 1481, + "name": "openingTime", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1794, + "src": "2165:11:14", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$", + "typeString": "function () view returns (uint256)" + } + }, + "id": 1482, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2165:13:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 1478, + "name": "closingTime", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1802, + "src": "2147:11:14", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$", + "typeString": "function () view returns (uint256)" + } + }, + "id": 1479, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2147:13:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1480, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sub", + "nodeType": "MemberAccess", + "referencedDeclaration": 3437, + "src": "2147:17:14", + "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": 1483, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2147:32:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "2127:52:14" + }, + { + "assignments": [ + 1486 + ], + "declarations": [ + { + "constant": false, + "id": 1486, + "name": "rateRange", + "nodeType": "VariableDeclaration", + "scope": 1503, + "src": "2189:17:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1485, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2189:7:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1491, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1489, + "name": "_finalRate", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1402, + "src": "2226:10:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 1487, + "name": "_initialRate", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1400, + "src": "2209:12:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1488, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sub", + "nodeType": "MemberAccess", + "referencedDeclaration": 3437, + "src": "2209:16:14", + "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": 1490, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2209:28:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "2189:48:14" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1499, + "name": "timeRange", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1477, + "src": "2302:9:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1496, + "name": "rateRange", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1486, + "src": "2287:9:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 1494, + "name": "elapsedTime", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1468, + "src": "2271:11:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1495, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "mul", + "nodeType": "MemberAccess", + "referencedDeclaration": 3389, + "src": "2271:15:14", + "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": 1497, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2271:26:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1498, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "div", + "nodeType": "MemberAccess", + "referencedDeclaration": 3413, + "src": "2271:30:14", + "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": 1500, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2271:41:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 1492, + "name": "_initialRate", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1400, + "src": "2254:12:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1493, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sub", + "nodeType": "MemberAccess", + "referencedDeclaration": 3437, + "src": "2254:16:14", + "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": 1501, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2254:59:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 1459, + "id": 1502, + "nodeType": "Return", + "src": "2247:66:14" + } + ] + }, + "documentation": "@dev Returns the rate of tokens per wei at the present time.\nNote that, as price _increases_ with time, the rate _decreases_.\n@return The number of tokens a buyer gets per wei at a given time", + "id": 1504, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getCurrentRate", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1456, + "nodeType": "ParameterList", + "parameters": [], + "src": "1906:2:14" + }, + "returnParameters": { + "id": 1459, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1458, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 1504, + "src": "1930:7:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1457, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1930:7:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1929:9:14" + }, + "scope": 1523, + "src": "1883:437:14", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 1521, + "nodeType": "Block", + "src": "2634:98:14", + "statements": [ + { + "assignments": [ + 1512 + ], + "declarations": [ + { + "constant": false, + "id": 1512, + "name": "currentRate", + "nodeType": "VariableDeclaration", + "scope": 1521, + "src": "2644:19:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1511, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2644:7:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1515, + "initialValue": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 1513, + "name": "getCurrentRate", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1504, + "src": "2666:14:14", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$", + "typeString": "function () view returns (uint256)" + } + }, + "id": 1514, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2666:16:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "2644:38:14" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1518, + "name": "weiAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1506, + "src": "2715:9:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 1516, + "name": "currentRate", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1512, + "src": "2699:11:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1517, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "mul", + "nodeType": "MemberAccess", + "referencedDeclaration": 3389, + "src": "2699:15:14", + "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": 1519, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2699:26:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 1510, + "id": 1520, + "nodeType": "Return", + "src": "2692:33:14" + } + ] + }, + "documentation": "@dev Overrides parent method taking into account variable rate.\n@param weiAmount The value in wei to be converted into tokens\n@return The number of tokens _weiAmount wei will buy at present time", + "id": 1522, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_getTokenAmount", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1507, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1506, + "name": "weiAmount", + "nodeType": "VariableDeclaration", + "scope": 1522, + "src": "2583:17:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1505, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2583:7:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2582:19:14" + }, + "returnParameters": { + "id": 1510, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1509, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 1522, + "src": "2625:7:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1508, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2625:7:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2624:9:14" + }, + "scope": 1523, + "src": "2558:174:14", + "stateMutability": "view", + "superFunction": 972, + "visibility": "internal" + } + ], + "scope": 1524, + "src": "443:2291:14" + } + ], + "src": "0:2735:14" + }, + "compiler": { + "name": "solc", + "version": "0.5.0+commit.1d4f565a.Emscripten.clang" + }, + "networks": {}, + "schemaVersion": "3.0.0", + "updatedAt": "2019-01-04T21:44:02.873Z", + "devdoc": { + "details": "Extension of Crowdsale contract that increases the price of tokens linearly in time. Note that what should be provided to the constructor is the initial and final _rates_, that is, the amount of tokens per wei contributed. Thus, the initial rate must be greater than the final rate.", + "methods": { + "buyTokens(address)": { + "details": "low level token purchase ***DO NOT OVERRIDE*** This function has a non-reentrancy guard, so it shouldn't be called by another `nonReentrant` function.", + "params": { + "beneficiary": "Recipient of the token purchase" + } + }, + "closingTime()": { + "return": "the crowdsale closing time." + }, + "constructor": { + "details": "Constructor, takes initial and final rates of tokens received per wei contributed.", + "params": { + "finalRate": "Number of tokens a buyer gets per wei at the end of the crowdsale", + "initialRate": "Number of tokens a buyer gets per wei at the start of the crowdsale" + } + }, + "finalRate()": { + "return": "the final rate of the crowdsale." + }, + "getCurrentRate()": { + "details": "Returns the rate of tokens per wei at the present time. Note that, as price _increases_ with time, the rate _decreases_.", + "return": "The number of tokens a buyer gets per wei at a given time" + }, + "hasClosed()": { + "details": "Checks whether the period in which the crowdsale is open has already elapsed.", + "return": "Whether crowdsale period has elapsed" + }, + "initialRate()": { + "return": "the initial rate of the crowdsale." + }, + "isOpen()": { + "return": "true if the crowdsale is open, false otherwise." + }, + "openingTime()": { + "return": "the crowdsale opening time." + }, + "token()": { + "return": "the token being sold." + }, + "wallet()": { + "return": "the address where funds are collected." + }, + "weiRaised()": { + "return": "the amount of wei raised." + } + }, + "title": "IncreasingPriceCrowdsale" + }, + "userdoc": { + "methods": { + "rate()": { + "notice": "The base rate function is overridden to revert, since this crowdsale doens't use it, and all calls to it are a mistake." + } + } + } +} \ No newline at end of file diff --git a/node_modules/openzeppelin-solidity/build/contracts/IndividuallyCappedCrowdsale.json b/node_modules/openzeppelin-solidity/build/contracts/IndividuallyCappedCrowdsale.json new file mode 100644 index 0000000..1821aad --- /dev/null +++ b/node_modules/openzeppelin-solidity/build/contracts/IndividuallyCappedCrowdsale.json @@ -0,0 +1,3046 @@ +{ + "contractName": "IndividuallyCappedCrowdsale", + "abi": [ + { + "constant": true, + "inputs": [], + "name": "rate", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "account", + "type": "address" + } + ], + "name": "isCapper", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "weiRaised", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "wallet", + "outputs": [ + { + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [], + "name": "renounceCapper", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "account", + "type": "address" + } + ], + "name": "addCapper", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "beneficiary", + "type": "address" + } + ], + "name": "buyTokens", + "outputs": [], + "payable": true, + "stateMutability": "payable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "token", + "outputs": [ + { + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "payable": true, + "stateMutability": "payable", + "type": "fallback" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "account", + "type": "address" + } + ], + "name": "CapperAdded", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "account", + "type": "address" + } + ], + "name": "CapperRemoved", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "purchaser", + "type": "address" + }, + { + "indexed": true, + "name": "beneficiary", + "type": "address" + }, + { + "indexed": false, + "name": "value", + "type": "uint256" + }, + { + "indexed": false, + "name": "amount", + "type": "uint256" + } + ], + "name": "TokensPurchased", + "type": "event" + }, + { + "constant": false, + "inputs": [ + { + "name": "beneficiary", + "type": "address" + }, + { + "name": "cap", + "type": "uint256" + } + ], + "name": "setCap", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "beneficiary", + "type": "address" + } + ], + "name": "getCap", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "beneficiary", + "type": "address" + } + ], + "name": "getContribution", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "sourceMap": "", + "deployedSourceMap": "", + "source": "pragma solidity ^0.5.0;\n\nimport \"../../math/SafeMath.sol\";\nimport \"../Crowdsale.sol\";\nimport \"../../access/roles/CapperRole.sol\";\n\n/**\n * @title IndividuallyCappedCrowdsale\n * @dev Crowdsale with per-beneficiary caps.\n */\ncontract IndividuallyCappedCrowdsale is Crowdsale, CapperRole {\n using SafeMath for uint256;\n\n mapping(address => uint256) private _contributions;\n mapping(address => uint256) private _caps;\n\n /**\n * @dev Sets a specific beneficiary's maximum contribution.\n * @param beneficiary Address to be capped\n * @param cap Wei limit for individual contribution\n */\n function setCap(address beneficiary, uint256 cap) external onlyCapper {\n _caps[beneficiary] = cap;\n }\n\n /**\n * @dev Returns the cap of a specific beneficiary.\n * @param beneficiary Address whose cap is to be checked\n * @return Current cap for individual beneficiary\n */\n function getCap(address beneficiary) public view returns (uint256) {\n return _caps[beneficiary];\n }\n\n /**\n * @dev Returns the amount contributed so far by a specific beneficiary.\n * @param beneficiary Address of contributor\n * @return Beneficiary contribution so far\n */\n function getContribution(address beneficiary) public view returns (uint256) {\n return _contributions[beneficiary];\n }\n\n /**\n * @dev Extend parent behavior requiring purchase to respect the beneficiary's funding cap.\n * @param beneficiary Token purchaser\n * @param weiAmount Amount of wei contributed\n */\n function _preValidatePurchase(address beneficiary, uint256 weiAmount) internal view {\n super._preValidatePurchase(beneficiary, weiAmount);\n require(_contributions[beneficiary].add(weiAmount) <= _caps[beneficiary]);\n }\n\n /**\n * @dev Extend parent behavior to update beneficiary contributions\n * @param beneficiary Token purchaser\n * @param weiAmount Amount of wei contributed\n */\n function _updatePurchasingState(address beneficiary, uint256 weiAmount) internal {\n super._updatePurchasingState(beneficiary, weiAmount);\n _contributions[beneficiary] = _contributions[beneficiary].add(weiAmount);\n }\n}\n", + "sourcePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/crowdsale/validation/IndividuallyCappedCrowdsale.sol", + "ast": { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/crowdsale/validation/IndividuallyCappedCrowdsale.sol", + "exportedSymbols": { + "IndividuallyCappedCrowdsale": [ + 1710 + ] + }, + "id": 1711, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 1597, + "literals": [ + "solidity", + "^", + "0.5", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "0:23:16" + }, + { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/math/SafeMath.sol", + "file": "../../math/SafeMath.sol", + "id": 1598, + "nodeType": "ImportDirective", + "scope": 1711, + "sourceUnit": 3483, + "src": "25:33:16", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/crowdsale/Crowdsale.sol", + "file": "../Crowdsale.sol", + "id": 1599, + "nodeType": "ImportDirective", + "scope": 1711, + "sourceUnit": 985, + "src": "59:26:16", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/access/roles/CapperRole.sol", + "file": "../../access/roles/CapperRole.sol", + "id": 1600, + "nodeType": "ImportDirective", + "scope": 1711, + "sourceUnit": 197, + "src": "86:43:16", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 1601, + "name": "Crowdsale", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 984, + "src": "262:9:16", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Crowdsale_$984", + "typeString": "contract Crowdsale" + } + }, + "id": 1602, + "nodeType": "InheritanceSpecifier", + "src": "262:9:16" + }, + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 1603, + "name": "CapperRole", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 196, + "src": "273:10:16", + "typeDescriptions": { + "typeIdentifier": "t_contract$_CapperRole_$196", + "typeString": "contract CapperRole" + } + }, + "id": 1604, + "nodeType": "InheritanceSpecifier", + "src": "273:10:16" + } + ], + "contractDependencies": [ + 196, + 984, + 6830 + ], + "contractKind": "contract", + "documentation": "@title IndividuallyCappedCrowdsale\n@dev Crowdsale with per-beneficiary caps.", + "fullyImplemented": false, + "id": 1710, + "linearizedBaseContracts": [ + 1710, + 196, + 984, + 6830 + ], + "name": "IndividuallyCappedCrowdsale", + "nodeType": "ContractDefinition", + "nodes": [ + { + "id": 1607, + "libraryName": { + "contractScope": null, + "id": 1605, + "name": "SafeMath", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 3482, + "src": "296:8:16", + "typeDescriptions": { + "typeIdentifier": "t_contract$_SafeMath_$3482", + "typeString": "library SafeMath" + } + }, + "nodeType": "UsingForDirective", + "src": "290:27:16", + "typeName": { + "id": 1606, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "309:7:16", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + { + "constant": false, + "id": 1611, + "name": "_contributions", + "nodeType": "VariableDeclaration", + "scope": 1710, + "src": "323:50:16", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + }, + "typeName": { + "id": 1610, + "keyType": { + "id": 1608, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "331:7:16", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "323:27:16", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + }, + "valueType": { + "id": 1609, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "342:7:16", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "value": null, + "visibility": "private" + }, + { + "constant": false, + "id": 1615, + "name": "_caps", + "nodeType": "VariableDeclaration", + "scope": 1710, + "src": "379:41:16", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + }, + "typeName": { + "id": 1614, + "keyType": { + "id": 1612, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "387:7:16", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "379:27:16", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + }, + "valueType": { + "id": 1613, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "398:7:16", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "value": null, + "visibility": "private" + }, + { + "body": { + "id": 1630, + "nodeType": "Block", + "src": "680:41:16", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 1628, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1624, + "name": "_caps", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1615, + "src": "690:5:16", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 1626, + "indexExpression": { + "argumentTypes": null, + "id": 1625, + "name": "beneficiary", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1617, + "src": "696:11:16", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "690:18:16", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 1627, + "name": "cap", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1619, + "src": "711:3:16", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "690:24:16", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1629, + "nodeType": "ExpressionStatement", + "src": "690:24:16" + } + ] + }, + "documentation": "@dev Sets a specific beneficiary's maximum contribution.\n@param beneficiary Address to be capped\n@param cap Wei limit for individual contribution", + "id": 1631, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": null, + "id": 1622, + "modifierName": { + "argumentTypes": null, + "id": 1621, + "name": "onlyCapper", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 129, + "src": "669:10:16", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "669:10:16" + } + ], + "name": "setCap", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1620, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1617, + "name": "beneficiary", + "nodeType": "VariableDeclaration", + "scope": 1631, + "src": "626:19:16", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1616, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "626:7:16", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1619, + "name": "cap", + "nodeType": "VariableDeclaration", + "scope": 1631, + "src": "647:11:16", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1618, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "647:7:16", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "625:34:16" + }, + "returnParameters": { + "id": 1623, + "nodeType": "ParameterList", + "parameters": [], + "src": "680:0:16" + }, + "scope": 1710, + "src": "610:111:16", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "external" + }, + { + "body": { + "id": 1642, + "nodeType": "Block", + "src": "980:42:16", + "statements": [ + { + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1638, + "name": "_caps", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1615, + "src": "997:5:16", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 1640, + "indexExpression": { + "argumentTypes": null, + "id": 1639, + "name": "beneficiary", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1633, + "src": "1003:11:16", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "997:18:16", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 1637, + "id": 1641, + "nodeType": "Return", + "src": "990:25:16" + } + ] + }, + "documentation": "@dev Returns the cap of a specific beneficiary.\n@param beneficiary Address whose cap is to be checked\n@return Current cap for individual beneficiary", + "id": 1643, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getCap", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1634, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1633, + "name": "beneficiary", + "nodeType": "VariableDeclaration", + "scope": 1643, + "src": "929:19:16", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1632, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "929:7:16", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "928:21:16" + }, + "returnParameters": { + "id": 1637, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1636, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 1643, + "src": "971:7:16", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1635, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "971:7:16", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "970:9:16" + }, + "scope": 1710, + "src": "913:109:16", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 1654, + "nodeType": "Block", + "src": "1293:51:16", + "statements": [ + { + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1650, + "name": "_contributions", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1611, + "src": "1310:14:16", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 1652, + "indexExpression": { + "argumentTypes": null, + "id": 1651, + "name": "beneficiary", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1645, + "src": "1325:11:16", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "1310:27:16", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 1649, + "id": 1653, + "nodeType": "Return", + "src": "1303:34:16" + } + ] + }, + "documentation": "@dev Returns the amount contributed so far by a specific beneficiary.\n@param beneficiary Address of contributor\n@return Beneficiary contribution so far", + "id": 1655, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getContribution", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1646, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1645, + "name": "beneficiary", + "nodeType": "VariableDeclaration", + "scope": 1655, + "src": "1242:19:16", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1644, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1242:7:16", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1241:21:16" + }, + "returnParameters": { + "id": 1649, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1648, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 1655, + "src": "1284:7:16", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1647, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1284:7:16", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1283:9:16" + }, + "scope": 1710, + "src": "1217:127:16", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 1682, + "nodeType": "Block", + "src": "1638:150:16", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1665, + "name": "beneficiary", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1657, + "src": "1675:11:16", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1666, + "name": "weiAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1659, + "src": "1688:9:16", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 1662, + "name": "super", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6915, + "src": "1648:5:16", + "typeDescriptions": { + "typeIdentifier": "t_super$_IndividuallyCappedCrowdsale_$1710", + "typeString": "contract super IndividuallyCappedCrowdsale" + } + }, + "id": 1664, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "_preValidatePurchase", + "nodeType": "MemberAccess", + "referencedDeclaration": 915, + "src": "1648:26:16", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256) view" + } + }, + "id": 1667, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1648:50:16", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1668, + "nodeType": "ExpressionStatement", + "src": "1648:50:16" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1679, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1674, + "name": "weiAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1659, + "src": "1748:9:16", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1670, + "name": "_contributions", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1611, + "src": "1716:14:16", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 1672, + "indexExpression": { + "argumentTypes": null, + "id": 1671, + "name": "beneficiary", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1657, + "src": "1731:11:16", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "1716:27:16", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1673, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 3461, + "src": "1716:31:16", + "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": 1675, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1716:42:16", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<=", + "rightExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1676, + "name": "_caps", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1615, + "src": "1762:5:16", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 1678, + "indexExpression": { + "argumentTypes": null, + "id": 1677, + "name": "beneficiary", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1657, + "src": "1768:11:16", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "1762:18:16", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1716:64:16", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 1669, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6848, + 6849 + ], + "referencedDeclaration": 6848, + "src": "1708:7:16", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 1680, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1708:73:16", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1681, + "nodeType": "ExpressionStatement", + "src": "1708:73:16" + } + ] + }, + "documentation": "@dev Extend parent behavior requiring purchase to respect the beneficiary's funding cap.\n@param beneficiary Token purchaser\n@param weiAmount Amount of wei contributed", + "id": 1683, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_preValidatePurchase", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1660, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1657, + "name": "beneficiary", + "nodeType": "VariableDeclaration", + "scope": 1683, + "src": "1584:19:16", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1656, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1584:7:16", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1659, + "name": "weiAmount", + "nodeType": "VariableDeclaration", + "scope": 1683, + "src": "1605:17:16", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1658, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1605:7:16", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1583:40:16" + }, + "returnParameters": { + "id": 1661, + "nodeType": "ParameterList", + "parameters": [], + "src": "1638:0:16" + }, + "scope": 1710, + "src": "1554:234:16", + "stateMutability": "view", + "superFunction": 915, + "visibility": "internal" + }, + { + "body": { + "id": 1708, + "nodeType": "Block", + "src": "2054:151:16", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1693, + "name": "beneficiary", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1685, + "src": "2093:11:16", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1694, + "name": "weiAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1687, + "src": "2106:9:16", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 1690, + "name": "super", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6915, + "src": "2064:5:16", + "typeDescriptions": { + "typeIdentifier": "t_super$_IndividuallyCappedCrowdsale_$1710", + "typeString": "contract super IndividuallyCappedCrowdsale" + } + }, + "id": 1692, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "_updatePurchasingState", + "nodeType": "MemberAccess", + "referencedDeclaration": 959, + "src": "2064:28:16", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 1695, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2064:52:16", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1696, + "nodeType": "ExpressionStatement", + "src": "2064:52:16" + }, + { + "expression": { + "argumentTypes": null, + "id": 1706, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1697, + "name": "_contributions", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1611, + "src": "2126:14:16", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 1699, + "indexExpression": { + "argumentTypes": null, + "id": 1698, + "name": "beneficiary", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1685, + "src": "2141:11:16", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "2126:27:16", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1704, + "name": "weiAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1687, + "src": "2188:9:16", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1700, + "name": "_contributions", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1611, + "src": "2156:14:16", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 1702, + "indexExpression": { + "argumentTypes": null, + "id": 1701, + "name": "beneficiary", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1685, + "src": "2171:11:16", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2156:27:16", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1703, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 3461, + "src": "2156:31:16", + "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": 1705, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2156:42:16", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2126:72:16", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1707, + "nodeType": "ExpressionStatement", + "src": "2126:72:16" + } + ] + }, + "documentation": "@dev Extend parent behavior to update beneficiary contributions\n@param beneficiary Token purchaser\n@param weiAmount Amount of wei contributed", + "id": 1709, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_updatePurchasingState", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1688, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1685, + "name": "beneficiary", + "nodeType": "VariableDeclaration", + "scope": 1709, + "src": "2005:19:16", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1684, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2005:7:16", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1687, + "name": "weiAmount", + "nodeType": "VariableDeclaration", + "scope": 1709, + "src": "2026:17:16", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1686, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2026:7:16", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2004:40:16" + }, + "returnParameters": { + "id": 1689, + "nodeType": "ParameterList", + "parameters": [], + "src": "2054:0:16" + }, + "scope": 1710, + "src": "1973:232:16", + "stateMutability": "nonpayable", + "superFunction": 959, + "visibility": "internal" + } + ], + "scope": 1711, + "src": "222:1985:16" + } + ], + "src": "0:2208:16" + }, + "legacyAST": { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/crowdsale/validation/IndividuallyCappedCrowdsale.sol", + "exportedSymbols": { + "IndividuallyCappedCrowdsale": [ + 1710 + ] + }, + "id": 1711, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 1597, + "literals": [ + "solidity", + "^", + "0.5", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "0:23:16" + }, + { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/math/SafeMath.sol", + "file": "../../math/SafeMath.sol", + "id": 1598, + "nodeType": "ImportDirective", + "scope": 1711, + "sourceUnit": 3483, + "src": "25:33:16", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/crowdsale/Crowdsale.sol", + "file": "../Crowdsale.sol", + "id": 1599, + "nodeType": "ImportDirective", + "scope": 1711, + "sourceUnit": 985, + "src": "59:26:16", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/access/roles/CapperRole.sol", + "file": "../../access/roles/CapperRole.sol", + "id": 1600, + "nodeType": "ImportDirective", + "scope": 1711, + "sourceUnit": 197, + "src": "86:43:16", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 1601, + "name": "Crowdsale", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 984, + "src": "262:9:16", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Crowdsale_$984", + "typeString": "contract Crowdsale" + } + }, + "id": 1602, + "nodeType": "InheritanceSpecifier", + "src": "262:9:16" + }, + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 1603, + "name": "CapperRole", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 196, + "src": "273:10:16", + "typeDescriptions": { + "typeIdentifier": "t_contract$_CapperRole_$196", + "typeString": "contract CapperRole" + } + }, + "id": 1604, + "nodeType": "InheritanceSpecifier", + "src": "273:10:16" + } + ], + "contractDependencies": [ + 196, + 984, + 6830 + ], + "contractKind": "contract", + "documentation": "@title IndividuallyCappedCrowdsale\n@dev Crowdsale with per-beneficiary caps.", + "fullyImplemented": false, + "id": 1710, + "linearizedBaseContracts": [ + 1710, + 196, + 984, + 6830 + ], + "name": "IndividuallyCappedCrowdsale", + "nodeType": "ContractDefinition", + "nodes": [ + { + "id": 1607, + "libraryName": { + "contractScope": null, + "id": 1605, + "name": "SafeMath", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 3482, + "src": "296:8:16", + "typeDescriptions": { + "typeIdentifier": "t_contract$_SafeMath_$3482", + "typeString": "library SafeMath" + } + }, + "nodeType": "UsingForDirective", + "src": "290:27:16", + "typeName": { + "id": 1606, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "309:7:16", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + { + "constant": false, + "id": 1611, + "name": "_contributions", + "nodeType": "VariableDeclaration", + "scope": 1710, + "src": "323:50:16", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + }, + "typeName": { + "id": 1610, + "keyType": { + "id": 1608, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "331:7:16", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "323:27:16", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + }, + "valueType": { + "id": 1609, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "342:7:16", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "value": null, + "visibility": "private" + }, + { + "constant": false, + "id": 1615, + "name": "_caps", + "nodeType": "VariableDeclaration", + "scope": 1710, + "src": "379:41:16", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + }, + "typeName": { + "id": 1614, + "keyType": { + "id": 1612, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "387:7:16", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "379:27:16", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + }, + "valueType": { + "id": 1613, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "398:7:16", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "value": null, + "visibility": "private" + }, + { + "body": { + "id": 1630, + "nodeType": "Block", + "src": "680:41:16", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 1628, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1624, + "name": "_caps", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1615, + "src": "690:5:16", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 1626, + "indexExpression": { + "argumentTypes": null, + "id": 1625, + "name": "beneficiary", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1617, + "src": "696:11:16", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "690:18:16", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 1627, + "name": "cap", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1619, + "src": "711:3:16", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "690:24:16", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1629, + "nodeType": "ExpressionStatement", + "src": "690:24:16" + } + ] + }, + "documentation": "@dev Sets a specific beneficiary's maximum contribution.\n@param beneficiary Address to be capped\n@param cap Wei limit for individual contribution", + "id": 1631, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": null, + "id": 1622, + "modifierName": { + "argumentTypes": null, + "id": 1621, + "name": "onlyCapper", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 129, + "src": "669:10:16", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "669:10:16" + } + ], + "name": "setCap", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1620, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1617, + "name": "beneficiary", + "nodeType": "VariableDeclaration", + "scope": 1631, + "src": "626:19:16", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1616, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "626:7:16", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1619, + "name": "cap", + "nodeType": "VariableDeclaration", + "scope": 1631, + "src": "647:11:16", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1618, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "647:7:16", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "625:34:16" + }, + "returnParameters": { + "id": 1623, + "nodeType": "ParameterList", + "parameters": [], + "src": "680:0:16" + }, + "scope": 1710, + "src": "610:111:16", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "external" + }, + { + "body": { + "id": 1642, + "nodeType": "Block", + "src": "980:42:16", + "statements": [ + { + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1638, + "name": "_caps", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1615, + "src": "997:5:16", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 1640, + "indexExpression": { + "argumentTypes": null, + "id": 1639, + "name": "beneficiary", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1633, + "src": "1003:11:16", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "997:18:16", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 1637, + "id": 1641, + "nodeType": "Return", + "src": "990:25:16" + } + ] + }, + "documentation": "@dev Returns the cap of a specific beneficiary.\n@param beneficiary Address whose cap is to be checked\n@return Current cap for individual beneficiary", + "id": 1643, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getCap", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1634, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1633, + "name": "beneficiary", + "nodeType": "VariableDeclaration", + "scope": 1643, + "src": "929:19:16", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1632, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "929:7:16", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "928:21:16" + }, + "returnParameters": { + "id": 1637, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1636, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 1643, + "src": "971:7:16", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1635, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "971:7:16", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "970:9:16" + }, + "scope": 1710, + "src": "913:109:16", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 1654, + "nodeType": "Block", + "src": "1293:51:16", + "statements": [ + { + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1650, + "name": "_contributions", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1611, + "src": "1310:14:16", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 1652, + "indexExpression": { + "argumentTypes": null, + "id": 1651, + "name": "beneficiary", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1645, + "src": "1325:11:16", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "1310:27:16", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 1649, + "id": 1653, + "nodeType": "Return", + "src": "1303:34:16" + } + ] + }, + "documentation": "@dev Returns the amount contributed so far by a specific beneficiary.\n@param beneficiary Address of contributor\n@return Beneficiary contribution so far", + "id": 1655, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getContribution", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1646, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1645, + "name": "beneficiary", + "nodeType": "VariableDeclaration", + "scope": 1655, + "src": "1242:19:16", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1644, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1242:7:16", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1241:21:16" + }, + "returnParameters": { + "id": 1649, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1648, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 1655, + "src": "1284:7:16", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1647, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1284:7:16", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1283:9:16" + }, + "scope": 1710, + "src": "1217:127:16", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 1682, + "nodeType": "Block", + "src": "1638:150:16", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1665, + "name": "beneficiary", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1657, + "src": "1675:11:16", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1666, + "name": "weiAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1659, + "src": "1688:9:16", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 1662, + "name": "super", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6915, + "src": "1648:5:16", + "typeDescriptions": { + "typeIdentifier": "t_super$_IndividuallyCappedCrowdsale_$1710", + "typeString": "contract super IndividuallyCappedCrowdsale" + } + }, + "id": 1664, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "_preValidatePurchase", + "nodeType": "MemberAccess", + "referencedDeclaration": 915, + "src": "1648:26:16", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256) view" + } + }, + "id": 1667, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1648:50:16", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1668, + "nodeType": "ExpressionStatement", + "src": "1648:50:16" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1679, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1674, + "name": "weiAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1659, + "src": "1748:9:16", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1670, + "name": "_contributions", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1611, + "src": "1716:14:16", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 1672, + "indexExpression": { + "argumentTypes": null, + "id": 1671, + "name": "beneficiary", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1657, + "src": "1731:11:16", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "1716:27:16", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1673, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 3461, + "src": "1716:31:16", + "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": 1675, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1716:42:16", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<=", + "rightExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1676, + "name": "_caps", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1615, + "src": "1762:5:16", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 1678, + "indexExpression": { + "argumentTypes": null, + "id": 1677, + "name": "beneficiary", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1657, + "src": "1768:11:16", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "1762:18:16", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1716:64:16", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 1669, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6848, + 6849 + ], + "referencedDeclaration": 6848, + "src": "1708:7:16", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 1680, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1708:73:16", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1681, + "nodeType": "ExpressionStatement", + "src": "1708:73:16" + } + ] + }, + "documentation": "@dev Extend parent behavior requiring purchase to respect the beneficiary's funding cap.\n@param beneficiary Token purchaser\n@param weiAmount Amount of wei contributed", + "id": 1683, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_preValidatePurchase", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1660, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1657, + "name": "beneficiary", + "nodeType": "VariableDeclaration", + "scope": 1683, + "src": "1584:19:16", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1656, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1584:7:16", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1659, + "name": "weiAmount", + "nodeType": "VariableDeclaration", + "scope": 1683, + "src": "1605:17:16", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1658, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1605:7:16", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1583:40:16" + }, + "returnParameters": { + "id": 1661, + "nodeType": "ParameterList", + "parameters": [], + "src": "1638:0:16" + }, + "scope": 1710, + "src": "1554:234:16", + "stateMutability": "view", + "superFunction": 915, + "visibility": "internal" + }, + { + "body": { + "id": 1708, + "nodeType": "Block", + "src": "2054:151:16", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1693, + "name": "beneficiary", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1685, + "src": "2093:11:16", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1694, + "name": "weiAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1687, + "src": "2106:9:16", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 1690, + "name": "super", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6915, + "src": "2064:5:16", + "typeDescriptions": { + "typeIdentifier": "t_super$_IndividuallyCappedCrowdsale_$1710", + "typeString": "contract super IndividuallyCappedCrowdsale" + } + }, + "id": 1692, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "_updatePurchasingState", + "nodeType": "MemberAccess", + "referencedDeclaration": 959, + "src": "2064:28:16", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 1695, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2064:52:16", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1696, + "nodeType": "ExpressionStatement", + "src": "2064:52:16" + }, + { + "expression": { + "argumentTypes": null, + "id": 1706, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1697, + "name": "_contributions", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1611, + "src": "2126:14:16", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 1699, + "indexExpression": { + "argumentTypes": null, + "id": 1698, + "name": "beneficiary", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1685, + "src": "2141:11:16", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "2126:27:16", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1704, + "name": "weiAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1687, + "src": "2188:9:16", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1700, + "name": "_contributions", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1611, + "src": "2156:14:16", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 1702, + "indexExpression": { + "argumentTypes": null, + "id": 1701, + "name": "beneficiary", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1685, + "src": "2171:11:16", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2156:27:16", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1703, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 3461, + "src": "2156:31:16", + "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": 1705, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2156:42:16", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2126:72:16", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1707, + "nodeType": "ExpressionStatement", + "src": "2126:72:16" + } + ] + }, + "documentation": "@dev Extend parent behavior to update beneficiary contributions\n@param beneficiary Token purchaser\n@param weiAmount Amount of wei contributed", + "id": 1709, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_updatePurchasingState", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1688, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1685, + "name": "beneficiary", + "nodeType": "VariableDeclaration", + "scope": 1709, + "src": "2005:19:16", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1684, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2005:7:16", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1687, + "name": "weiAmount", + "nodeType": "VariableDeclaration", + "scope": 1709, + "src": "2026:17:16", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1686, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2026:7:16", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2004:40:16" + }, + "returnParameters": { + "id": 1689, + "nodeType": "ParameterList", + "parameters": [], + "src": "2054:0:16" + }, + "scope": 1710, + "src": "1973:232:16", + "stateMutability": "nonpayable", + "superFunction": 959, + "visibility": "internal" + } + ], + "scope": 1711, + "src": "222:1985:16" + } + ], + "src": "0:2208:16" + }, + "compiler": { + "name": "solc", + "version": "0.5.0+commit.1d4f565a.Emscripten.clang" + }, + "networks": {}, + "schemaVersion": "3.0.0", + "updatedAt": "2019-01-04T21:44:02.874Z", + "devdoc": { + "details": "Crowdsale with per-beneficiary caps.", + "methods": { + "buyTokens(address)": { + "details": "low level token purchase ***DO NOT OVERRIDE*** This function has a non-reentrancy guard, so it shouldn't be called by another `nonReentrant` function.", + "params": { + "beneficiary": "Recipient of the token purchase" + } + }, + "getCap(address)": { + "details": "Returns the cap of a specific beneficiary.", + "params": { + "beneficiary": "Address whose cap is to be checked" + }, + "return": "Current cap for individual beneficiary" + }, + "getContribution(address)": { + "details": "Returns the amount contributed so far by a specific beneficiary.", + "params": { + "beneficiary": "Address of contributor" + }, + "return": "Beneficiary contribution so far" + }, + "rate()": { + "return": "the number of token units a buyer gets per wei." + }, + "setCap(address,uint256)": { + "details": "Sets a specific beneficiary's maximum contribution.", + "params": { + "beneficiary": "Address to be capped", + "cap": "Wei limit for individual contribution" + } + }, + "token()": { + "return": "the token being sold." + }, + "wallet()": { + "return": "the address where funds are collected." + }, + "weiRaised()": { + "return": "the amount of wei raised." + } + }, + "title": "IndividuallyCappedCrowdsale" + }, + "userdoc": { + "methods": {} + } +} \ No newline at end of file diff --git a/node_modules/openzeppelin-solidity/build/contracts/Math.json b/node_modules/openzeppelin-solidity/build/contracts/Math.json new file mode 100644 index 0000000..640e802 --- /dev/null +++ b/node_modules/openzeppelin-solidity/build/contracts/Math.json @@ -0,0 +1,1885 @@ +{ + "contractName": "Math", + "abi": [], + "bytecode": "0x604c602c600b82828239805160001a60731460008114601c57601e565bfe5b5030600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea165627a7a7230582053f38ee1e68c2f3785332b44d60b179e6614623036855406f580ee67d5caa0050029", + "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea165627a7a7230582053f38ee1e68c2f3785332b44d60b179e6614623036855406f580ee67d5caa0050029", + "sourceMap": "81:744:32:-;;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", + "deployedSourceMap": "81:744:32:-;;;;;;;;", + "source": "pragma solidity ^0.5.0;\n\n/**\n * @title Math\n * @dev Assorted math operations\n */\nlibrary Math {\n /**\n * @dev Returns the largest of two numbers.\n */\n function max(uint256 a, uint256 b) internal pure returns (uint256) {\n return a >= b ? a : b;\n }\n\n /**\n * @dev Returns the smallest of two numbers.\n */\n function min(uint256 a, uint256 b) internal pure returns (uint256) {\n return a < b ? a : b;\n }\n\n /**\n * @dev Calculates the average of two numbers. Since these are integers,\n * averages of an even and odd number cannot be represented, and will be\n * rounded down.\n */\n function average(uint256 a, uint256 b) internal pure returns (uint256) {\n // (a + b) / 2 can overflow, so we distribute\n return (a / 2) + (b / 2) + ((a % 2 + b % 2) / 2);\n }\n}\n", + "sourcePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/math/Math.sol", + "ast": { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/math/Math.sol", + "exportedSymbols": { + "Math": [ + 3354 + ] + }, + "id": 3355, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 3287, + "literals": [ + "solidity", + "^", + "0.5", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "0:23:32" + }, + { + "baseContracts": [], + "contractDependencies": [], + "contractKind": "library", + "documentation": "@title Math\n@dev Assorted math operations", + "fullyImplemented": true, + "id": 3354, + "linearizedBaseContracts": [ + 3354 + ], + "name": "Math", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": { + "id": 3303, + "nodeType": "Block", + "src": "229:38:32", + "statements": [ + { + "expression": { + "argumentTypes": null, + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3298, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 3296, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3289, + "src": "246:1:32", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "argumentTypes": null, + "id": 3297, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3291, + "src": "251:1:32", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "246:6:32", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseExpression": { + "argumentTypes": null, + "id": 3300, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3291, + "src": "259:1:32", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 3301, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "Conditional", + "src": "246:14:32", + "trueExpression": { + "argumentTypes": null, + "id": 3299, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3289, + "src": "255:1:32", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 3295, + "id": 3302, + "nodeType": "Return", + "src": "239:21:32" + } + ] + }, + "documentation": "@dev Returns the largest of two numbers.", + "id": 3304, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "max", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3292, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3289, + "name": "a", + "nodeType": "VariableDeclaration", + "scope": 3304, + "src": "175:9:32", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3288, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "175:7:32", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 3291, + "name": "b", + "nodeType": "VariableDeclaration", + "scope": 3304, + "src": "186:9:32", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3290, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "186:7:32", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "174:22:32" + }, + "returnParameters": { + "id": 3295, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3294, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 3304, + "src": "220:7:32", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3293, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "220:7:32", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "219:9:32" + }, + "scope": 3354, + "src": "162:105:32", + "stateMutability": "pure", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 3320, + "nodeType": "Block", + "src": "403:37:32", + "statements": [ + { + "expression": { + "argumentTypes": null, + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3315, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 3313, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3306, + "src": "420:1:32", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "argumentTypes": null, + "id": 3314, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3308, + "src": "424:1:32", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "420:5:32", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseExpression": { + "argumentTypes": null, + "id": 3317, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3308, + "src": "432:1:32", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 3318, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "Conditional", + "src": "420:13:32", + "trueExpression": { + "argumentTypes": null, + "id": 3316, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3306, + "src": "428:1:32", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 3312, + "id": 3319, + "nodeType": "Return", + "src": "413:20:32" + } + ] + }, + "documentation": "@dev Returns the smallest of two numbers.", + "id": 3321, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "min", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3309, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3306, + "name": "a", + "nodeType": "VariableDeclaration", + "scope": 3321, + "src": "349:9:32", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3305, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "349:7:32", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 3308, + "name": "b", + "nodeType": "VariableDeclaration", + "scope": 3321, + "src": "360:9:32", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3307, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "360:7:32", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "348:22:32" + }, + "returnParameters": { + "id": 3312, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3311, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 3321, + "src": "394:7:32", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3310, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "394:7:32", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "393:9:32" + }, + "scope": 3354, + "src": "336:104:32", + "stateMutability": "pure", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 3352, + "nodeType": "Block", + "src": "704:119:32", + "statements": [ + { + "expression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3350, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3338, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3332, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 3330, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3323, + "src": "776:1:32", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "argumentTypes": null, + "hexValue": "32", + "id": 3331, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "780:1:32", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + }, + "src": "776:5:32", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 3333, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "775:7:32", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3336, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 3334, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3325, + "src": "786:1:32", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "argumentTypes": null, + "hexValue": "32", + "id": 3335, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "790:1:32", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + }, + "src": "786:5:32", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 3337, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "785:7:32", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "775:17:32", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3348, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3345, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3341, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 3339, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3323, + "src": "797:1:32", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "%", + "rightExpression": { + "argumentTypes": null, + "hexValue": "32", + "id": 3340, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "801:1:32", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + }, + "src": "797:5:32", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3344, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 3342, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3325, + "src": "805:1:32", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "%", + "rightExpression": { + "argumentTypes": null, + "hexValue": "32", + "id": 3343, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "809:1:32", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + }, + "src": "805:5:32", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "797:13:32", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 3346, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "796:15:32", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "argumentTypes": null, + "hexValue": "32", + "id": 3347, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "814:1:32", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + }, + "src": "796:19:32", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 3349, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "795:21:32", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "775:41:32", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 3329, + "id": 3351, + "nodeType": "Return", + "src": "768:48:32" + } + ] + }, + "documentation": "@dev Calculates the average of two numbers. Since these are integers,\naverages of an even and odd number cannot be represented, and will be\nrounded down.", + "id": 3353, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "average", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3326, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3323, + "name": "a", + "nodeType": "VariableDeclaration", + "scope": 3353, + "src": "650:9:32", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3322, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "650:7:32", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 3325, + "name": "b", + "nodeType": "VariableDeclaration", + "scope": 3353, + "src": "661:9:32", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3324, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "661:7:32", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "649:22:32" + }, + "returnParameters": { + "id": 3329, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3328, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 3353, + "src": "695:7:32", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3327, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "695:7:32", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "694:9:32" + }, + "scope": 3354, + "src": "633:190:32", + "stateMutability": "pure", + "superFunction": null, + "visibility": "internal" + } + ], + "scope": 3355, + "src": "81:744:32" + } + ], + "src": "0:826:32" + }, + "legacyAST": { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/math/Math.sol", + "exportedSymbols": { + "Math": [ + 3354 + ] + }, + "id": 3355, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 3287, + "literals": [ + "solidity", + "^", + "0.5", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "0:23:32" + }, + { + "baseContracts": [], + "contractDependencies": [], + "contractKind": "library", + "documentation": "@title Math\n@dev Assorted math operations", + "fullyImplemented": true, + "id": 3354, + "linearizedBaseContracts": [ + 3354 + ], + "name": "Math", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": { + "id": 3303, + "nodeType": "Block", + "src": "229:38:32", + "statements": [ + { + "expression": { + "argumentTypes": null, + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3298, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 3296, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3289, + "src": "246:1:32", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "argumentTypes": null, + "id": 3297, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3291, + "src": "251:1:32", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "246:6:32", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseExpression": { + "argumentTypes": null, + "id": 3300, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3291, + "src": "259:1:32", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 3301, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "Conditional", + "src": "246:14:32", + "trueExpression": { + "argumentTypes": null, + "id": 3299, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3289, + "src": "255:1:32", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 3295, + "id": 3302, + "nodeType": "Return", + "src": "239:21:32" + } + ] + }, + "documentation": "@dev Returns the largest of two numbers.", + "id": 3304, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "max", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3292, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3289, + "name": "a", + "nodeType": "VariableDeclaration", + "scope": 3304, + "src": "175:9:32", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3288, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "175:7:32", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 3291, + "name": "b", + "nodeType": "VariableDeclaration", + "scope": 3304, + "src": "186:9:32", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3290, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "186:7:32", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "174:22:32" + }, + "returnParameters": { + "id": 3295, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3294, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 3304, + "src": "220:7:32", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3293, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "220:7:32", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "219:9:32" + }, + "scope": 3354, + "src": "162:105:32", + "stateMutability": "pure", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 3320, + "nodeType": "Block", + "src": "403:37:32", + "statements": [ + { + "expression": { + "argumentTypes": null, + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3315, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 3313, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3306, + "src": "420:1:32", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "argumentTypes": null, + "id": 3314, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3308, + "src": "424:1:32", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "420:5:32", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseExpression": { + "argumentTypes": null, + "id": 3317, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3308, + "src": "432:1:32", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 3318, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "Conditional", + "src": "420:13:32", + "trueExpression": { + "argumentTypes": null, + "id": 3316, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3306, + "src": "428:1:32", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 3312, + "id": 3319, + "nodeType": "Return", + "src": "413:20:32" + } + ] + }, + "documentation": "@dev Returns the smallest of two numbers.", + "id": 3321, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "min", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3309, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3306, + "name": "a", + "nodeType": "VariableDeclaration", + "scope": 3321, + "src": "349:9:32", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3305, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "349:7:32", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 3308, + "name": "b", + "nodeType": "VariableDeclaration", + "scope": 3321, + "src": "360:9:32", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3307, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "360:7:32", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "348:22:32" + }, + "returnParameters": { + "id": 3312, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3311, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 3321, + "src": "394:7:32", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3310, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "394:7:32", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "393:9:32" + }, + "scope": 3354, + "src": "336:104:32", + "stateMutability": "pure", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 3352, + "nodeType": "Block", + "src": "704:119:32", + "statements": [ + { + "expression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3350, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3338, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3332, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 3330, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3323, + "src": "776:1:32", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "argumentTypes": null, + "hexValue": "32", + "id": 3331, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "780:1:32", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + }, + "src": "776:5:32", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 3333, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "775:7:32", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3336, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 3334, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3325, + "src": "786:1:32", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "argumentTypes": null, + "hexValue": "32", + "id": 3335, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "790:1:32", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + }, + "src": "786:5:32", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 3337, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "785:7:32", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "775:17:32", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3348, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3345, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3341, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 3339, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3323, + "src": "797:1:32", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "%", + "rightExpression": { + "argumentTypes": null, + "hexValue": "32", + "id": 3340, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "801:1:32", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + }, + "src": "797:5:32", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3344, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 3342, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3325, + "src": "805:1:32", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "%", + "rightExpression": { + "argumentTypes": null, + "hexValue": "32", + "id": 3343, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "809:1:32", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + }, + "src": "805:5:32", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "797:13:32", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 3346, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "796:15:32", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "argumentTypes": null, + "hexValue": "32", + "id": 3347, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "814:1:32", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + }, + "src": "796:19:32", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 3349, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "795:21:32", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "775:41:32", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 3329, + "id": 3351, + "nodeType": "Return", + "src": "768:48:32" + } + ] + }, + "documentation": "@dev Calculates the average of two numbers. Since these are integers,\naverages of an even and odd number cannot be represented, and will be\nrounded down.", + "id": 3353, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "average", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3326, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3323, + "name": "a", + "nodeType": "VariableDeclaration", + "scope": 3353, + "src": "650:9:32", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3322, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "650:7:32", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 3325, + "name": "b", + "nodeType": "VariableDeclaration", + "scope": 3353, + "src": "661:9:32", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3324, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "661:7:32", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "649:22:32" + }, + "returnParameters": { + "id": 3329, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3328, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 3353, + "src": "695:7:32", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3327, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "695:7:32", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "694:9:32" + }, + "scope": 3354, + "src": "633:190:32", + "stateMutability": "pure", + "superFunction": null, + "visibility": "internal" + } + ], + "scope": 3355, + "src": "81:744:32" + } + ], + "src": "0:826:32" + }, + "compiler": { + "name": "solc", + "version": "0.5.0+commit.1d4f565a.Emscripten.clang" + }, + "networks": {}, + "schemaVersion": "3.0.0", + "updatedAt": "2019-01-04T21:44:02.885Z", + "devdoc": { + "details": "Assorted math operations", + "methods": {}, + "title": "Math" + }, + "userdoc": { + "methods": {} + } +} \ No newline at end of file diff --git a/node_modules/openzeppelin-solidity/build/contracts/MerkleProof.json b/node_modules/openzeppelin-solidity/build/contracts/MerkleProof.json new file mode 100644 index 0000000..af7d39c --- /dev/null +++ b/node_modules/openzeppelin-solidity/build/contracts/MerkleProof.json @@ -0,0 +1,1811 @@ +{ + "contractName": "MerkleProof", + "abi": [], + "bytecode": "0x604c602c600b82828239805160001a60731460008114601c57601e565bfe5b5030600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea165627a7a7230582063efd9265da54eda36354b7b44b575059467fc51e4fa0f20914b1cb6138619280029", + "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea165627a7a7230582063efd9265da54eda36354b7b44b575059467fc51e4fa0f20914b1cb6138619280029", + "sourceMap": "182:1176:21:-;;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", + "deployedSourceMap": "182:1176:21:-;;;;;;;;", + "source": "pragma solidity ^0.5.0;\n\n/**\n * @title MerkleProof\n * @dev Merkle proof verification based on\n * https://github.com/ameensol/merkle-tree-solidity/blob/master/src/MerkleProof.sol\n */\nlibrary MerkleProof {\n /**\n * @dev Verifies a Merkle proof proving the existence of a leaf in a Merkle tree. Assumes that each pair of leaves\n * and each pair of pre-images are sorted.\n * @param proof Merkle proof containing sibling hashes on the branch from the leaf to the root of the Merkle tree\n * @param root Merkle root\n * @param leaf Leaf of Merkle tree\n */\n function verify(bytes32[] memory proof, bytes32 root, bytes32 leaf) internal pure returns (bool) {\n bytes32 computedHash = leaf;\n\n for (uint256 i = 0; i < proof.length; i++) {\n bytes32 proofElement = proof[i];\n\n if (computedHash < proofElement) {\n // Hash(current computed hash + current element of the proof)\n computedHash = keccak256(abi.encodePacked(computedHash, proofElement));\n } else {\n // Hash(current element of the proof + current computed hash)\n computedHash = keccak256(abi.encodePacked(proofElement, computedHash));\n }\n }\n\n // Check if the computed hash (root) is equal to the provided root\n return computedHash == root;\n }\n}\n", + "sourcePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/cryptography/MerkleProof.sol", + "ast": { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/cryptography/MerkleProof.sol", + "exportedSymbols": { + "MerkleProof": [ + 2027 + ] + }, + "id": 2028, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 1960, + "literals": [ + "solidity", + "^", + "0.5", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "0:23:21" + }, + { + "baseContracts": [], + "contractDependencies": [], + "contractKind": "library", + "documentation": "@title MerkleProof\n@dev Merkle proof verification based on\nhttps://github.com/ameensol/merkle-tree-solidity/blob/master/src/MerkleProof.sol", + "fullyImplemented": true, + "id": 2027, + "linearizedBaseContracts": [ + 2027 + ], + "name": "MerkleProof", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": { + "id": 2025, + "nodeType": "Block", + "src": "675:681:21", + "statements": [ + { + "assignments": [ + 1973 + ], + "declarations": [ + { + "constant": false, + "id": 1973, + "name": "computedHash", + "nodeType": "VariableDeclaration", + "scope": 2025, + "src": "685:20:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 1972, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "685:7:21", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1975, + "initialValue": { + "argumentTypes": null, + "id": 1974, + "name": "leaf", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1967, + "src": "708:4:21", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "685:27:21" + }, + { + "body": { + "id": 2019, + "nodeType": "Block", + "src": "766:471:21", + "statements": [ + { + "assignments": [ + 1988 + ], + "declarations": [ + { + "constant": false, + "id": 1988, + "name": "proofElement", + "nodeType": "VariableDeclaration", + "scope": 2019, + "src": "780:20:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 1987, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "780:7:21", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1992, + "initialValue": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1989, + "name": "proof", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1963, + "src": "803:5:21", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[] memory" + } + }, + "id": 1991, + "indexExpression": { + "argumentTypes": null, + "id": 1990, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1977, + "src": "809:1:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "803:8:21", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "780:31:21" + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "id": 1995, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1993, + "name": "computedHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1973, + "src": "830:12:21", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "argumentTypes": null, + "id": 1994, + "name": "proofElement", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1988, + "src": "845:12:21", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "830:27:21", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 2017, + "nodeType": "Block", + "src": "1046:181:21", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 2015, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 2007, + "name": "computedHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1973, + "src": "1142:12:21", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2011, + "name": "proofElement", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1988, + "src": "1184:12:21", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "id": 2012, + "name": "computedHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1973, + "src": "1198:12:21", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "expression": { + "argumentTypes": null, + "id": 2009, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6832, + "src": "1167:3:21", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 2010, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "encodePacked", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "1167:16:21", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$", + "typeString": "function () pure returns (bytes memory)" + } + }, + "id": 2013, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1167:44:21", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 2008, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6839, + "src": "1157:9:21", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 2014, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1157:55:21", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "1142:70:21", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 2016, + "nodeType": "ExpressionStatement", + "src": "1142:70:21" + } + ] + }, + "id": 2018, + "nodeType": "IfStatement", + "src": "826:401:21", + "trueBody": { + "id": 2006, + "nodeType": "Block", + "src": "859:181:21", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 2004, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 1996, + "name": "computedHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1973, + "src": "955:12:21", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2000, + "name": "computedHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1973, + "src": "997:12:21", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "id": 2001, + "name": "proofElement", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1988, + "src": "1011:12:21", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "expression": { + "argumentTypes": null, + "id": 1998, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6832, + "src": "980:3:21", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 1999, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "encodePacked", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "980:16:21", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$", + "typeString": "function () pure returns (bytes memory)" + } + }, + "id": 2002, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "980:44:21", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 1997, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6839, + "src": "970:9:21", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 2003, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "970:55:21", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "955:70:21", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 2005, + "nodeType": "ExpressionStatement", + "src": "955:70:21" + } + ] + } + } + ] + }, + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1983, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1980, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1977, + "src": "743:1:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1981, + "name": "proof", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1963, + "src": "747:5:21", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[] memory" + } + }, + "id": 1982, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "747:12:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "743:16:21", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2020, + "initializationExpression": { + "assignments": [ + 1977 + ], + "declarations": [ + { + "constant": false, + "id": 1977, + "name": "i", + "nodeType": "VariableDeclaration", + "scope": 2020, + "src": "728:9:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1976, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "728:7:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1979, + "initialValue": { + "argumentTypes": null, + "hexValue": "30", + "id": 1978, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "740:1:21", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "728:13:21" + }, + "loopExpression": { + "expression": { + "argumentTypes": null, + "id": 1985, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "761:3:21", + "subExpression": { + "argumentTypes": null, + "id": 1984, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1977, + "src": "761:1:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1986, + "nodeType": "ExpressionStatement", + "src": "761:3:21" + }, + "nodeType": "ForStatement", + "src": "723:514:21" + }, + { + "expression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "id": 2023, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2021, + "name": "computedHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1973, + "src": "1329:12:21", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 2022, + "name": "root", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1965, + "src": "1345:4:21", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "1329:20:21", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 1971, + "id": 2024, + "nodeType": "Return", + "src": "1322:27:21" + } + ] + }, + "documentation": "@dev Verifies a Merkle proof proving the existence of a leaf in a Merkle tree. Assumes that each pair of leaves\nand each pair of pre-images are sorted.\n@param proof Merkle proof containing sibling hashes on the branch from the leaf to the root of the Merkle tree\n@param root Merkle root\n@param leaf Leaf of Merkle tree", + "id": 2026, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "verify", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1968, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1963, + "name": "proof", + "nodeType": "VariableDeclaration", + "scope": 2026, + "src": "594:22:21", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[]" + }, + "typeName": { + "baseType": { + "id": 1961, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "594:7:21", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 1962, + "length": null, + "nodeType": "ArrayTypeName", + "src": "594:9:21", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", + "typeString": "bytes32[]" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1965, + "name": "root", + "nodeType": "VariableDeclaration", + "scope": 2026, + "src": "618:12:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 1964, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "618:7:21", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1967, + "name": "leaf", + "nodeType": "VariableDeclaration", + "scope": 2026, + "src": "632:12:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 1966, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "632:7:21", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "593:52:21" + }, + "returnParameters": { + "id": 1971, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1970, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 2026, + "src": "669:4:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 1969, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "669:4:21", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "668:6:21" + }, + "scope": 2027, + "src": "578:778:21", + "stateMutability": "pure", + "superFunction": null, + "visibility": "internal" + } + ], + "scope": 2028, + "src": "182:1176:21" + } + ], + "src": "0:1359:21" + }, + "legacyAST": { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/cryptography/MerkleProof.sol", + "exportedSymbols": { + "MerkleProof": [ + 2027 + ] + }, + "id": 2028, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 1960, + "literals": [ + "solidity", + "^", + "0.5", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "0:23:21" + }, + { + "baseContracts": [], + "contractDependencies": [], + "contractKind": "library", + "documentation": "@title MerkleProof\n@dev Merkle proof verification based on\nhttps://github.com/ameensol/merkle-tree-solidity/blob/master/src/MerkleProof.sol", + "fullyImplemented": true, + "id": 2027, + "linearizedBaseContracts": [ + 2027 + ], + "name": "MerkleProof", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": { + "id": 2025, + "nodeType": "Block", + "src": "675:681:21", + "statements": [ + { + "assignments": [ + 1973 + ], + "declarations": [ + { + "constant": false, + "id": 1973, + "name": "computedHash", + "nodeType": "VariableDeclaration", + "scope": 2025, + "src": "685:20:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 1972, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "685:7:21", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1975, + "initialValue": { + "argumentTypes": null, + "id": 1974, + "name": "leaf", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1967, + "src": "708:4:21", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "685:27:21" + }, + { + "body": { + "id": 2019, + "nodeType": "Block", + "src": "766:471:21", + "statements": [ + { + "assignments": [ + 1988 + ], + "declarations": [ + { + "constant": false, + "id": 1988, + "name": "proofElement", + "nodeType": "VariableDeclaration", + "scope": 2019, + "src": "780:20:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 1987, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "780:7:21", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1992, + "initialValue": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1989, + "name": "proof", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1963, + "src": "803:5:21", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[] memory" + } + }, + "id": 1991, + "indexExpression": { + "argumentTypes": null, + "id": 1990, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1977, + "src": "809:1:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "803:8:21", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "780:31:21" + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "id": 1995, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1993, + "name": "computedHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1973, + "src": "830:12:21", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "argumentTypes": null, + "id": 1994, + "name": "proofElement", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1988, + "src": "845:12:21", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "830:27:21", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 2017, + "nodeType": "Block", + "src": "1046:181:21", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 2015, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 2007, + "name": "computedHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1973, + "src": "1142:12:21", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2011, + "name": "proofElement", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1988, + "src": "1184:12:21", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "id": 2012, + "name": "computedHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1973, + "src": "1198:12:21", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "expression": { + "argumentTypes": null, + "id": 2009, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6832, + "src": "1167:3:21", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 2010, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "encodePacked", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "1167:16:21", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$", + "typeString": "function () pure returns (bytes memory)" + } + }, + "id": 2013, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1167:44:21", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 2008, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6839, + "src": "1157:9:21", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 2014, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1157:55:21", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "1142:70:21", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 2016, + "nodeType": "ExpressionStatement", + "src": "1142:70:21" + } + ] + }, + "id": 2018, + "nodeType": "IfStatement", + "src": "826:401:21", + "trueBody": { + "id": 2006, + "nodeType": "Block", + "src": "859:181:21", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 2004, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 1996, + "name": "computedHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1973, + "src": "955:12:21", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2000, + "name": "computedHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1973, + "src": "997:12:21", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "id": 2001, + "name": "proofElement", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1988, + "src": "1011:12:21", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "expression": { + "argumentTypes": null, + "id": 1998, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6832, + "src": "980:3:21", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 1999, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "encodePacked", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "980:16:21", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$", + "typeString": "function () pure returns (bytes memory)" + } + }, + "id": 2002, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "980:44:21", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 1997, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6839, + "src": "970:9:21", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 2003, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "970:55:21", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "955:70:21", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 2005, + "nodeType": "ExpressionStatement", + "src": "955:70:21" + } + ] + } + } + ] + }, + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1983, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1980, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1977, + "src": "743:1:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1981, + "name": "proof", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1963, + "src": "747:5:21", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[] memory" + } + }, + "id": 1982, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "747:12:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "743:16:21", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2020, + "initializationExpression": { + "assignments": [ + 1977 + ], + "declarations": [ + { + "constant": false, + "id": 1977, + "name": "i", + "nodeType": "VariableDeclaration", + "scope": 2020, + "src": "728:9:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1976, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "728:7:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1979, + "initialValue": { + "argumentTypes": null, + "hexValue": "30", + "id": 1978, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "740:1:21", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "728:13:21" + }, + "loopExpression": { + "expression": { + "argumentTypes": null, + "id": 1985, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "761:3:21", + "subExpression": { + "argumentTypes": null, + "id": 1984, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1977, + "src": "761:1:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1986, + "nodeType": "ExpressionStatement", + "src": "761:3:21" + }, + "nodeType": "ForStatement", + "src": "723:514:21" + }, + { + "expression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "id": 2023, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2021, + "name": "computedHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1973, + "src": "1329:12:21", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 2022, + "name": "root", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1965, + "src": "1345:4:21", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "1329:20:21", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 1971, + "id": 2024, + "nodeType": "Return", + "src": "1322:27:21" + } + ] + }, + "documentation": "@dev Verifies a Merkle proof proving the existence of a leaf in a Merkle tree. Assumes that each pair of leaves\nand each pair of pre-images are sorted.\n@param proof Merkle proof containing sibling hashes on the branch from the leaf to the root of the Merkle tree\n@param root Merkle root\n@param leaf Leaf of Merkle tree", + "id": 2026, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "verify", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1968, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1963, + "name": "proof", + "nodeType": "VariableDeclaration", + "scope": 2026, + "src": "594:22:21", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[]" + }, + "typeName": { + "baseType": { + "id": 1961, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "594:7:21", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 1962, + "length": null, + "nodeType": "ArrayTypeName", + "src": "594:9:21", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", + "typeString": "bytes32[]" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1965, + "name": "root", + "nodeType": "VariableDeclaration", + "scope": 2026, + "src": "618:12:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 1964, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "618:7:21", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1967, + "name": "leaf", + "nodeType": "VariableDeclaration", + "scope": 2026, + "src": "632:12:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 1966, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "632:7:21", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "593:52:21" + }, + "returnParameters": { + "id": 1971, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1970, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 2026, + "src": "669:4:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 1969, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "669:4:21", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "668:6:21" + }, + "scope": 2027, + "src": "578:778:21", + "stateMutability": "pure", + "superFunction": null, + "visibility": "internal" + } + ], + "scope": 2028, + "src": "182:1176:21" + } + ], + "src": "0:1359:21" + }, + "compiler": { + "name": "solc", + "version": "0.5.0+commit.1d4f565a.Emscripten.clang" + }, + "networks": {}, + "schemaVersion": "3.0.0", + "updatedAt": "2019-01-04T21:44:02.875Z", + "devdoc": { + "details": "Merkle proof verification based on https://github.com/ameensol/merkle-tree-solidity/blob/master/src/MerkleProof.sol", + "methods": {}, + "title": "MerkleProof" + }, + "userdoc": { + "methods": {} + } +} \ No newline at end of file diff --git a/node_modules/openzeppelin-solidity/build/contracts/MintedCrowdsale.json b/node_modules/openzeppelin-solidity/build/contracts/MintedCrowdsale.json new file mode 100644 index 0000000..024bc43 --- /dev/null +++ b/node_modules/openzeppelin-solidity/build/contracts/MintedCrowdsale.json @@ -0,0 +1,929 @@ +{ + "contractName": "MintedCrowdsale", + "abi": [ + { + "constant": true, + "inputs": [], + "name": "rate", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "weiRaised", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "wallet", + "outputs": [ + { + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "beneficiary", + "type": "address" + } + ], + "name": "buyTokens", + "outputs": [], + "payable": true, + "stateMutability": "payable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "token", + "outputs": [ + { + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "payable": true, + "stateMutability": "payable", + "type": "fallback" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "purchaser", + "type": "address" + }, + { + "indexed": true, + "name": "beneficiary", + "type": "address" + }, + { + "indexed": false, + "name": "value", + "type": "uint256" + }, + { + "indexed": false, + "name": "amount", + "type": "uint256" + } + ], + "name": "TokensPurchased", + "type": "event" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "sourceMap": "", + "deployedSourceMap": "", + "source": "pragma solidity ^0.5.0;\n\nimport \"../Crowdsale.sol\";\nimport \"../../token/ERC20/ERC20Mintable.sol\";\n\n/**\n * @title MintedCrowdsale\n * @dev Extension of Crowdsale contract whose tokens are minted in each purchase.\n * Token ownership should be transferred to MintedCrowdsale for minting.\n */\ncontract MintedCrowdsale is Crowdsale {\n /**\n * @dev Overrides delivery by minting tokens upon purchase.\n * @param beneficiary Token purchaser\n * @param tokenAmount Number of tokens to be minted\n */\n function _deliverTokens(address beneficiary, uint256 tokenAmount) internal {\n // Potentially dangerous assumption about the type of the token.\n require(ERC20Mintable(address(token())).mint(beneficiary, tokenAmount));\n }\n}\n", + "sourcePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/crowdsale/emission/MintedCrowdsale.sol", + "ast": { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/crowdsale/emission/MintedCrowdsale.sol", + "exportedSymbols": { + "MintedCrowdsale": [ + 1389 + ] + }, + "id": 1390, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 1363, + "literals": [ + "solidity", + "^", + "0.5", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "0:23:13" + }, + { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/crowdsale/Crowdsale.sol", + "file": "../Crowdsale.sol", + "id": 1364, + "nodeType": "ImportDirective", + "scope": 1390, + "sourceUnit": 985, + "src": "25:26:13", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/token/ERC20/ERC20Mintable.sol", + "file": "../../token/ERC20/ERC20Mintable.sol", + "id": 1365, + "nodeType": "ImportDirective", + "scope": 1390, + "sourceUnit": 4882, + "src": "52:45:13", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 1366, + "name": "Crowdsale", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 984, + "src": "316:9:13", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Crowdsale_$984", + "typeString": "contract Crowdsale" + } + }, + "id": 1367, + "nodeType": "InheritanceSpecifier", + "src": "316:9:13" + } + ], + "contractDependencies": [ + 984, + 6830 + ], + "contractKind": "contract", + "documentation": "@title MintedCrowdsale\n@dev Extension of Crowdsale contract whose tokens are minted in each purchase.\nToken ownership should be transferred to MintedCrowdsale for minting.", + "fullyImplemented": false, + "id": 1389, + "linearizedBaseContracts": [ + 1389, + 984, + 6830 + ], + "name": "MintedCrowdsale", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": { + "id": 1387, + "nodeType": "Block", + "src": "585:161:13", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1382, + "name": "beneficiary", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1369, + "src": "713:11:13", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1383, + "name": "tokenAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1371, + "src": "726:11:13", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 1377, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 812, + "src": "698:5:13", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_IERC20_$5052_$", + "typeString": "function () view returns (contract IERC20)" + } + }, + "id": 1378, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "698:7:13", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$5052", + "typeString": "contract IERC20" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IERC20_$5052", + "typeString": "contract IERC20" + } + ], + "id": 1376, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "690:7:13", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 1379, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "690:16:13", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1375, + "name": "ERC20Mintable", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4881, + "src": "676:13:13", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ERC20Mintable_$4881_$", + "typeString": "type(contract ERC20Mintable)" + } + }, + "id": 1380, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "676:31:13", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20Mintable_$4881", + "typeString": "contract ERC20Mintable" + } + }, + "id": 1381, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "mint", + "nodeType": "MemberAccess", + "referencedDeclaration": 4880, + "src": "676:36:13", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,uint256) external returns (bool)" + } + }, + "id": 1384, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "676:62:13", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 1374, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6848, + 6849 + ], + "referencedDeclaration": 6848, + "src": "668:7:13", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 1385, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "668:71:13", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1386, + "nodeType": "ExpressionStatement", + "src": "668:71:13" + } + ] + }, + "documentation": "@dev Overrides delivery by minting tokens upon purchase.\n@param beneficiary Token purchaser\n@param tokenAmount Number of tokens to be minted", + "id": 1388, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_deliverTokens", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1372, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1369, + "name": "beneficiary", + "nodeType": "VariableDeclaration", + "scope": 1388, + "src": "534:19:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1368, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "534:7:13", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1371, + "name": "tokenAmount", + "nodeType": "VariableDeclaration", + "scope": 1388, + "src": "555:19:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1370, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "555:7:13", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "533:42:13" + }, + "returnParameters": { + "id": 1373, + "nodeType": "ParameterList", + "parameters": [], + "src": "585:0:13" + }, + "scope": 1389, + "src": "510:236:13", + "stateMutability": "nonpayable", + "superFunction": 938, + "visibility": "internal" + } + ], + "scope": 1390, + "src": "288:460:13" + } + ], + "src": "0:749:13" + }, + "legacyAST": { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/crowdsale/emission/MintedCrowdsale.sol", + "exportedSymbols": { + "MintedCrowdsale": [ + 1389 + ] + }, + "id": 1390, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 1363, + "literals": [ + "solidity", + "^", + "0.5", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "0:23:13" + }, + { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/crowdsale/Crowdsale.sol", + "file": "../Crowdsale.sol", + "id": 1364, + "nodeType": "ImportDirective", + "scope": 1390, + "sourceUnit": 985, + "src": "25:26:13", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/token/ERC20/ERC20Mintable.sol", + "file": "../../token/ERC20/ERC20Mintable.sol", + "id": 1365, + "nodeType": "ImportDirective", + "scope": 1390, + "sourceUnit": 4882, + "src": "52:45:13", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 1366, + "name": "Crowdsale", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 984, + "src": "316:9:13", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Crowdsale_$984", + "typeString": "contract Crowdsale" + } + }, + "id": 1367, + "nodeType": "InheritanceSpecifier", + "src": "316:9:13" + } + ], + "contractDependencies": [ + 984, + 6830 + ], + "contractKind": "contract", + "documentation": "@title MintedCrowdsale\n@dev Extension of Crowdsale contract whose tokens are minted in each purchase.\nToken ownership should be transferred to MintedCrowdsale for minting.", + "fullyImplemented": false, + "id": 1389, + "linearizedBaseContracts": [ + 1389, + 984, + 6830 + ], + "name": "MintedCrowdsale", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": { + "id": 1387, + "nodeType": "Block", + "src": "585:161:13", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1382, + "name": "beneficiary", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1369, + "src": "713:11:13", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1383, + "name": "tokenAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1371, + "src": "726:11:13", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 1377, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 812, + "src": "698:5:13", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_IERC20_$5052_$", + "typeString": "function () view returns (contract IERC20)" + } + }, + "id": 1378, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "698:7:13", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$5052", + "typeString": "contract IERC20" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IERC20_$5052", + "typeString": "contract IERC20" + } + ], + "id": 1376, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "690:7:13", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 1379, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "690:16:13", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1375, + "name": "ERC20Mintable", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4881, + "src": "676:13:13", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ERC20Mintable_$4881_$", + "typeString": "type(contract ERC20Mintable)" + } + }, + "id": 1380, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "676:31:13", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20Mintable_$4881", + "typeString": "contract ERC20Mintable" + } + }, + "id": 1381, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "mint", + "nodeType": "MemberAccess", + "referencedDeclaration": 4880, + "src": "676:36:13", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,uint256) external returns (bool)" + } + }, + "id": 1384, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "676:62:13", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 1374, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6848, + 6849 + ], + "referencedDeclaration": 6848, + "src": "668:7:13", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 1385, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "668:71:13", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1386, + "nodeType": "ExpressionStatement", + "src": "668:71:13" + } + ] + }, + "documentation": "@dev Overrides delivery by minting tokens upon purchase.\n@param beneficiary Token purchaser\n@param tokenAmount Number of tokens to be minted", + "id": 1388, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_deliverTokens", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1372, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1369, + "name": "beneficiary", + "nodeType": "VariableDeclaration", + "scope": 1388, + "src": "534:19:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1368, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "534:7:13", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1371, + "name": "tokenAmount", + "nodeType": "VariableDeclaration", + "scope": 1388, + "src": "555:19:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1370, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "555:7:13", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "533:42:13" + }, + "returnParameters": { + "id": 1373, + "nodeType": "ParameterList", + "parameters": [], + "src": "585:0:13" + }, + "scope": 1389, + "src": "510:236:13", + "stateMutability": "nonpayable", + "superFunction": 938, + "visibility": "internal" + } + ], + "scope": 1390, + "src": "288:460:13" + } + ], + "src": "0:749:13" + }, + "compiler": { + "name": "solc", + "version": "0.5.0+commit.1d4f565a.Emscripten.clang" + }, + "networks": {}, + "schemaVersion": "3.0.0", + "updatedAt": "2019-01-04T21:44:02.872Z", + "devdoc": { + "details": "Extension of Crowdsale contract whose tokens are minted in each purchase. Token ownership should be transferred to MintedCrowdsale for minting.", + "methods": { + "buyTokens(address)": { + "details": "low level token purchase ***DO NOT OVERRIDE*** This function has a non-reentrancy guard, so it shouldn't be called by another `nonReentrant` function.", + "params": { + "beneficiary": "Recipient of the token purchase" + } + }, + "rate()": { + "return": "the number of token units a buyer gets per wei." + }, + "token()": { + "return": "the token being sold." + }, + "wallet()": { + "return": "the address where funds are collected." + }, + "weiRaised()": { + "return": "the amount of wei raised." + } + }, + "title": "MintedCrowdsale" + }, + "userdoc": { + "methods": {} + } +} \ No newline at end of file diff --git a/node_modules/openzeppelin-solidity/build/contracts/MinterRole.json b/node_modules/openzeppelin-solidity/build/contracts/MinterRole.json new file mode 100644 index 0000000..58fba56 --- /dev/null +++ b/node_modules/openzeppelin-solidity/build/contracts/MinterRole.json @@ -0,0 +1,2496 @@ +{ + "contractName": "MinterRole", + "abi": [ + { + "inputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "account", + "type": "address" + } + ], + "name": "MinterAdded", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "account", + "type": "address" + } + ], + "name": "MinterRemoved", + "type": "event" + }, + { + "constant": true, + "inputs": [ + { + "name": "account", + "type": "address" + } + ], + "name": "isMinter", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "account", + "type": "address" + } + ], + "name": "addMinter", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [], + "name": "renounceMinter", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "sourceMap": "", + "deployedSourceMap": "", + "source": "pragma solidity ^0.5.0;\n\nimport \"../Roles.sol\";\n\ncontract MinterRole {\n using Roles for Roles.Role;\n\n event MinterAdded(address indexed account);\n event MinterRemoved(address indexed account);\n\n Roles.Role private _minters;\n\n constructor () internal {\n _addMinter(msg.sender);\n }\n\n modifier onlyMinter() {\n require(isMinter(msg.sender));\n _;\n }\n\n function isMinter(address account) public view returns (bool) {\n return _minters.has(account);\n }\n\n function addMinter(address account) public onlyMinter {\n _addMinter(account);\n }\n\n function renounceMinter() public {\n _removeMinter(msg.sender);\n }\n\n function _addMinter(address account) internal {\n _minters.add(account);\n emit MinterAdded(account);\n }\n\n function _removeMinter(address account) internal {\n _minters.remove(account);\n emit MinterRemoved(account);\n }\n}\n", + "sourcePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/access/roles/MinterRole.sol", + "ast": { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/access/roles/MinterRole.sol", + "exportedSymbols": { + "MinterRole": [ + 299 + ] + }, + "id": 300, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 198, + "literals": [ + "solidity", + "^", + "0.5", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "0:23:2" + }, + { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/access/Roles.sol", + "file": "../Roles.sol", + "id": 199, + "nodeType": "ImportDirective", + "scope": 300, + "sourceUnit": 94, + "src": "25:22:2", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [], + "contractDependencies": [], + "contractKind": "contract", + "documentation": null, + "fullyImplemented": true, + "id": 299, + "linearizedBaseContracts": [ + 299 + ], + "name": "MinterRole", + "nodeType": "ContractDefinition", + "nodes": [ + { + "id": 202, + "libraryName": { + "contractScope": null, + "id": 200, + "name": "Roles", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 93, + "src": "81:5:2", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Roles_$93", + "typeString": "library Roles" + } + }, + "nodeType": "UsingForDirective", + "src": "75:27:2", + "typeName": { + "contractScope": null, + "id": 201, + "name": "Roles.Role", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 6, + "src": "91:10:2", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$6_storage_ptr", + "typeString": "struct Roles.Role" + } + } + }, + { + "anonymous": false, + "documentation": null, + "id": 206, + "name": "MinterAdded", + "nodeType": "EventDefinition", + "parameters": { + "id": 205, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 204, + "indexed": true, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 206, + "src": "126:23:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 203, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "126:7:2", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "125:25:2" + }, + "src": "108:43:2" + }, + { + "anonymous": false, + "documentation": null, + "id": 210, + "name": "MinterRemoved", + "nodeType": "EventDefinition", + "parameters": { + "id": 209, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 208, + "indexed": true, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 210, + "src": "176:23:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 207, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "176:7:2", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "175:25:2" + }, + "src": "156:45:2" + }, + { + "constant": false, + "id": 212, + "name": "_minters", + "nodeType": "VariableDeclaration", + "scope": 299, + "src": "207:27:2", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$6_storage", + "typeString": "struct Roles.Role" + }, + "typeName": { + "contractScope": null, + "id": 211, + "name": "Roles.Role", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 6, + "src": "207:10:2", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$6_storage_ptr", + "typeString": "struct Roles.Role" + } + }, + "value": null, + "visibility": "private" + }, + { + "body": { + "id": 220, + "nodeType": "Block", + "src": "265:39:2", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 216, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6845, + "src": "286:3:2", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 217, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "286:10:2", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "id": 215, + "name": "_addMinter", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 282, + "src": "275:10:2", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 218, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "275:22:2", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 219, + "nodeType": "ExpressionStatement", + "src": "275:22:2" + } + ] + }, + "documentation": null, + "id": 221, + "implemented": true, + "kind": "constructor", + "modifiers": [], + "name": "", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 213, + "nodeType": "ParameterList", + "parameters": [], + "src": "253:2:2" + }, + "returnParameters": { + "id": 214, + "nodeType": "ParameterList", + "parameters": [], + "src": "265:0:2" + }, + "scope": 299, + "src": "241:63:2", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 231, + "nodeType": "Block", + "src": "332:57:2", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 225, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6845, + "src": "359:3:2", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 226, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "359:10:2", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "id": 224, + "name": "isMinter", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 245, + "src": "350:8:2", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$", + "typeString": "function (address) view returns (bool)" + } + }, + "id": 227, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "350:20:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 223, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6848, + 6849 + ], + "referencedDeclaration": 6848, + "src": "342:7:2", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 228, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "342:29:2", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 229, + "nodeType": "ExpressionStatement", + "src": "342:29:2" + }, + { + "id": 230, + "nodeType": "PlaceholderStatement", + "src": "381:1:2" + } + ] + }, + "documentation": null, + "id": 232, + "name": "onlyMinter", + "nodeType": "ModifierDefinition", + "parameters": { + "id": 222, + "nodeType": "ParameterList", + "parameters": [], + "src": "329:2:2" + }, + "src": "310:79:2", + "visibility": "internal" + }, + { + "body": { + "id": 244, + "nodeType": "Block", + "src": "457:45:2", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 241, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 234, + "src": "487:7:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 239, + "name": "_minters", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 212, + "src": "474:8:2", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$6_storage", + "typeString": "struct Roles.Role storage ref" + } + }, + "id": 240, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "has", + "nodeType": "MemberAccess", + "referencedDeclaration": 92, + "src": "474:12:2", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_Role_$6_storage_ptr_$_t_address_$returns$_t_bool_$bound_to$_t_struct$_Role_$6_storage_ptr_$", + "typeString": "function (struct Roles.Role storage pointer,address) view returns (bool)" + } + }, + "id": 242, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "474:21:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 238, + "id": 243, + "nodeType": "Return", + "src": "467:28:2" + } + ] + }, + "documentation": null, + "id": 245, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "isMinter", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 235, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 234, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 245, + "src": "413:15:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 233, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "413:7:2", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "412:17:2" + }, + "returnParameters": { + "id": 238, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 237, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 245, + "src": "451:4:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 236, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "451:4:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "450:6:2" + }, + "scope": 299, + "src": "395:107:2", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 256, + "nodeType": "Block", + "src": "562:36:2", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 253, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 247, + "src": "583:7:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 252, + "name": "_addMinter", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 282, + "src": "572:10:2", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 254, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "572:19:2", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 255, + "nodeType": "ExpressionStatement", + "src": "572:19:2" + } + ] + }, + "documentation": null, + "id": 257, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": null, + "id": 250, + "modifierName": { + "argumentTypes": null, + "id": 249, + "name": "onlyMinter", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 232, + "src": "551:10:2", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "551:10:2" + } + ], + "name": "addMinter", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 248, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 247, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 257, + "src": "527:15:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 246, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "527:7:2", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "526:17:2" + }, + "returnParameters": { + "id": 251, + "nodeType": "ParameterList", + "parameters": [], + "src": "562:0:2" + }, + "scope": 299, + "src": "508:90:2", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 265, + "nodeType": "Block", + "src": "637:42:2", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 261, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6845, + "src": "661:3:2", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 262, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "661:10:2", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "id": 260, + "name": "_removeMinter", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 298, + "src": "647:13:2", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 263, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "647:25:2", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 264, + "nodeType": "ExpressionStatement", + "src": "647:25:2" + } + ] + }, + "documentation": null, + "id": 266, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "renounceMinter", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 258, + "nodeType": "ParameterList", + "parameters": [], + "src": "627:2:2" + }, + "returnParameters": { + "id": 259, + "nodeType": "ParameterList", + "parameters": [], + "src": "637:0:2" + }, + "scope": 299, + "src": "604:75:2", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 281, + "nodeType": "Block", + "src": "731:73:2", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 274, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 268, + "src": "754:7:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 271, + "name": "_minters", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 212, + "src": "741:8:2", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$6_storage", + "typeString": "struct Roles.Role storage ref" + } + }, + "id": 273, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 38, + "src": "741:12:2", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Role_$6_storage_ptr_$_t_address_$returns$__$bound_to$_t_struct$_Role_$6_storage_ptr_$", + "typeString": "function (struct Roles.Role storage pointer,address)" + } + }, + "id": 275, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "741:21:2", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 276, + "nodeType": "ExpressionStatement", + "src": "741:21:2" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 278, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 268, + "src": "789:7:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 277, + "name": "MinterAdded", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 206, + "src": "777:11:2", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 279, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "777:20:2", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 280, + "nodeType": "EmitStatement", + "src": "772:25:2" + } + ] + }, + "documentation": null, + "id": 282, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_addMinter", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 269, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 268, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 282, + "src": "705:15:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 267, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "705:7:2", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "704:17:2" + }, + "returnParameters": { + "id": 270, + "nodeType": "ParameterList", + "parameters": [], + "src": "731:0:2" + }, + "scope": 299, + "src": "685:119:2", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 297, + "nodeType": "Block", + "src": "859:78:2", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 290, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 284, + "src": "885:7:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 287, + "name": "_minters", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 212, + "src": "869:8:2", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$6_storage", + "typeString": "struct Roles.Role storage ref" + } + }, + "id": 289, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "remove", + "nodeType": "MemberAccess", + "referencedDeclaration": 69, + "src": "869:15:2", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Role_$6_storage_ptr_$_t_address_$returns$__$bound_to$_t_struct$_Role_$6_storage_ptr_$", + "typeString": "function (struct Roles.Role storage pointer,address)" + } + }, + "id": 291, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "869:24:2", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 292, + "nodeType": "ExpressionStatement", + "src": "869:24:2" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 294, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 284, + "src": "922:7:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 293, + "name": "MinterRemoved", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 210, + "src": "908:13:2", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 295, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "908:22:2", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 296, + "nodeType": "EmitStatement", + "src": "903:27:2" + } + ] + }, + "documentation": null, + "id": 298, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_removeMinter", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 285, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 284, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 298, + "src": "833:15:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 283, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "833:7:2", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "832:17:2" + }, + "returnParameters": { + "id": 286, + "nodeType": "ParameterList", + "parameters": [], + "src": "859:0:2" + }, + "scope": 299, + "src": "810:127:2", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + } + ], + "scope": 300, + "src": "49:890:2" + } + ], + "src": "0:940:2" + }, + "legacyAST": { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/access/roles/MinterRole.sol", + "exportedSymbols": { + "MinterRole": [ + 299 + ] + }, + "id": 300, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 198, + "literals": [ + "solidity", + "^", + "0.5", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "0:23:2" + }, + { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/access/Roles.sol", + "file": "../Roles.sol", + "id": 199, + "nodeType": "ImportDirective", + "scope": 300, + "sourceUnit": 94, + "src": "25:22:2", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [], + "contractDependencies": [], + "contractKind": "contract", + "documentation": null, + "fullyImplemented": true, + "id": 299, + "linearizedBaseContracts": [ + 299 + ], + "name": "MinterRole", + "nodeType": "ContractDefinition", + "nodes": [ + { + "id": 202, + "libraryName": { + "contractScope": null, + "id": 200, + "name": "Roles", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 93, + "src": "81:5:2", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Roles_$93", + "typeString": "library Roles" + } + }, + "nodeType": "UsingForDirective", + "src": "75:27:2", + "typeName": { + "contractScope": null, + "id": 201, + "name": "Roles.Role", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 6, + "src": "91:10:2", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$6_storage_ptr", + "typeString": "struct Roles.Role" + } + } + }, + { + "anonymous": false, + "documentation": null, + "id": 206, + "name": "MinterAdded", + "nodeType": "EventDefinition", + "parameters": { + "id": 205, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 204, + "indexed": true, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 206, + "src": "126:23:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 203, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "126:7:2", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "125:25:2" + }, + "src": "108:43:2" + }, + { + "anonymous": false, + "documentation": null, + "id": 210, + "name": "MinterRemoved", + "nodeType": "EventDefinition", + "parameters": { + "id": 209, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 208, + "indexed": true, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 210, + "src": "176:23:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 207, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "176:7:2", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "175:25:2" + }, + "src": "156:45:2" + }, + { + "constant": false, + "id": 212, + "name": "_minters", + "nodeType": "VariableDeclaration", + "scope": 299, + "src": "207:27:2", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$6_storage", + "typeString": "struct Roles.Role" + }, + "typeName": { + "contractScope": null, + "id": 211, + "name": "Roles.Role", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 6, + "src": "207:10:2", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$6_storage_ptr", + "typeString": "struct Roles.Role" + } + }, + "value": null, + "visibility": "private" + }, + { + "body": { + "id": 220, + "nodeType": "Block", + "src": "265:39:2", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 216, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6845, + "src": "286:3:2", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 217, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "286:10:2", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "id": 215, + "name": "_addMinter", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 282, + "src": "275:10:2", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 218, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "275:22:2", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 219, + "nodeType": "ExpressionStatement", + "src": "275:22:2" + } + ] + }, + "documentation": null, + "id": 221, + "implemented": true, + "kind": "constructor", + "modifiers": [], + "name": "", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 213, + "nodeType": "ParameterList", + "parameters": [], + "src": "253:2:2" + }, + "returnParameters": { + "id": 214, + "nodeType": "ParameterList", + "parameters": [], + "src": "265:0:2" + }, + "scope": 299, + "src": "241:63:2", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 231, + "nodeType": "Block", + "src": "332:57:2", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 225, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6845, + "src": "359:3:2", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 226, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "359:10:2", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "id": 224, + "name": "isMinter", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 245, + "src": "350:8:2", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$", + "typeString": "function (address) view returns (bool)" + } + }, + "id": 227, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "350:20:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 223, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6848, + 6849 + ], + "referencedDeclaration": 6848, + "src": "342:7:2", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 228, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "342:29:2", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 229, + "nodeType": "ExpressionStatement", + "src": "342:29:2" + }, + { + "id": 230, + "nodeType": "PlaceholderStatement", + "src": "381:1:2" + } + ] + }, + "documentation": null, + "id": 232, + "name": "onlyMinter", + "nodeType": "ModifierDefinition", + "parameters": { + "id": 222, + "nodeType": "ParameterList", + "parameters": [], + "src": "329:2:2" + }, + "src": "310:79:2", + "visibility": "internal" + }, + { + "body": { + "id": 244, + "nodeType": "Block", + "src": "457:45:2", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 241, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 234, + "src": "487:7:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 239, + "name": "_minters", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 212, + "src": "474:8:2", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$6_storage", + "typeString": "struct Roles.Role storage ref" + } + }, + "id": 240, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "has", + "nodeType": "MemberAccess", + "referencedDeclaration": 92, + "src": "474:12:2", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_Role_$6_storage_ptr_$_t_address_$returns$_t_bool_$bound_to$_t_struct$_Role_$6_storage_ptr_$", + "typeString": "function (struct Roles.Role storage pointer,address) view returns (bool)" + } + }, + "id": 242, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "474:21:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 238, + "id": 243, + "nodeType": "Return", + "src": "467:28:2" + } + ] + }, + "documentation": null, + "id": 245, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "isMinter", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 235, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 234, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 245, + "src": "413:15:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 233, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "413:7:2", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "412:17:2" + }, + "returnParameters": { + "id": 238, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 237, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 245, + "src": "451:4:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 236, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "451:4:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "450:6:2" + }, + "scope": 299, + "src": "395:107:2", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 256, + "nodeType": "Block", + "src": "562:36:2", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 253, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 247, + "src": "583:7:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 252, + "name": "_addMinter", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 282, + "src": "572:10:2", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 254, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "572:19:2", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 255, + "nodeType": "ExpressionStatement", + "src": "572:19:2" + } + ] + }, + "documentation": null, + "id": 257, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": null, + "id": 250, + "modifierName": { + "argumentTypes": null, + "id": 249, + "name": "onlyMinter", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 232, + "src": "551:10:2", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "551:10:2" + } + ], + "name": "addMinter", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 248, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 247, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 257, + "src": "527:15:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 246, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "527:7:2", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "526:17:2" + }, + "returnParameters": { + "id": 251, + "nodeType": "ParameterList", + "parameters": [], + "src": "562:0:2" + }, + "scope": 299, + "src": "508:90:2", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 265, + "nodeType": "Block", + "src": "637:42:2", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 261, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6845, + "src": "661:3:2", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 262, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "661:10:2", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "id": 260, + "name": "_removeMinter", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 298, + "src": "647:13:2", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 263, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "647:25:2", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 264, + "nodeType": "ExpressionStatement", + "src": "647:25:2" + } + ] + }, + "documentation": null, + "id": 266, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "renounceMinter", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 258, + "nodeType": "ParameterList", + "parameters": [], + "src": "627:2:2" + }, + "returnParameters": { + "id": 259, + "nodeType": "ParameterList", + "parameters": [], + "src": "637:0:2" + }, + "scope": 299, + "src": "604:75:2", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 281, + "nodeType": "Block", + "src": "731:73:2", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 274, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 268, + "src": "754:7:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 271, + "name": "_minters", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 212, + "src": "741:8:2", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$6_storage", + "typeString": "struct Roles.Role storage ref" + } + }, + "id": 273, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 38, + "src": "741:12:2", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Role_$6_storage_ptr_$_t_address_$returns$__$bound_to$_t_struct$_Role_$6_storage_ptr_$", + "typeString": "function (struct Roles.Role storage pointer,address)" + } + }, + "id": 275, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "741:21:2", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 276, + "nodeType": "ExpressionStatement", + "src": "741:21:2" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 278, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 268, + "src": "789:7:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 277, + "name": "MinterAdded", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 206, + "src": "777:11:2", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 279, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "777:20:2", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 280, + "nodeType": "EmitStatement", + "src": "772:25:2" + } + ] + }, + "documentation": null, + "id": 282, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_addMinter", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 269, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 268, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 282, + "src": "705:15:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 267, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "705:7:2", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "704:17:2" + }, + "returnParameters": { + "id": 270, + "nodeType": "ParameterList", + "parameters": [], + "src": "731:0:2" + }, + "scope": 299, + "src": "685:119:2", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 297, + "nodeType": "Block", + "src": "859:78:2", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 290, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 284, + "src": "885:7:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 287, + "name": "_minters", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 212, + "src": "869:8:2", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$6_storage", + "typeString": "struct Roles.Role storage ref" + } + }, + "id": 289, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "remove", + "nodeType": "MemberAccess", + "referencedDeclaration": 69, + "src": "869:15:2", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Role_$6_storage_ptr_$_t_address_$returns$__$bound_to$_t_struct$_Role_$6_storage_ptr_$", + "typeString": "function (struct Roles.Role storage pointer,address)" + } + }, + "id": 291, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "869:24:2", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 292, + "nodeType": "ExpressionStatement", + "src": "869:24:2" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 294, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 284, + "src": "922:7:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 293, + "name": "MinterRemoved", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 210, + "src": "908:13:2", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 295, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "908:22:2", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 296, + "nodeType": "EmitStatement", + "src": "903:27:2" + } + ] + }, + "documentation": null, + "id": 298, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_removeMinter", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 285, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 284, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 298, + "src": "833:15:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 283, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "833:7:2", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "832:17:2" + }, + "returnParameters": { + "id": 286, + "nodeType": "ParameterList", + "parameters": [], + "src": "859:0:2" + }, + "scope": 299, + "src": "810:127:2", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + } + ], + "scope": 300, + "src": "49:890:2" + } + ], + "src": "0:940:2" + }, + "compiler": { + "name": "solc", + "version": "0.5.0+commit.1d4f565a.Emscripten.clang" + }, + "networks": {}, + "schemaVersion": "3.0.0", + "updatedAt": "2019-01-04T21:44:02.867Z", + "devdoc": { + "methods": {} + }, + "userdoc": { + "methods": {} + } +} \ No newline at end of file diff --git a/node_modules/openzeppelin-solidity/build/contracts/Ownable.json b/node_modules/openzeppelin-solidity/build/contracts/Ownable.json new file mode 100644 index 0000000..b01afdb --- /dev/null +++ b/node_modules/openzeppelin-solidity/build/contracts/Ownable.json @@ -0,0 +1,2835 @@ +{ + "contractName": "Ownable", + "abi": [ + { + "inputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "previousOwner", + "type": "address" + }, + { + "indexed": true, + "name": "newOwner", + "type": "address" + } + ], + "name": "OwnershipTransferred", + "type": "event" + }, + { + "constant": true, + "inputs": [], + "name": "owner", + "outputs": [ + { + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "isOwner", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [], + "name": "renounceOwnership", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "newOwner", + "type": "address" + } + ], + "name": "transferOwnership", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "sourceMap": "", + "deployedSourceMap": "", + "source": "pragma solidity ^0.5.0;\n\n/**\n * @title Ownable\n * @dev The Ownable contract has an owner address, and provides basic authorization control\n * functions, this simplifies the implementation of \"user permissions\".\n */\ncontract Ownable {\n address private _owner;\n\n event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);\n\n /**\n * @dev The Ownable constructor sets the original `owner` of the contract to the sender\n * account.\n */\n constructor () internal {\n _owner = msg.sender;\n emit OwnershipTransferred(address(0), _owner);\n }\n\n /**\n * @return the address of the owner.\n */\n function owner() public view returns (address) {\n return _owner;\n }\n\n /**\n * @dev Throws if called by any account other than the owner.\n */\n modifier onlyOwner() {\n require(isOwner());\n _;\n }\n\n /**\n * @return true if `msg.sender` is the owner of the contract.\n */\n function isOwner() public view returns (bool) {\n return msg.sender == _owner;\n }\n\n /**\n * @dev Allows the current owner to relinquish control of the contract.\n * @notice Renouncing to ownership will leave the contract without an owner.\n * It will not be possible to call the functions with the `onlyOwner`\n * modifier anymore.\n */\n function renounceOwnership() public onlyOwner {\n emit OwnershipTransferred(_owner, address(0));\n _owner = address(0);\n }\n\n /**\n * @dev Allows the current owner to transfer control of the contract to a newOwner.\n * @param newOwner The address to transfer ownership to.\n */\n function transferOwnership(address newOwner) public onlyOwner {\n _transferOwnership(newOwner);\n }\n\n /**\n * @dev Transfers control of the contract to a newOwner.\n * @param newOwner The address to transfer ownership to.\n */\n function _transferOwnership(address newOwner) internal {\n require(newOwner != address(0));\n emit OwnershipTransferred(_owner, newOwner);\n _owner = newOwner;\n }\n}\n", + "sourcePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/ownership/Ownable.sol", + "ast": { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/ownership/Ownable.sol", + "exportedSymbols": { + "Ownable": [ + 3591 + ] + }, + "id": 3592, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 3484, + "literals": [ + "solidity", + "^", + "0.5", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "0:23:34" + }, + { + "baseContracts": [], + "contractDependencies": [], + "contractKind": "contract", + "documentation": "@title Ownable\n@dev The Ownable contract has an owner address, and provides basic authorization control\nfunctions, this simplifies the implementation of \"user permissions\".", + "fullyImplemented": true, + "id": 3591, + "linearizedBaseContracts": [ + 3591 + ], + "name": "Ownable", + "nodeType": "ContractDefinition", + "nodes": [ + { + "constant": false, + "id": 3486, + "name": "_owner", + "nodeType": "VariableDeclaration", + "scope": 3591, + "src": "238:22:34", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3485, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "238:7:34", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "private" + }, + { + "anonymous": false, + "documentation": null, + "id": 3492, + "name": "OwnershipTransferred", + "nodeType": "EventDefinition", + "parameters": { + "id": 3491, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3488, + "indexed": true, + "name": "previousOwner", + "nodeType": "VariableDeclaration", + "scope": 3492, + "src": "294:29:34", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3487, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "294:7:34", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 3490, + "indexed": true, + "name": "newOwner", + "nodeType": "VariableDeclaration", + "scope": 3492, + "src": "325:24:34", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3489, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "325:7:34", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "293:57:34" + }, + "src": "267:84:34" + }, + { + "body": { + "id": 3507, + "nodeType": "Block", + "src": "505:91:34", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 3498, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 3495, + "name": "_owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3486, + "src": "515:6:34", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 3496, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6845, + "src": "524:3:34", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 3497, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "524:10:34", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "515:19:34", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 3499, + "nodeType": "ExpressionStatement", + "src": "515:19:34" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 3502, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "578:1:34", + "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": 3501, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "570:7:34", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 3503, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "570:10:34", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 3504, + "name": "_owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3486, + "src": "582:6:34", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 3500, + "name": "OwnershipTransferred", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3492, + "src": "549:20:34", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$", + "typeString": "function (address,address)" + } + }, + "id": 3505, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "549:40:34", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3506, + "nodeType": "EmitStatement", + "src": "544:45:34" + } + ] + }, + "documentation": "@dev The Ownable constructor sets the original `owner` of the contract to the sender\naccount.", + "id": 3508, + "implemented": true, + "kind": "constructor", + "modifiers": [], + "name": "", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3493, + "nodeType": "ParameterList", + "parameters": [], + "src": "493:2:34" + }, + "returnParameters": { + "id": 3494, + "nodeType": "ParameterList", + "parameters": [], + "src": "505:0:34" + }, + "scope": 3591, + "src": "481:115:34", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 3515, + "nodeType": "Block", + "src": "706:30:34", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 3513, + "name": "_owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3486, + "src": "723:6:34", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "functionReturnParameters": 3512, + "id": 3514, + "nodeType": "Return", + "src": "716:13:34" + } + ] + }, + "documentation": "@return the address of the owner.", + "id": 3516, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "owner", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3509, + "nodeType": "ParameterList", + "parameters": [], + "src": "673:2:34" + }, + "returnParameters": { + "id": 3512, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3511, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 3516, + "src": "697:7:34", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3510, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "697:7:34", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "696:9:34" + }, + "scope": 3591, + "src": "659:77:34", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 3524, + "nodeType": "Block", + "src": "845:46:34", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 3519, + "name": "isOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3536, + "src": "863:7:34", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_bool_$", + "typeString": "function () view returns (bool)" + } + }, + "id": 3520, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "863:9:34", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 3518, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6848, + 6849 + ], + "referencedDeclaration": 6848, + "src": "855:7:34", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 3521, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "855:18:34", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3522, + "nodeType": "ExpressionStatement", + "src": "855:18:34" + }, + { + "id": 3523, + "nodeType": "PlaceholderStatement", + "src": "883:1:34" + } + ] + }, + "documentation": "@dev Throws if called by any account other than the owner.", + "id": 3525, + "name": "onlyOwner", + "nodeType": "ModifierDefinition", + "parameters": { + "id": 3517, + "nodeType": "ParameterList", + "parameters": [], + "src": "842:2:34" + }, + "src": "824:67:34", + "visibility": "internal" + }, + { + "body": { + "id": 3535, + "nodeType": "Block", + "src": "1025:44:34", + "statements": [ + { + "expression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 3533, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 3530, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6845, + "src": "1042:3:34", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 3531, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "1042:10:34", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 3532, + "name": "_owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3486, + "src": "1056:6:34", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "1042:20:34", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 3529, + "id": 3534, + "nodeType": "Return", + "src": "1035:27:34" + } + ] + }, + "documentation": "@return true if `msg.sender` is the owner of the contract.", + "id": 3536, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "isOwner", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3526, + "nodeType": "ParameterList", + "parameters": [], + "src": "995:2:34" + }, + "returnParameters": { + "id": 3529, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3528, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 3536, + "src": "1019:4:34", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 3527, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1019:4:34", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1018:6:34" + }, + "scope": 3591, + "src": "979:90:34", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 3554, + "nodeType": "Block", + "src": "1393:91:34", + "statements": [ + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 3542, + "name": "_owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3486, + "src": "1429:6:34", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 3544, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1445:1:34", + "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": 3543, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "1437:7:34", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 3545, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1437:10:34", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "id": 3541, + "name": "OwnershipTransferred", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3492, + "src": "1408:20:34", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$", + "typeString": "function (address,address)" + } + }, + "id": 3546, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1408:40:34", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3547, + "nodeType": "EmitStatement", + "src": "1403:45:34" + }, + { + "expression": { + "argumentTypes": null, + "id": 3552, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 3548, + "name": "_owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3486, + "src": "1458:6:34", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 3550, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1475:1:34", + "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": 3549, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "1467:7:34", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 3551, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1467:10:34", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "1458:19:34", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 3553, + "nodeType": "ExpressionStatement", + "src": "1458:19:34" + } + ] + }, + "documentation": "@dev Allows the current owner to relinquish control of the contract.\n@notice Renouncing to ownership will leave the contract without an owner.\nIt will not be possible to call the functions with the `onlyOwner`\nmodifier anymore.", + "id": 3555, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": null, + "id": 3539, + "modifierName": { + "argumentTypes": null, + "id": 3538, + "name": "onlyOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3525, + "src": "1383:9:34", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "1383:9:34" + } + ], + "name": "renounceOwnership", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3537, + "nodeType": "ParameterList", + "parameters": [], + "src": "1373:2:34" + }, + "returnParameters": { + "id": 3540, + "nodeType": "ParameterList", + "parameters": [], + "src": "1393:0:34" + }, + "scope": 3591, + "src": "1347:137:34", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 3566, + "nodeType": "Block", + "src": "1717:45:34", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 3563, + "name": "newOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3557, + "src": "1746:8:34", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 3562, + "name": "_transferOwnership", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3590, + "src": "1727:18:34", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 3564, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1727:28:34", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3565, + "nodeType": "ExpressionStatement", + "src": "1727:28:34" + } + ] + }, + "documentation": "@dev Allows the current owner to transfer control of the contract to a newOwner.\n@param newOwner The address to transfer ownership to.", + "id": 3567, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": null, + "id": 3560, + "modifierName": { + "argumentTypes": null, + "id": 3559, + "name": "onlyOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3525, + "src": "1707:9:34", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "1707:9:34" + } + ], + "name": "transferOwnership", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3558, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3557, + "name": "newOwner", + "nodeType": "VariableDeclaration", + "scope": 3567, + "src": "1682:16:34", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3556, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1682:7:34", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1681:18:34" + }, + "returnParameters": { + "id": 3561, + "nodeType": "ParameterList", + "parameters": [], + "src": "1717:0:34" + }, + "scope": 3591, + "src": "1655:107:34", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 3589, + "nodeType": "Block", + "src": "1961:128:34", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 3577, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 3573, + "name": "newOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3569, + "src": "1979:8:34", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 3575, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1999:1:34", + "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": 3574, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "1991:7:34", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 3576, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1991:10:34", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "1979:22:34", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 3572, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6848, + 6849 + ], + "referencedDeclaration": 6848, + "src": "1971:7:34", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 3578, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1971:31:34", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3579, + "nodeType": "ExpressionStatement", + "src": "1971:31:34" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 3581, + "name": "_owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3486, + "src": "2038:6:34", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 3582, + "name": "newOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3569, + "src": "2046:8:34", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 3580, + "name": "OwnershipTransferred", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3492, + "src": "2017:20:34", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$", + "typeString": "function (address,address)" + } + }, + "id": 3583, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2017:38:34", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3584, + "nodeType": "EmitStatement", + "src": "2012:43:34" + }, + { + "expression": { + "argumentTypes": null, + "id": 3587, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 3585, + "name": "_owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3486, + "src": "2065:6:34", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 3586, + "name": "newOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3569, + "src": "2074:8:34", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "2065:17:34", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 3588, + "nodeType": "ExpressionStatement", + "src": "2065:17:34" + } + ] + }, + "documentation": "@dev Transfers control of the contract to a newOwner.\n@param newOwner The address to transfer ownership to.", + "id": 3590, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_transferOwnership", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3570, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3569, + "name": "newOwner", + "nodeType": "VariableDeclaration", + "scope": 3590, + "src": "1934:16:34", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3568, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1934:7:34", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1933:18:34" + }, + "returnParameters": { + "id": 3571, + "nodeType": "ParameterList", + "parameters": [], + "src": "1961:0:34" + }, + "scope": 3591, + "src": "1906:183:34", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + } + ], + "scope": 3592, + "src": "215:1876:34" + } + ], + "src": "0:2092:34" + }, + "legacyAST": { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/ownership/Ownable.sol", + "exportedSymbols": { + "Ownable": [ + 3591 + ] + }, + "id": 3592, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 3484, + "literals": [ + "solidity", + "^", + "0.5", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "0:23:34" + }, + { + "baseContracts": [], + "contractDependencies": [], + "contractKind": "contract", + "documentation": "@title Ownable\n@dev The Ownable contract has an owner address, and provides basic authorization control\nfunctions, this simplifies the implementation of \"user permissions\".", + "fullyImplemented": true, + "id": 3591, + "linearizedBaseContracts": [ + 3591 + ], + "name": "Ownable", + "nodeType": "ContractDefinition", + "nodes": [ + { + "constant": false, + "id": 3486, + "name": "_owner", + "nodeType": "VariableDeclaration", + "scope": 3591, + "src": "238:22:34", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3485, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "238:7:34", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "private" + }, + { + "anonymous": false, + "documentation": null, + "id": 3492, + "name": "OwnershipTransferred", + "nodeType": "EventDefinition", + "parameters": { + "id": 3491, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3488, + "indexed": true, + "name": "previousOwner", + "nodeType": "VariableDeclaration", + "scope": 3492, + "src": "294:29:34", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3487, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "294:7:34", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 3490, + "indexed": true, + "name": "newOwner", + "nodeType": "VariableDeclaration", + "scope": 3492, + "src": "325:24:34", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3489, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "325:7:34", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "293:57:34" + }, + "src": "267:84:34" + }, + { + "body": { + "id": 3507, + "nodeType": "Block", + "src": "505:91:34", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 3498, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 3495, + "name": "_owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3486, + "src": "515:6:34", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 3496, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6845, + "src": "524:3:34", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 3497, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "524:10:34", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "515:19:34", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 3499, + "nodeType": "ExpressionStatement", + "src": "515:19:34" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 3502, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "578:1:34", + "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": 3501, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "570:7:34", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 3503, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "570:10:34", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 3504, + "name": "_owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3486, + "src": "582:6:34", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 3500, + "name": "OwnershipTransferred", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3492, + "src": "549:20:34", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$", + "typeString": "function (address,address)" + } + }, + "id": 3505, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "549:40:34", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3506, + "nodeType": "EmitStatement", + "src": "544:45:34" + } + ] + }, + "documentation": "@dev The Ownable constructor sets the original `owner` of the contract to the sender\naccount.", + "id": 3508, + "implemented": true, + "kind": "constructor", + "modifiers": [], + "name": "", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3493, + "nodeType": "ParameterList", + "parameters": [], + "src": "493:2:34" + }, + "returnParameters": { + "id": 3494, + "nodeType": "ParameterList", + "parameters": [], + "src": "505:0:34" + }, + "scope": 3591, + "src": "481:115:34", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 3515, + "nodeType": "Block", + "src": "706:30:34", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 3513, + "name": "_owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3486, + "src": "723:6:34", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "functionReturnParameters": 3512, + "id": 3514, + "nodeType": "Return", + "src": "716:13:34" + } + ] + }, + "documentation": "@return the address of the owner.", + "id": 3516, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "owner", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3509, + "nodeType": "ParameterList", + "parameters": [], + "src": "673:2:34" + }, + "returnParameters": { + "id": 3512, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3511, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 3516, + "src": "697:7:34", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3510, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "697:7:34", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "696:9:34" + }, + "scope": 3591, + "src": "659:77:34", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 3524, + "nodeType": "Block", + "src": "845:46:34", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 3519, + "name": "isOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3536, + "src": "863:7:34", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_bool_$", + "typeString": "function () view returns (bool)" + } + }, + "id": 3520, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "863:9:34", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 3518, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6848, + 6849 + ], + "referencedDeclaration": 6848, + "src": "855:7:34", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 3521, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "855:18:34", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3522, + "nodeType": "ExpressionStatement", + "src": "855:18:34" + }, + { + "id": 3523, + "nodeType": "PlaceholderStatement", + "src": "883:1:34" + } + ] + }, + "documentation": "@dev Throws if called by any account other than the owner.", + "id": 3525, + "name": "onlyOwner", + "nodeType": "ModifierDefinition", + "parameters": { + "id": 3517, + "nodeType": "ParameterList", + "parameters": [], + "src": "842:2:34" + }, + "src": "824:67:34", + "visibility": "internal" + }, + { + "body": { + "id": 3535, + "nodeType": "Block", + "src": "1025:44:34", + "statements": [ + { + "expression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 3533, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 3530, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6845, + "src": "1042:3:34", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 3531, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "1042:10:34", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 3532, + "name": "_owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3486, + "src": "1056:6:34", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "1042:20:34", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 3529, + "id": 3534, + "nodeType": "Return", + "src": "1035:27:34" + } + ] + }, + "documentation": "@return true if `msg.sender` is the owner of the contract.", + "id": 3536, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "isOwner", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3526, + "nodeType": "ParameterList", + "parameters": [], + "src": "995:2:34" + }, + "returnParameters": { + "id": 3529, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3528, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 3536, + "src": "1019:4:34", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 3527, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1019:4:34", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1018:6:34" + }, + "scope": 3591, + "src": "979:90:34", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 3554, + "nodeType": "Block", + "src": "1393:91:34", + "statements": [ + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 3542, + "name": "_owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3486, + "src": "1429:6:34", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 3544, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1445:1:34", + "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": 3543, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "1437:7:34", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 3545, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1437:10:34", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "id": 3541, + "name": "OwnershipTransferred", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3492, + "src": "1408:20:34", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$", + "typeString": "function (address,address)" + } + }, + "id": 3546, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1408:40:34", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3547, + "nodeType": "EmitStatement", + "src": "1403:45:34" + }, + { + "expression": { + "argumentTypes": null, + "id": 3552, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 3548, + "name": "_owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3486, + "src": "1458:6:34", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 3550, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1475:1:34", + "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": 3549, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "1467:7:34", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 3551, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1467:10:34", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "1458:19:34", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 3553, + "nodeType": "ExpressionStatement", + "src": "1458:19:34" + } + ] + }, + "documentation": "@dev Allows the current owner to relinquish control of the contract.\n@notice Renouncing to ownership will leave the contract without an owner.\nIt will not be possible to call the functions with the `onlyOwner`\nmodifier anymore.", + "id": 3555, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": null, + "id": 3539, + "modifierName": { + "argumentTypes": null, + "id": 3538, + "name": "onlyOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3525, + "src": "1383:9:34", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "1383:9:34" + } + ], + "name": "renounceOwnership", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3537, + "nodeType": "ParameterList", + "parameters": [], + "src": "1373:2:34" + }, + "returnParameters": { + "id": 3540, + "nodeType": "ParameterList", + "parameters": [], + "src": "1393:0:34" + }, + "scope": 3591, + "src": "1347:137:34", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 3566, + "nodeType": "Block", + "src": "1717:45:34", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 3563, + "name": "newOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3557, + "src": "1746:8:34", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 3562, + "name": "_transferOwnership", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3590, + "src": "1727:18:34", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 3564, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1727:28:34", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3565, + "nodeType": "ExpressionStatement", + "src": "1727:28:34" + } + ] + }, + "documentation": "@dev Allows the current owner to transfer control of the contract to a newOwner.\n@param newOwner The address to transfer ownership to.", + "id": 3567, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": null, + "id": 3560, + "modifierName": { + "argumentTypes": null, + "id": 3559, + "name": "onlyOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3525, + "src": "1707:9:34", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "1707:9:34" + } + ], + "name": "transferOwnership", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3558, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3557, + "name": "newOwner", + "nodeType": "VariableDeclaration", + "scope": 3567, + "src": "1682:16:34", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3556, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1682:7:34", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1681:18:34" + }, + "returnParameters": { + "id": 3561, + "nodeType": "ParameterList", + "parameters": [], + "src": "1717:0:34" + }, + "scope": 3591, + "src": "1655:107:34", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 3589, + "nodeType": "Block", + "src": "1961:128:34", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 3577, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 3573, + "name": "newOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3569, + "src": "1979:8:34", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 3575, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1999:1:34", + "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": 3574, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "1991:7:34", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 3576, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1991:10:34", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "1979:22:34", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 3572, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6848, + 6849 + ], + "referencedDeclaration": 6848, + "src": "1971:7:34", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 3578, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1971:31:34", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3579, + "nodeType": "ExpressionStatement", + "src": "1971:31:34" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 3581, + "name": "_owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3486, + "src": "2038:6:34", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 3582, + "name": "newOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3569, + "src": "2046:8:34", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 3580, + "name": "OwnershipTransferred", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3492, + "src": "2017:20:34", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$", + "typeString": "function (address,address)" + } + }, + "id": 3583, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2017:38:34", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3584, + "nodeType": "EmitStatement", + "src": "2012:43:34" + }, + { + "expression": { + "argumentTypes": null, + "id": 3587, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 3585, + "name": "_owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3486, + "src": "2065:6:34", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 3586, + "name": "newOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3569, + "src": "2074:8:34", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "2065:17:34", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 3588, + "nodeType": "ExpressionStatement", + "src": "2065:17:34" + } + ] + }, + "documentation": "@dev Transfers control of the contract to a newOwner.\n@param newOwner The address to transfer ownership to.", + "id": 3590, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_transferOwnership", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3570, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3569, + "name": "newOwner", + "nodeType": "VariableDeclaration", + "scope": 3590, + "src": "1934:16:34", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3568, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1934:7:34", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1933:18:34" + }, + "returnParameters": { + "id": 3571, + "nodeType": "ParameterList", + "parameters": [], + "src": "1961:0:34" + }, + "scope": 3591, + "src": "1906:183:34", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + } + ], + "scope": 3592, + "src": "215:1876:34" + } + ], + "src": "0:2092:34" + }, + "compiler": { + "name": "solc", + "version": "0.5.0+commit.1d4f565a.Emscripten.clang" + }, + "networks": {}, + "schemaVersion": "3.0.0", + "updatedAt": "2019-01-04T21:44:02.886Z", + "devdoc": { + "details": "The Ownable contract has an owner address, and provides basic authorization control functions, this simplifies the implementation of \"user permissions\".", + "methods": { + "constructor": { + "details": "The Ownable constructor sets the original `owner` of the contract to the sender account." + }, + "isOwner()": { + "return": "true if `msg.sender` is the owner of the contract." + }, + "owner()": { + "return": "the address of the owner." + }, + "renounceOwnership()": { + "details": "Allows the current owner to relinquish control of the contract." + }, + "transferOwnership(address)": { + "details": "Allows the current owner to transfer control of the contract to a newOwner.", + "params": { + "newOwner": "The address to transfer ownership to." + } + } + }, + "title": "Ownable" + }, + "userdoc": { + "methods": { + "renounceOwnership()": { + "notice": "Renouncing to ownership will leave the contract without an owner. It will not be possible to call the functions with the `onlyOwner` modifier anymore." + } + } + } +} \ No newline at end of file diff --git a/node_modules/openzeppelin-solidity/build/contracts/Pausable.json b/node_modules/openzeppelin-solidity/build/contracts/Pausable.json new file mode 100644 index 0000000..ad66cb0 --- /dev/null +++ b/node_modules/openzeppelin-solidity/build/contracts/Pausable.json @@ -0,0 +1,1998 @@ +{ + "contractName": "Pausable", + "abi": [ + { + "constant": true, + "inputs": [ + { + "name": "account", + "type": "address" + } + ], + "name": "isPauser", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [], + "name": "renouncePauser", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "account", + "type": "address" + } + ], + "name": "addPauser", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "name": "account", + "type": "address" + } + ], + "name": "Paused", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "name": "account", + "type": "address" + } + ], + "name": "Unpaused", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "account", + "type": "address" + } + ], + "name": "PauserAdded", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "account", + "type": "address" + } + ], + "name": "PauserRemoved", + "type": "event" + }, + { + "constant": true, + "inputs": [], + "name": "paused", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [], + "name": "pause", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [], + "name": "unpause", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "sourceMap": "", + "deployedSourceMap": "", + "source": "pragma solidity ^0.5.0;\n\nimport \"../access/roles/PauserRole.sol\";\n\n/**\n * @title Pausable\n * @dev Base contract which allows children to implement an emergency stop mechanism.\n */\ncontract Pausable is PauserRole {\n event Paused(address account);\n event Unpaused(address account);\n\n bool private _paused;\n\n constructor () internal {\n _paused = false;\n }\n\n /**\n * @return true if the contract is paused, false otherwise.\n */\n function paused() public view returns (bool) {\n return _paused;\n }\n\n /**\n * @dev Modifier to make a function callable only when the contract is not paused.\n */\n modifier whenNotPaused() {\n require(!_paused);\n _;\n }\n\n /**\n * @dev Modifier to make a function callable only when the contract is paused.\n */\n modifier whenPaused() {\n require(_paused);\n _;\n }\n\n /**\n * @dev called by the owner to pause, triggers stopped state\n */\n function pause() public onlyPauser whenNotPaused {\n _paused = true;\n emit Paused(msg.sender);\n }\n\n /**\n * @dev called by the owner to unpause, returns to normal state\n */\n function unpause() public onlyPauser whenPaused {\n _paused = false;\n emit Unpaused(msg.sender);\n }\n}\n", + "sourcePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/lifecycle/Pausable.sol", + "ast": { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/lifecycle/Pausable.sol", + "exportedSymbols": { + "Pausable": [ + 3285 + ] + }, + "id": 3286, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 3204, + "literals": [ + "solidity", + "^", + "0.5", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "0:23:31" + }, + { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/access/roles/PauserRole.sol", + "file": "../access/roles/PauserRole.sol", + "id": 3205, + "nodeType": "ImportDirective", + "scope": 3286, + "sourceUnit": 403, + "src": "25:40:31", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 3206, + "name": "PauserRole", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 402, + "src": "201:10:31", + "typeDescriptions": { + "typeIdentifier": "t_contract$_PauserRole_$402", + "typeString": "contract PauserRole" + } + }, + "id": 3207, + "nodeType": "InheritanceSpecifier", + "src": "201:10:31" + } + ], + "contractDependencies": [ + 402 + ], + "contractKind": "contract", + "documentation": "@title Pausable\n@dev Base contract which allows children to implement an emergency stop mechanism.", + "fullyImplemented": true, + "id": 3285, + "linearizedBaseContracts": [ + 3285, + 402 + ], + "name": "Pausable", + "nodeType": "ContractDefinition", + "nodes": [ + { + "anonymous": false, + "documentation": null, + "id": 3211, + "name": "Paused", + "nodeType": "EventDefinition", + "parameters": { + "id": 3210, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3209, + "indexed": false, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 3211, + "src": "231:15:31", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3208, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "231:7:31", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "230:17:31" + }, + "src": "218:30:31" + }, + { + "anonymous": false, + "documentation": null, + "id": 3215, + "name": "Unpaused", + "nodeType": "EventDefinition", + "parameters": { + "id": 3214, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3213, + "indexed": false, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 3215, + "src": "268:15:31", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3212, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "268:7:31", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "267:17:31" + }, + "src": "253:32:31" + }, + { + "constant": false, + "id": 3217, + "name": "_paused", + "nodeType": "VariableDeclaration", + "scope": 3285, + "src": "291:20:31", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 3216, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "291:4:31", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "private" + }, + { + "body": { + "id": 3224, + "nodeType": "Block", + "src": "342:32:31", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 3222, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 3220, + "name": "_paused", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3217, + "src": "352:7:31", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "66616c7365", + "id": 3221, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "362:5:31", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "src": "352:15:31", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 3223, + "nodeType": "ExpressionStatement", + "src": "352:15:31" + } + ] + }, + "documentation": null, + "id": 3225, + "implemented": true, + "kind": "constructor", + "modifiers": [], + "name": "", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3218, + "nodeType": "ParameterList", + "parameters": [], + "src": "330:2:31" + }, + "returnParameters": { + "id": 3219, + "nodeType": "ParameterList", + "parameters": [], + "src": "342:0:31" + }, + "scope": 3285, + "src": "318:56:31", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 3232, + "nodeType": "Block", + "src": "505:31:31", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 3230, + "name": "_paused", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3217, + "src": "522:7:31", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 3229, + "id": 3231, + "nodeType": "Return", + "src": "515:14:31" + } + ] + }, + "documentation": "@return true if the contract is paused, false otherwise.", + "id": 3233, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "paused", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3226, + "nodeType": "ParameterList", + "parameters": [], + "src": "475:2:31" + }, + "returnParameters": { + "id": 3229, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3228, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 3233, + "src": "499:4:31", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 3227, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "499:4:31", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "498:6:31" + }, + "scope": 3285, + "src": "460:76:31", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 3241, + "nodeType": "Block", + "src": "670:45:31", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 3237, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "688:8:31", + "subExpression": { + "argumentTypes": null, + "id": 3236, + "name": "_paused", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3217, + "src": "689:7:31", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 3235, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6848, + 6849 + ], + "referencedDeclaration": 6848, + "src": "680:7:31", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 3238, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "680:17:31", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3239, + "nodeType": "ExpressionStatement", + "src": "680:17:31" + }, + { + "id": 3240, + "nodeType": "PlaceholderStatement", + "src": "707:1:31" + } + ] + }, + "documentation": "@dev Modifier to make a function callable only when the contract is not paused.", + "id": 3242, + "name": "whenNotPaused", + "nodeType": "ModifierDefinition", + "parameters": { + "id": 3234, + "nodeType": "ParameterList", + "parameters": [], + "src": "667:2:31" + }, + "src": "645:70:31", + "visibility": "internal" + }, + { + "body": { + "id": 3249, + "nodeType": "Block", + "src": "842:44:31", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 3245, + "name": "_paused", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3217, + "src": "860:7:31", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 3244, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6848, + 6849 + ], + "referencedDeclaration": 6848, + "src": "852:7:31", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 3246, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "852:16:31", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3247, + "nodeType": "ExpressionStatement", + "src": "852:16:31" + }, + { + "id": 3248, + "nodeType": "PlaceholderStatement", + "src": "878:1:31" + } + ] + }, + "documentation": "@dev Modifier to make a function callable only when the contract is paused.", + "id": 3250, + "name": "whenPaused", + "nodeType": "ModifierDefinition", + "parameters": { + "id": 3243, + "nodeType": "ParameterList", + "parameters": [], + "src": "839:2:31" + }, + "src": "820:66:31", + "visibility": "internal" + }, + { + "body": { + "id": 3266, + "nodeType": "Block", + "src": "1022:64:31", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 3259, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 3257, + "name": "_paused", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3217, + "src": "1032:7:31", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 3258, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1042:4:31", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "src": "1032:14:31", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 3260, + "nodeType": "ExpressionStatement", + "src": "1032:14:31" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 3262, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6845, + "src": "1068:3:31", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 3263, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "1068:10:31", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "id": 3261, + "name": "Paused", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3211, + "src": "1061:6:31", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 3264, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1061:18:31", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3265, + "nodeType": "EmitStatement", + "src": "1056:23:31" + } + ] + }, + "documentation": "@dev called by the owner to pause, triggers stopped state", + "id": 3267, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": null, + "id": 3253, + "modifierName": { + "argumentTypes": null, + "id": 3252, + "name": "onlyPauser", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 335, + "src": "997:10:31", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "997:10:31" + }, + { + "arguments": null, + "id": 3255, + "modifierName": { + "argumentTypes": null, + "id": 3254, + "name": "whenNotPaused", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3242, + "src": "1008:13:31", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "1008:13:31" + } + ], + "name": "pause", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3251, + "nodeType": "ParameterList", + "parameters": [], + "src": "987:2:31" + }, + "returnParameters": { + "id": 3256, + "nodeType": "ParameterList", + "parameters": [], + "src": "1022:0:31" + }, + "scope": 3285, + "src": "973:113:31", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 3283, + "nodeType": "Block", + "src": "1224:67:31", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 3276, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 3274, + "name": "_paused", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3217, + "src": "1234:7:31", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "66616c7365", + "id": 3275, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1244:5:31", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "src": "1234:15:31", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 3277, + "nodeType": "ExpressionStatement", + "src": "1234:15:31" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 3279, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6845, + "src": "1273:3:31", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 3280, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "1273:10:31", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "id": 3278, + "name": "Unpaused", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3215, + "src": "1264:8:31", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 3281, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1264:20:31", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3282, + "nodeType": "EmitStatement", + "src": "1259:25:31" + } + ] + }, + "documentation": "@dev called by the owner to unpause, returns to normal state", + "id": 3284, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": null, + "id": 3270, + "modifierName": { + "argumentTypes": null, + "id": 3269, + "name": "onlyPauser", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 335, + "src": "1202:10:31", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "1202:10:31" + }, + { + "arguments": null, + "id": 3272, + "modifierName": { + "argumentTypes": null, + "id": 3271, + "name": "whenPaused", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3250, + "src": "1213:10:31", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "1213:10:31" + } + ], + "name": "unpause", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3268, + "nodeType": "ParameterList", + "parameters": [], + "src": "1192:2:31" + }, + "returnParameters": { + "id": 3273, + "nodeType": "ParameterList", + "parameters": [], + "src": "1224:0:31" + }, + "scope": 3285, + "src": "1176:115:31", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + } + ], + "scope": 3286, + "src": "180:1113:31" + } + ], + "src": "0:1294:31" + }, + "legacyAST": { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/lifecycle/Pausable.sol", + "exportedSymbols": { + "Pausable": [ + 3285 + ] + }, + "id": 3286, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 3204, + "literals": [ + "solidity", + "^", + "0.5", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "0:23:31" + }, + { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/access/roles/PauserRole.sol", + "file": "../access/roles/PauserRole.sol", + "id": 3205, + "nodeType": "ImportDirective", + "scope": 3286, + "sourceUnit": 403, + "src": "25:40:31", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 3206, + "name": "PauserRole", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 402, + "src": "201:10:31", + "typeDescriptions": { + "typeIdentifier": "t_contract$_PauserRole_$402", + "typeString": "contract PauserRole" + } + }, + "id": 3207, + "nodeType": "InheritanceSpecifier", + "src": "201:10:31" + } + ], + "contractDependencies": [ + 402 + ], + "contractKind": "contract", + "documentation": "@title Pausable\n@dev Base contract which allows children to implement an emergency stop mechanism.", + "fullyImplemented": true, + "id": 3285, + "linearizedBaseContracts": [ + 3285, + 402 + ], + "name": "Pausable", + "nodeType": "ContractDefinition", + "nodes": [ + { + "anonymous": false, + "documentation": null, + "id": 3211, + "name": "Paused", + "nodeType": "EventDefinition", + "parameters": { + "id": 3210, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3209, + "indexed": false, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 3211, + "src": "231:15:31", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3208, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "231:7:31", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "230:17:31" + }, + "src": "218:30:31" + }, + { + "anonymous": false, + "documentation": null, + "id": 3215, + "name": "Unpaused", + "nodeType": "EventDefinition", + "parameters": { + "id": 3214, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3213, + "indexed": false, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 3215, + "src": "268:15:31", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3212, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "268:7:31", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "267:17:31" + }, + "src": "253:32:31" + }, + { + "constant": false, + "id": 3217, + "name": "_paused", + "nodeType": "VariableDeclaration", + "scope": 3285, + "src": "291:20:31", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 3216, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "291:4:31", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "private" + }, + { + "body": { + "id": 3224, + "nodeType": "Block", + "src": "342:32:31", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 3222, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 3220, + "name": "_paused", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3217, + "src": "352:7:31", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "66616c7365", + "id": 3221, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "362:5:31", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "src": "352:15:31", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 3223, + "nodeType": "ExpressionStatement", + "src": "352:15:31" + } + ] + }, + "documentation": null, + "id": 3225, + "implemented": true, + "kind": "constructor", + "modifiers": [], + "name": "", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3218, + "nodeType": "ParameterList", + "parameters": [], + "src": "330:2:31" + }, + "returnParameters": { + "id": 3219, + "nodeType": "ParameterList", + "parameters": [], + "src": "342:0:31" + }, + "scope": 3285, + "src": "318:56:31", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 3232, + "nodeType": "Block", + "src": "505:31:31", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 3230, + "name": "_paused", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3217, + "src": "522:7:31", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 3229, + "id": 3231, + "nodeType": "Return", + "src": "515:14:31" + } + ] + }, + "documentation": "@return true if the contract is paused, false otherwise.", + "id": 3233, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "paused", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3226, + "nodeType": "ParameterList", + "parameters": [], + "src": "475:2:31" + }, + "returnParameters": { + "id": 3229, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3228, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 3233, + "src": "499:4:31", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 3227, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "499:4:31", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "498:6:31" + }, + "scope": 3285, + "src": "460:76:31", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 3241, + "nodeType": "Block", + "src": "670:45:31", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 3237, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "688:8:31", + "subExpression": { + "argumentTypes": null, + "id": 3236, + "name": "_paused", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3217, + "src": "689:7:31", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 3235, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6848, + 6849 + ], + "referencedDeclaration": 6848, + "src": "680:7:31", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 3238, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "680:17:31", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3239, + "nodeType": "ExpressionStatement", + "src": "680:17:31" + }, + { + "id": 3240, + "nodeType": "PlaceholderStatement", + "src": "707:1:31" + } + ] + }, + "documentation": "@dev Modifier to make a function callable only when the contract is not paused.", + "id": 3242, + "name": "whenNotPaused", + "nodeType": "ModifierDefinition", + "parameters": { + "id": 3234, + "nodeType": "ParameterList", + "parameters": [], + "src": "667:2:31" + }, + "src": "645:70:31", + "visibility": "internal" + }, + { + "body": { + "id": 3249, + "nodeType": "Block", + "src": "842:44:31", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 3245, + "name": "_paused", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3217, + "src": "860:7:31", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 3244, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6848, + 6849 + ], + "referencedDeclaration": 6848, + "src": "852:7:31", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 3246, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "852:16:31", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3247, + "nodeType": "ExpressionStatement", + "src": "852:16:31" + }, + { + "id": 3248, + "nodeType": "PlaceholderStatement", + "src": "878:1:31" + } + ] + }, + "documentation": "@dev Modifier to make a function callable only when the contract is paused.", + "id": 3250, + "name": "whenPaused", + "nodeType": "ModifierDefinition", + "parameters": { + "id": 3243, + "nodeType": "ParameterList", + "parameters": [], + "src": "839:2:31" + }, + "src": "820:66:31", + "visibility": "internal" + }, + { + "body": { + "id": 3266, + "nodeType": "Block", + "src": "1022:64:31", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 3259, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 3257, + "name": "_paused", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3217, + "src": "1032:7:31", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 3258, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1042:4:31", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "src": "1032:14:31", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 3260, + "nodeType": "ExpressionStatement", + "src": "1032:14:31" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 3262, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6845, + "src": "1068:3:31", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 3263, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "1068:10:31", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "id": 3261, + "name": "Paused", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3211, + "src": "1061:6:31", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 3264, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1061:18:31", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3265, + "nodeType": "EmitStatement", + "src": "1056:23:31" + } + ] + }, + "documentation": "@dev called by the owner to pause, triggers stopped state", + "id": 3267, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": null, + "id": 3253, + "modifierName": { + "argumentTypes": null, + "id": 3252, + "name": "onlyPauser", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 335, + "src": "997:10:31", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "997:10:31" + }, + { + "arguments": null, + "id": 3255, + "modifierName": { + "argumentTypes": null, + "id": 3254, + "name": "whenNotPaused", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3242, + "src": "1008:13:31", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "1008:13:31" + } + ], + "name": "pause", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3251, + "nodeType": "ParameterList", + "parameters": [], + "src": "987:2:31" + }, + "returnParameters": { + "id": 3256, + "nodeType": "ParameterList", + "parameters": [], + "src": "1022:0:31" + }, + "scope": 3285, + "src": "973:113:31", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 3283, + "nodeType": "Block", + "src": "1224:67:31", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 3276, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 3274, + "name": "_paused", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3217, + "src": "1234:7:31", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "66616c7365", + "id": 3275, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1244:5:31", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "src": "1234:15:31", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 3277, + "nodeType": "ExpressionStatement", + "src": "1234:15:31" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 3279, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6845, + "src": "1273:3:31", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 3280, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "1273:10:31", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "id": 3278, + "name": "Unpaused", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3215, + "src": "1264:8:31", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 3281, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1264:20:31", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3282, + "nodeType": "EmitStatement", + "src": "1259:25:31" + } + ] + }, + "documentation": "@dev called by the owner to unpause, returns to normal state", + "id": 3284, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": null, + "id": 3270, + "modifierName": { + "argumentTypes": null, + "id": 3269, + "name": "onlyPauser", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 335, + "src": "1202:10:31", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "1202:10:31" + }, + { + "arguments": null, + "id": 3272, + "modifierName": { + "argumentTypes": null, + "id": 3271, + "name": "whenPaused", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3250, + "src": "1213:10:31", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "1213:10:31" + } + ], + "name": "unpause", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3268, + "nodeType": "ParameterList", + "parameters": [], + "src": "1192:2:31" + }, + "returnParameters": { + "id": 3273, + "nodeType": "ParameterList", + "parameters": [], + "src": "1224:0:31" + }, + "scope": 3285, + "src": "1176:115:31", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + } + ], + "scope": 3286, + "src": "180:1113:31" + } + ], + "src": "0:1294:31" + }, + "compiler": { + "name": "solc", + "version": "0.5.0+commit.1d4f565a.Emscripten.clang" + }, + "networks": {}, + "schemaVersion": "3.0.0", + "updatedAt": "2019-01-04T21:44:02.885Z", + "devdoc": { + "details": "Base contract which allows children to implement an emergency stop mechanism.", + "methods": { + "pause()": { + "details": "called by the owner to pause, triggers stopped state" + }, + "paused()": { + "return": "true if the contract is paused, false otherwise." + }, + "unpause()": { + "details": "called by the owner to unpause, returns to normal state" + } + }, + "title": "Pausable" + }, + "userdoc": { + "methods": {} + } +} \ No newline at end of file diff --git a/node_modules/openzeppelin-solidity/build/contracts/PausableCrowdsale.json b/node_modules/openzeppelin-solidity/build/contracts/PausableCrowdsale.json new file mode 100644 index 0000000..b2085a3 --- /dev/null +++ b/node_modules/openzeppelin-solidity/build/contracts/PausableCrowdsale.json @@ -0,0 +1,886 @@ +{ + "contractName": "PausableCrowdsale", + "abi": [ + { + "constant": true, + "inputs": [], + "name": "rate", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [], + "name": "unpause", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "weiRaised", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "account", + "type": "address" + } + ], + "name": "isPauser", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "wallet", + "outputs": [ + { + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "paused", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [], + "name": "renouncePauser", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "account", + "type": "address" + } + ], + "name": "addPauser", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [], + "name": "pause", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "beneficiary", + "type": "address" + } + ], + "name": "buyTokens", + "outputs": [], + "payable": true, + "stateMutability": "payable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "token", + "outputs": [ + { + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "payable": true, + "stateMutability": "payable", + "type": "fallback" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "name": "account", + "type": "address" + } + ], + "name": "Paused", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "name": "account", + "type": "address" + } + ], + "name": "Unpaused", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "account", + "type": "address" + } + ], + "name": "PauserAdded", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "account", + "type": "address" + } + ], + "name": "PauserRemoved", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "purchaser", + "type": "address" + }, + { + "indexed": true, + "name": "beneficiary", + "type": "address" + }, + { + "indexed": false, + "name": "value", + "type": "uint256" + }, + { + "indexed": false, + "name": "amount", + "type": "uint256" + } + ], + "name": "TokensPurchased", + "type": "event" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "sourceMap": "", + "deployedSourceMap": "", + "source": "pragma solidity ^0.5.0;\n\nimport \"../Crowdsale.sol\";\nimport \"../../lifecycle/Pausable.sol\";\n\n/**\n * @title PausableCrowdsale\n * @dev Extension of Crowdsale contract where purchases can be paused and unpaused by the pauser role.\n */\ncontract PausableCrowdsale is Crowdsale, Pausable {\n /**\n * @dev Validation of an incoming purchase. Use require statements to revert state when conditions are not met.\n * Use super to concatenate validations.\n * Adds the validation that the crowdsale must not be paused.\n * @param _beneficiary Address performing the token purchase\n * @param _weiAmount Value in wei involved in the purchase\n */\n function _preValidatePurchase(address _beneficiary, uint256 _weiAmount) internal view whenNotPaused {\n return super._preValidatePurchase(_beneficiary, _weiAmount);\n }\n}\n", + "sourcePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/crowdsale/validation/PausableCrowdsale.sol", + "ast": { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/crowdsale/validation/PausableCrowdsale.sol", + "exportedSymbols": { + "PausableCrowdsale": [ + 1735 + ] + }, + "id": 1736, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 1712, + "literals": [ + "solidity", + "^", + "0.5", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "0:23:17" + }, + { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/crowdsale/Crowdsale.sol", + "file": "../Crowdsale.sol", + "id": 1713, + "nodeType": "ImportDirective", + "scope": 1736, + "sourceUnit": 985, + "src": "25:26:17", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/lifecycle/Pausable.sol", + "file": "../../lifecycle/Pausable.sol", + "id": 1714, + "nodeType": "ImportDirective", + "scope": 1736, + "sourceUnit": 3286, + "src": "52:38:17", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 1715, + "name": "Crowdsale", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 984, + "src": "261:9:17", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Crowdsale_$984", + "typeString": "contract Crowdsale" + } + }, + "id": 1716, + "nodeType": "InheritanceSpecifier", + "src": "261:9:17" + }, + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 1717, + "name": "Pausable", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 3285, + "src": "272:8:17", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Pausable_$3285", + "typeString": "contract Pausable" + } + }, + "id": 1718, + "nodeType": "InheritanceSpecifier", + "src": "272:8:17" + } + ], + "contractDependencies": [ + 402, + 984, + 3285, + 6830 + ], + "contractKind": "contract", + "documentation": "@title PausableCrowdsale\n@dev Extension of Crowdsale contract where purchases can be paused and unpaused by the pauser role.", + "fullyImplemented": false, + "id": 1735, + "linearizedBaseContracts": [ + 1735, + 3285, + 402, + 984, + 6830 + ], + "name": "PausableCrowdsale", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": { + "id": 1733, + "nodeType": "Block", + "src": "758:76:17", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1729, + "name": "_beneficiary", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1720, + "src": "802:12:17", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1730, + "name": "_weiAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1722, + "src": "816:10:17", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 1727, + "name": "super", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6919, + "src": "775:5:17", + "typeDescriptions": { + "typeIdentifier": "t_super$_PausableCrowdsale_$1735", + "typeString": "contract super PausableCrowdsale" + } + }, + "id": 1728, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "_preValidatePurchase", + "nodeType": "MemberAccess", + "referencedDeclaration": 915, + "src": "775:26:17", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256) view" + } + }, + "id": 1731, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "775:52:17", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "functionReturnParameters": 1726, + "id": 1732, + "nodeType": "Return", + "src": "768:59:17" + } + ] + }, + "documentation": "@dev Validation of an incoming purchase. Use require statements to revert state when conditions are not met.\nUse super to concatenate validations.\nAdds the validation that the crowdsale must not be paused.\n@param _beneficiary Address performing the token purchase\n@param _weiAmount Value in wei involved in the purchase", + "id": 1734, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": null, + "id": 1725, + "modifierName": { + "argumentTypes": null, + "id": 1724, + "name": "whenNotPaused", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3242, + "src": "744:13:17", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "744:13:17" + } + ], + "name": "_preValidatePurchase", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1723, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1720, + "name": "_beneficiary", + "nodeType": "VariableDeclaration", + "scope": 1734, + "src": "688:20:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1719, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "688:7:17", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1722, + "name": "_weiAmount", + "nodeType": "VariableDeclaration", + "scope": 1734, + "src": "710:18:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1721, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "710:7:17", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "687:42:17" + }, + "returnParameters": { + "id": 1726, + "nodeType": "ParameterList", + "parameters": [], + "src": "758:0:17" + }, + "scope": 1735, + "src": "658:176:17", + "stateMutability": "view", + "superFunction": 915, + "visibility": "internal" + } + ], + "scope": 1736, + "src": "231:605:17" + } + ], + "src": "0:837:17" + }, + "legacyAST": { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/crowdsale/validation/PausableCrowdsale.sol", + "exportedSymbols": { + "PausableCrowdsale": [ + 1735 + ] + }, + "id": 1736, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 1712, + "literals": [ + "solidity", + "^", + "0.5", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "0:23:17" + }, + { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/crowdsale/Crowdsale.sol", + "file": "../Crowdsale.sol", + "id": 1713, + "nodeType": "ImportDirective", + "scope": 1736, + "sourceUnit": 985, + "src": "25:26:17", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/lifecycle/Pausable.sol", + "file": "../../lifecycle/Pausable.sol", + "id": 1714, + "nodeType": "ImportDirective", + "scope": 1736, + "sourceUnit": 3286, + "src": "52:38:17", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 1715, + "name": "Crowdsale", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 984, + "src": "261:9:17", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Crowdsale_$984", + "typeString": "contract Crowdsale" + } + }, + "id": 1716, + "nodeType": "InheritanceSpecifier", + "src": "261:9:17" + }, + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 1717, + "name": "Pausable", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 3285, + "src": "272:8:17", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Pausable_$3285", + "typeString": "contract Pausable" + } + }, + "id": 1718, + "nodeType": "InheritanceSpecifier", + "src": "272:8:17" + } + ], + "contractDependencies": [ + 402, + 984, + 3285, + 6830 + ], + "contractKind": "contract", + "documentation": "@title PausableCrowdsale\n@dev Extension of Crowdsale contract where purchases can be paused and unpaused by the pauser role.", + "fullyImplemented": false, + "id": 1735, + "linearizedBaseContracts": [ + 1735, + 3285, + 402, + 984, + 6830 + ], + "name": "PausableCrowdsale", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": { + "id": 1733, + "nodeType": "Block", + "src": "758:76:17", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1729, + "name": "_beneficiary", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1720, + "src": "802:12:17", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1730, + "name": "_weiAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1722, + "src": "816:10:17", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 1727, + "name": "super", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6919, + "src": "775:5:17", + "typeDescriptions": { + "typeIdentifier": "t_super$_PausableCrowdsale_$1735", + "typeString": "contract super PausableCrowdsale" + } + }, + "id": 1728, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "_preValidatePurchase", + "nodeType": "MemberAccess", + "referencedDeclaration": 915, + "src": "775:26:17", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256) view" + } + }, + "id": 1731, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "775:52:17", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "functionReturnParameters": 1726, + "id": 1732, + "nodeType": "Return", + "src": "768:59:17" + } + ] + }, + "documentation": "@dev Validation of an incoming purchase. Use require statements to revert state when conditions are not met.\nUse super to concatenate validations.\nAdds the validation that the crowdsale must not be paused.\n@param _beneficiary Address performing the token purchase\n@param _weiAmount Value in wei involved in the purchase", + "id": 1734, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": null, + "id": 1725, + "modifierName": { + "argumentTypes": null, + "id": 1724, + "name": "whenNotPaused", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3242, + "src": "744:13:17", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "744:13:17" + } + ], + "name": "_preValidatePurchase", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1723, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1720, + "name": "_beneficiary", + "nodeType": "VariableDeclaration", + "scope": 1734, + "src": "688:20:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1719, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "688:7:17", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1722, + "name": "_weiAmount", + "nodeType": "VariableDeclaration", + "scope": 1734, + "src": "710:18:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1721, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "710:7:17", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "687:42:17" + }, + "returnParameters": { + "id": 1726, + "nodeType": "ParameterList", + "parameters": [], + "src": "758:0:17" + }, + "scope": 1735, + "src": "658:176:17", + "stateMutability": "view", + "superFunction": 915, + "visibility": "internal" + } + ], + "scope": 1736, + "src": "231:605:17" + } + ], + "src": "0:837:17" + }, + "compiler": { + "name": "solc", + "version": "0.5.0+commit.1d4f565a.Emscripten.clang" + }, + "networks": {}, + "schemaVersion": "3.0.0", + "updatedAt": "2019-01-04T21:44:02.874Z", + "devdoc": { + "details": "Extension of Crowdsale contract where purchases can be paused and unpaused by the pauser role.", + "methods": { + "buyTokens(address)": { + "details": "low level token purchase ***DO NOT OVERRIDE*** This function has a non-reentrancy guard, so it shouldn't be called by another `nonReentrant` function.", + "params": { + "beneficiary": "Recipient of the token purchase" + } + }, + "pause()": { + "details": "called by the owner to pause, triggers stopped state" + }, + "paused()": { + "return": "true if the contract is paused, false otherwise." + }, + "rate()": { + "return": "the number of token units a buyer gets per wei." + }, + "token()": { + "return": "the token being sold." + }, + "unpause()": { + "details": "called by the owner to unpause, returns to normal state" + }, + "wallet()": { + "return": "the address where funds are collected." + }, + "weiRaised()": { + "return": "the amount of wei raised." + } + }, + "title": "PausableCrowdsale" + }, + "userdoc": { + "methods": {} + } +} \ No newline at end of file diff --git a/node_modules/openzeppelin-solidity/build/contracts/PauserRole.json b/node_modules/openzeppelin-solidity/build/contracts/PauserRole.json new file mode 100644 index 0000000..b359256 --- /dev/null +++ b/node_modules/openzeppelin-solidity/build/contracts/PauserRole.json @@ -0,0 +1,2496 @@ +{ + "contractName": "PauserRole", + "abi": [ + { + "inputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "account", + "type": "address" + } + ], + "name": "PauserAdded", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "account", + "type": "address" + } + ], + "name": "PauserRemoved", + "type": "event" + }, + { + "constant": true, + "inputs": [ + { + "name": "account", + "type": "address" + } + ], + "name": "isPauser", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "account", + "type": "address" + } + ], + "name": "addPauser", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [], + "name": "renouncePauser", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "sourceMap": "", + "deployedSourceMap": "", + "source": "pragma solidity ^0.5.0;\n\nimport \"../Roles.sol\";\n\ncontract PauserRole {\n using Roles for Roles.Role;\n\n event PauserAdded(address indexed account);\n event PauserRemoved(address indexed account);\n\n Roles.Role private _pausers;\n\n constructor () internal {\n _addPauser(msg.sender);\n }\n\n modifier onlyPauser() {\n require(isPauser(msg.sender));\n _;\n }\n\n function isPauser(address account) public view returns (bool) {\n return _pausers.has(account);\n }\n\n function addPauser(address account) public onlyPauser {\n _addPauser(account);\n }\n\n function renouncePauser() public {\n _removePauser(msg.sender);\n }\n\n function _addPauser(address account) internal {\n _pausers.add(account);\n emit PauserAdded(account);\n }\n\n function _removePauser(address account) internal {\n _pausers.remove(account);\n emit PauserRemoved(account);\n }\n}\n", + "sourcePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/access/roles/PauserRole.sol", + "ast": { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/access/roles/PauserRole.sol", + "exportedSymbols": { + "PauserRole": [ + 402 + ] + }, + "id": 403, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 301, + "literals": [ + "solidity", + "^", + "0.5", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "0:23:3" + }, + { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/access/Roles.sol", + "file": "../Roles.sol", + "id": 302, + "nodeType": "ImportDirective", + "scope": 403, + "sourceUnit": 94, + "src": "25:22:3", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [], + "contractDependencies": [], + "contractKind": "contract", + "documentation": null, + "fullyImplemented": true, + "id": 402, + "linearizedBaseContracts": [ + 402 + ], + "name": "PauserRole", + "nodeType": "ContractDefinition", + "nodes": [ + { + "id": 305, + "libraryName": { + "contractScope": null, + "id": 303, + "name": "Roles", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 93, + "src": "81:5:3", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Roles_$93", + "typeString": "library Roles" + } + }, + "nodeType": "UsingForDirective", + "src": "75:27:3", + "typeName": { + "contractScope": null, + "id": 304, + "name": "Roles.Role", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 6, + "src": "91:10:3", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$6_storage_ptr", + "typeString": "struct Roles.Role" + } + } + }, + { + "anonymous": false, + "documentation": null, + "id": 309, + "name": "PauserAdded", + "nodeType": "EventDefinition", + "parameters": { + "id": 308, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 307, + "indexed": true, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 309, + "src": "126:23:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 306, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "126:7:3", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "125:25:3" + }, + "src": "108:43:3" + }, + { + "anonymous": false, + "documentation": null, + "id": 313, + "name": "PauserRemoved", + "nodeType": "EventDefinition", + "parameters": { + "id": 312, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 311, + "indexed": true, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 313, + "src": "176:23:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 310, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "176:7:3", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "175:25:3" + }, + "src": "156:45:3" + }, + { + "constant": false, + "id": 315, + "name": "_pausers", + "nodeType": "VariableDeclaration", + "scope": 402, + "src": "207:27:3", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$6_storage", + "typeString": "struct Roles.Role" + }, + "typeName": { + "contractScope": null, + "id": 314, + "name": "Roles.Role", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 6, + "src": "207:10:3", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$6_storage_ptr", + "typeString": "struct Roles.Role" + } + }, + "value": null, + "visibility": "private" + }, + { + "body": { + "id": 323, + "nodeType": "Block", + "src": "265:39:3", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 319, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6845, + "src": "286:3:3", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 320, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "286:10:3", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "id": 318, + "name": "_addPauser", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 385, + "src": "275:10:3", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 321, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "275:22:3", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 322, + "nodeType": "ExpressionStatement", + "src": "275:22:3" + } + ] + }, + "documentation": null, + "id": 324, + "implemented": true, + "kind": "constructor", + "modifiers": [], + "name": "", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 316, + "nodeType": "ParameterList", + "parameters": [], + "src": "253:2:3" + }, + "returnParameters": { + "id": 317, + "nodeType": "ParameterList", + "parameters": [], + "src": "265:0:3" + }, + "scope": 402, + "src": "241:63:3", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 334, + "nodeType": "Block", + "src": "332:57:3", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 328, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6845, + "src": "359:3:3", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 329, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "359:10:3", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "id": 327, + "name": "isPauser", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 348, + "src": "350:8:3", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$", + "typeString": "function (address) view returns (bool)" + } + }, + "id": 330, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "350:20:3", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 326, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6848, + 6849 + ], + "referencedDeclaration": 6848, + "src": "342:7:3", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 331, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "342:29:3", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 332, + "nodeType": "ExpressionStatement", + "src": "342:29:3" + }, + { + "id": 333, + "nodeType": "PlaceholderStatement", + "src": "381:1:3" + } + ] + }, + "documentation": null, + "id": 335, + "name": "onlyPauser", + "nodeType": "ModifierDefinition", + "parameters": { + "id": 325, + "nodeType": "ParameterList", + "parameters": [], + "src": "329:2:3" + }, + "src": "310:79:3", + "visibility": "internal" + }, + { + "body": { + "id": 347, + "nodeType": "Block", + "src": "457:45:3", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 344, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 337, + "src": "487:7:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 342, + "name": "_pausers", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 315, + "src": "474:8:3", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$6_storage", + "typeString": "struct Roles.Role storage ref" + } + }, + "id": 343, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "has", + "nodeType": "MemberAccess", + "referencedDeclaration": 92, + "src": "474:12:3", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_Role_$6_storage_ptr_$_t_address_$returns$_t_bool_$bound_to$_t_struct$_Role_$6_storage_ptr_$", + "typeString": "function (struct Roles.Role storage pointer,address) view returns (bool)" + } + }, + "id": 345, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "474:21:3", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 341, + "id": 346, + "nodeType": "Return", + "src": "467:28:3" + } + ] + }, + "documentation": null, + "id": 348, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "isPauser", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 338, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 337, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 348, + "src": "413:15:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 336, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "413:7:3", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "412:17:3" + }, + "returnParameters": { + "id": 341, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 340, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 348, + "src": "451:4:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 339, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "451:4:3", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "450:6:3" + }, + "scope": 402, + "src": "395:107:3", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 359, + "nodeType": "Block", + "src": "562:36:3", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 356, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 350, + "src": "583:7:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 355, + "name": "_addPauser", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 385, + "src": "572:10:3", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 357, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "572:19:3", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 358, + "nodeType": "ExpressionStatement", + "src": "572:19:3" + } + ] + }, + "documentation": null, + "id": 360, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": null, + "id": 353, + "modifierName": { + "argumentTypes": null, + "id": 352, + "name": "onlyPauser", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 335, + "src": "551:10:3", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "551:10:3" + } + ], + "name": "addPauser", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 351, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 350, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 360, + "src": "527:15:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 349, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "527:7:3", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "526:17:3" + }, + "returnParameters": { + "id": 354, + "nodeType": "ParameterList", + "parameters": [], + "src": "562:0:3" + }, + "scope": 402, + "src": "508:90:3", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 368, + "nodeType": "Block", + "src": "637:42:3", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 364, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6845, + "src": "661:3:3", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 365, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "661:10:3", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "id": 363, + "name": "_removePauser", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 401, + "src": "647:13:3", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 366, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "647:25:3", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 367, + "nodeType": "ExpressionStatement", + "src": "647:25:3" + } + ] + }, + "documentation": null, + "id": 369, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "renouncePauser", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 361, + "nodeType": "ParameterList", + "parameters": [], + "src": "627:2:3" + }, + "returnParameters": { + "id": 362, + "nodeType": "ParameterList", + "parameters": [], + "src": "637:0:3" + }, + "scope": 402, + "src": "604:75:3", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 384, + "nodeType": "Block", + "src": "731:73:3", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 377, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 371, + "src": "754:7:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 374, + "name": "_pausers", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 315, + "src": "741:8:3", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$6_storage", + "typeString": "struct Roles.Role storage ref" + } + }, + "id": 376, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 38, + "src": "741:12:3", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Role_$6_storage_ptr_$_t_address_$returns$__$bound_to$_t_struct$_Role_$6_storage_ptr_$", + "typeString": "function (struct Roles.Role storage pointer,address)" + } + }, + "id": 378, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "741:21:3", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 379, + "nodeType": "ExpressionStatement", + "src": "741:21:3" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 381, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 371, + "src": "789:7:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 380, + "name": "PauserAdded", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 309, + "src": "777:11:3", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 382, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "777:20:3", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 383, + "nodeType": "EmitStatement", + "src": "772:25:3" + } + ] + }, + "documentation": null, + "id": 385, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_addPauser", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 372, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 371, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 385, + "src": "705:15:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 370, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "705:7:3", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "704:17:3" + }, + "returnParameters": { + "id": 373, + "nodeType": "ParameterList", + "parameters": [], + "src": "731:0:3" + }, + "scope": 402, + "src": "685:119:3", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 400, + "nodeType": "Block", + "src": "859:78:3", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 393, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 387, + "src": "885:7:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 390, + "name": "_pausers", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 315, + "src": "869:8:3", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$6_storage", + "typeString": "struct Roles.Role storage ref" + } + }, + "id": 392, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "remove", + "nodeType": "MemberAccess", + "referencedDeclaration": 69, + "src": "869:15:3", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Role_$6_storage_ptr_$_t_address_$returns$__$bound_to$_t_struct$_Role_$6_storage_ptr_$", + "typeString": "function (struct Roles.Role storage pointer,address)" + } + }, + "id": 394, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "869:24:3", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 395, + "nodeType": "ExpressionStatement", + "src": "869:24:3" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 397, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 387, + "src": "922:7:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 396, + "name": "PauserRemoved", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 313, + "src": "908:13:3", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 398, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "908:22:3", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 399, + "nodeType": "EmitStatement", + "src": "903:27:3" + } + ] + }, + "documentation": null, + "id": 401, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_removePauser", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 388, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 387, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 401, + "src": "833:15:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 386, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "833:7:3", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "832:17:3" + }, + "returnParameters": { + "id": 389, + "nodeType": "ParameterList", + "parameters": [], + "src": "859:0:3" + }, + "scope": 402, + "src": "810:127:3", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + } + ], + "scope": 403, + "src": "49:890:3" + } + ], + "src": "0:940:3" + }, + "legacyAST": { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/access/roles/PauserRole.sol", + "exportedSymbols": { + "PauserRole": [ + 402 + ] + }, + "id": 403, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 301, + "literals": [ + "solidity", + "^", + "0.5", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "0:23:3" + }, + { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/access/Roles.sol", + "file": "../Roles.sol", + "id": 302, + "nodeType": "ImportDirective", + "scope": 403, + "sourceUnit": 94, + "src": "25:22:3", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [], + "contractDependencies": [], + "contractKind": "contract", + "documentation": null, + "fullyImplemented": true, + "id": 402, + "linearizedBaseContracts": [ + 402 + ], + "name": "PauserRole", + "nodeType": "ContractDefinition", + "nodes": [ + { + "id": 305, + "libraryName": { + "contractScope": null, + "id": 303, + "name": "Roles", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 93, + "src": "81:5:3", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Roles_$93", + "typeString": "library Roles" + } + }, + "nodeType": "UsingForDirective", + "src": "75:27:3", + "typeName": { + "contractScope": null, + "id": 304, + "name": "Roles.Role", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 6, + "src": "91:10:3", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$6_storage_ptr", + "typeString": "struct Roles.Role" + } + } + }, + { + "anonymous": false, + "documentation": null, + "id": 309, + "name": "PauserAdded", + "nodeType": "EventDefinition", + "parameters": { + "id": 308, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 307, + "indexed": true, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 309, + "src": "126:23:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 306, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "126:7:3", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "125:25:3" + }, + "src": "108:43:3" + }, + { + "anonymous": false, + "documentation": null, + "id": 313, + "name": "PauserRemoved", + "nodeType": "EventDefinition", + "parameters": { + "id": 312, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 311, + "indexed": true, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 313, + "src": "176:23:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 310, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "176:7:3", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "175:25:3" + }, + "src": "156:45:3" + }, + { + "constant": false, + "id": 315, + "name": "_pausers", + "nodeType": "VariableDeclaration", + "scope": 402, + "src": "207:27:3", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$6_storage", + "typeString": "struct Roles.Role" + }, + "typeName": { + "contractScope": null, + "id": 314, + "name": "Roles.Role", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 6, + "src": "207:10:3", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$6_storage_ptr", + "typeString": "struct Roles.Role" + } + }, + "value": null, + "visibility": "private" + }, + { + "body": { + "id": 323, + "nodeType": "Block", + "src": "265:39:3", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 319, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6845, + "src": "286:3:3", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 320, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "286:10:3", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "id": 318, + "name": "_addPauser", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 385, + "src": "275:10:3", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 321, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "275:22:3", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 322, + "nodeType": "ExpressionStatement", + "src": "275:22:3" + } + ] + }, + "documentation": null, + "id": 324, + "implemented": true, + "kind": "constructor", + "modifiers": [], + "name": "", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 316, + "nodeType": "ParameterList", + "parameters": [], + "src": "253:2:3" + }, + "returnParameters": { + "id": 317, + "nodeType": "ParameterList", + "parameters": [], + "src": "265:0:3" + }, + "scope": 402, + "src": "241:63:3", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 334, + "nodeType": "Block", + "src": "332:57:3", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 328, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6845, + "src": "359:3:3", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 329, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "359:10:3", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "id": 327, + "name": "isPauser", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 348, + "src": "350:8:3", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$", + "typeString": "function (address) view returns (bool)" + } + }, + "id": 330, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "350:20:3", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 326, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6848, + 6849 + ], + "referencedDeclaration": 6848, + "src": "342:7:3", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 331, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "342:29:3", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 332, + "nodeType": "ExpressionStatement", + "src": "342:29:3" + }, + { + "id": 333, + "nodeType": "PlaceholderStatement", + "src": "381:1:3" + } + ] + }, + "documentation": null, + "id": 335, + "name": "onlyPauser", + "nodeType": "ModifierDefinition", + "parameters": { + "id": 325, + "nodeType": "ParameterList", + "parameters": [], + "src": "329:2:3" + }, + "src": "310:79:3", + "visibility": "internal" + }, + { + "body": { + "id": 347, + "nodeType": "Block", + "src": "457:45:3", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 344, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 337, + "src": "487:7:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 342, + "name": "_pausers", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 315, + "src": "474:8:3", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$6_storage", + "typeString": "struct Roles.Role storage ref" + } + }, + "id": 343, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "has", + "nodeType": "MemberAccess", + "referencedDeclaration": 92, + "src": "474:12:3", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_Role_$6_storage_ptr_$_t_address_$returns$_t_bool_$bound_to$_t_struct$_Role_$6_storage_ptr_$", + "typeString": "function (struct Roles.Role storage pointer,address) view returns (bool)" + } + }, + "id": 345, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "474:21:3", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 341, + "id": 346, + "nodeType": "Return", + "src": "467:28:3" + } + ] + }, + "documentation": null, + "id": 348, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "isPauser", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 338, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 337, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 348, + "src": "413:15:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 336, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "413:7:3", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "412:17:3" + }, + "returnParameters": { + "id": 341, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 340, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 348, + "src": "451:4:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 339, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "451:4:3", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "450:6:3" + }, + "scope": 402, + "src": "395:107:3", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 359, + "nodeType": "Block", + "src": "562:36:3", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 356, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 350, + "src": "583:7:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 355, + "name": "_addPauser", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 385, + "src": "572:10:3", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 357, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "572:19:3", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 358, + "nodeType": "ExpressionStatement", + "src": "572:19:3" + } + ] + }, + "documentation": null, + "id": 360, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": null, + "id": 353, + "modifierName": { + "argumentTypes": null, + "id": 352, + "name": "onlyPauser", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 335, + "src": "551:10:3", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "551:10:3" + } + ], + "name": "addPauser", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 351, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 350, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 360, + "src": "527:15:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 349, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "527:7:3", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "526:17:3" + }, + "returnParameters": { + "id": 354, + "nodeType": "ParameterList", + "parameters": [], + "src": "562:0:3" + }, + "scope": 402, + "src": "508:90:3", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 368, + "nodeType": "Block", + "src": "637:42:3", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 364, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6845, + "src": "661:3:3", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 365, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "661:10:3", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "id": 363, + "name": "_removePauser", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 401, + "src": "647:13:3", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 366, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "647:25:3", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 367, + "nodeType": "ExpressionStatement", + "src": "647:25:3" + } + ] + }, + "documentation": null, + "id": 369, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "renouncePauser", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 361, + "nodeType": "ParameterList", + "parameters": [], + "src": "627:2:3" + }, + "returnParameters": { + "id": 362, + "nodeType": "ParameterList", + "parameters": [], + "src": "637:0:3" + }, + "scope": 402, + "src": "604:75:3", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 384, + "nodeType": "Block", + "src": "731:73:3", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 377, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 371, + "src": "754:7:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 374, + "name": "_pausers", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 315, + "src": "741:8:3", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$6_storage", + "typeString": "struct Roles.Role storage ref" + } + }, + "id": 376, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 38, + "src": "741:12:3", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Role_$6_storage_ptr_$_t_address_$returns$__$bound_to$_t_struct$_Role_$6_storage_ptr_$", + "typeString": "function (struct Roles.Role storage pointer,address)" + } + }, + "id": 378, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "741:21:3", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 379, + "nodeType": "ExpressionStatement", + "src": "741:21:3" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 381, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 371, + "src": "789:7:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 380, + "name": "PauserAdded", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 309, + "src": "777:11:3", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 382, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "777:20:3", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 383, + "nodeType": "EmitStatement", + "src": "772:25:3" + } + ] + }, + "documentation": null, + "id": 385, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_addPauser", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 372, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 371, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 385, + "src": "705:15:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 370, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "705:7:3", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "704:17:3" + }, + "returnParameters": { + "id": 373, + "nodeType": "ParameterList", + "parameters": [], + "src": "731:0:3" + }, + "scope": 402, + "src": "685:119:3", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 400, + "nodeType": "Block", + "src": "859:78:3", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 393, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 387, + "src": "885:7:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 390, + "name": "_pausers", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 315, + "src": "869:8:3", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$6_storage", + "typeString": "struct Roles.Role storage ref" + } + }, + "id": 392, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "remove", + "nodeType": "MemberAccess", + "referencedDeclaration": 69, + "src": "869:15:3", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Role_$6_storage_ptr_$_t_address_$returns$__$bound_to$_t_struct$_Role_$6_storage_ptr_$", + "typeString": "function (struct Roles.Role storage pointer,address)" + } + }, + "id": 394, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "869:24:3", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 395, + "nodeType": "ExpressionStatement", + "src": "869:24:3" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 397, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 387, + "src": "922:7:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 396, + "name": "PauserRemoved", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 313, + "src": "908:13:3", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 398, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "908:22:3", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 399, + "nodeType": "EmitStatement", + "src": "903:27:3" + } + ] + }, + "documentation": null, + "id": 401, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_removePauser", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 388, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 387, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 401, + "src": "833:15:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 386, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "833:7:3", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "832:17:3" + }, + "returnParameters": { + "id": 389, + "nodeType": "ParameterList", + "parameters": [], + "src": "859:0:3" + }, + "scope": 402, + "src": "810:127:3", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + } + ], + "scope": 403, + "src": "49:890:3" + } + ], + "src": "0:940:3" + }, + "compiler": { + "name": "solc", + "version": "0.5.0+commit.1d4f565a.Emscripten.clang" + }, + "networks": {}, + "schemaVersion": "3.0.0", + "updatedAt": "2019-01-04T21:44:02.868Z", + "devdoc": { + "methods": {} + }, + "userdoc": { + "methods": {} + } +} \ No newline at end of file diff --git a/node_modules/openzeppelin-solidity/build/contracts/PaymentSplitter.json b/node_modules/openzeppelin-solidity/build/contracts/PaymentSplitter.json new file mode 100644 index 0000000..a6680d2 --- /dev/null +++ b/node_modules/openzeppelin-solidity/build/contracts/PaymentSplitter.json @@ -0,0 +1,7451 @@ +{ + "contractName": "PaymentSplitter", + "abi": [ + { + "inputs": [ + { + "name": "payees", + "type": "address[]" + }, + { + "name": "shares", + "type": "uint256[]" + } + ], + "payable": true, + "stateMutability": "payable", + "type": "constructor" + }, + { + "payable": true, + "stateMutability": "payable", + "type": "fallback" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "name": "account", + "type": "address" + }, + { + "indexed": false, + "name": "shares", + "type": "uint256" + } + ], + "name": "PayeeAdded", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "name": "to", + "type": "address" + }, + { + "indexed": false, + "name": "amount", + "type": "uint256" + } + ], + "name": "PaymentReleased", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "name": "from", + "type": "address" + }, + { + "indexed": false, + "name": "amount", + "type": "uint256" + } + ], + "name": "PaymentReceived", + "type": "event" + }, + { + "constant": true, + "inputs": [], + "name": "totalShares", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "totalReleased", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "account", + "type": "address" + } + ], + "name": "shares", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "account", + "type": "address" + } + ], + "name": "released", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "index", + "type": "uint256" + } + ], + "name": "payee", + "outputs": [ + { + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "account", + "type": "address" + } + ], + "name": "release", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x6080604052604051610a9d380380610a9d8339810180604052604081101561002657600080fd5b81019080805164010000000081111561003e57600080fd5b8281019050602081018481111561005457600080fd5b815185602082028301116401000000008211171561007157600080fd5b5050929190602001805164010000000081111561008d57600080fd5b828101905060208101848111156100a357600080fd5b81518560208202830111640100000000821117156100c057600080fd5b5050929190505050805182511415156100d857600080fd5b600082511115156100e857600080fd5b60008090505b825181101561014b5761013e838281518110151561010857fe5b90602001906020020151838381518110151561012057fe5b90602001906020020151610153640100000000026401000000009004565b80806001019150506100ee565b50505061034e565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415151561018f57600080fd5b60008111151561019e57600080fd5b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541415156101ec57600080fd5b60048290806001815401808255809150509060018203906000526020600020016000909192909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505080600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506102b88160005461032d64010000000002610669179091906401000000009004565b6000819055507f40c340f65e17194d14ddddb073d3c9f888e3cb52b5aae0c6c7706b4fbc905fac8282604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a15050565b600080828401905083811015151561034457600080fd5b8091505092915050565b6107408061035d6000396000f3fe608060405260043610610078576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806319165587146100e55780633a98ef39146101365780638b83209b146101615780639852595c146101dc578063ce7c2ac214610241578063e33b7de3146102a6575b7f6ef95f06320e7a25a04a175ca677b7052bdd97131872c2192525a629f51be7703334604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a1005b3480156100f157600080fd5b506101346004803603602081101561010857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506102d1565b005b34801561014257600080fd5b5061014b610581565b6040518082815260200191505060405180910390f35b34801561016d57600080fd5b5061019a6004803603602081101561018457600080fd5b810190808035906020019092919050505061058a565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156101e857600080fd5b5061022b600480360360208110156101ff57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506105cd565b6040518082815260200191505060405180910390f35b34801561024d57600080fd5b506102906004803603602081101561026457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610616565b6040518082815260200191505060405180910390f35b3480156102b257600080fd5b506102bb61065f565b6040518082815260200191505060405180910390f35b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411151561031f57600080fd5b600061034d6001543073ffffffffffffffffffffffffffffffffffffffff163161066990919063ffffffff16565b90506000610408600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546103fa6000546103ec600260008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548761068a90919063ffffffff16565b6106c890919063ffffffff16565b6106f290919063ffffffff16565b90506000811415151561041a57600080fd5b61046c81600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461066990919063ffffffff16565b600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506104c48160015461066990919063ffffffff16565b6001819055508273ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015610510573d6000803e3d6000fd5b507fdf20fd1e76bc69d672e4814fafb2c449bba3a5369d8359adf9e05e6fde87b0568382604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a1505050565b60008054905090565b600060048281548110151561059b57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000600154905090565b600080828401905083811015151561068057600080fd5b8091505092915050565b60008083141561069d57600090506106c2565b600082840290508284828115156106b057fe5b041415156106bd57600080fd5b809150505b92915050565b600080821115156106d857600080fd5b600082848115156106e557fe5b0490508091505092915050565b600082821115151561070357600080fd5b60008284039050809150509291505056fea165627a7a723058206fe84e991641c47170af60c9fcbf8ba39a09359ec00afef8e9bc691a69994e530029", + "deployedBytecode": "0x608060405260043610610078576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806319165587146100e55780633a98ef39146101365780638b83209b146101615780639852595c146101dc578063ce7c2ac214610241578063e33b7de3146102a6575b7f6ef95f06320e7a25a04a175ca677b7052bdd97131872c2192525a629f51be7703334604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a1005b3480156100f157600080fd5b506101346004803603602081101561010857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506102d1565b005b34801561014257600080fd5b5061014b610581565b6040518082815260200191505060405180910390f35b34801561016d57600080fd5b5061019a6004803603602081101561018457600080fd5b810190808035906020019092919050505061058a565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156101e857600080fd5b5061022b600480360360208110156101ff57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506105cd565b6040518082815260200191505060405180910390f35b34801561024d57600080fd5b506102906004803603602081101561026457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610616565b6040518082815260200191505060405180910390f35b3480156102b257600080fd5b506102bb61065f565b6040518082815260200191505060405180910390f35b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411151561031f57600080fd5b600061034d6001543073ffffffffffffffffffffffffffffffffffffffff163161066990919063ffffffff16565b90506000610408600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546103fa6000546103ec600260008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548761068a90919063ffffffff16565b6106c890919063ffffffff16565b6106f290919063ffffffff16565b90506000811415151561041a57600080fd5b61046c81600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461066990919063ffffffff16565b600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506104c48160015461066990919063ffffffff16565b6001819055508273ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015610510573d6000803e3d6000fd5b507fdf20fd1e76bc69d672e4814fafb2c449bba3a5369d8359adf9e05e6fde87b0568382604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a1505050565b60008054905090565b600060048281548110151561059b57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000600154905090565b600080828401905083811015151561068057600080fd5b8091505092915050565b60008083141561069d57600090506106c2565b600082840290508284828115156106b057fe5b041415156106bd57600080fd5b809150505b92915050565b600080821115156106d857600080fd5b600082848115156106e557fe5b0490508091505092915050565b600082821115151561070357600080fd5b60008284039050809150509291505056fea165627a7a723058206fe84e991641c47170af60c9fcbf8ba39a09359ec00afef8e9bc691a69994e530029", + "sourceMap": "244:2905:36:-;;;719:280;;;;;;;;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;719:280:36;;;;;;19:11:-1;14:3;11:20;8:2;;;44:1;41;34:12;8:2;71:11;66:3;62:21;55:28;;123:4;118:3;114:14;159:9;141:16;138:31;135:2;;;182:1;179;172:12;135:2;219:3;213:10;331:9;325:2;311:12;307:21;289:16;285:44;282:59;261:11;247:12;244:29;233:116;230:2;;;362:1;359;352:12;230:2;0:373;;719:280:36;;;;;;;19:11:-1;14:3;11:20;8:2;;;44:1;41;34:12;8:2;71:11;66:3;62:21;55:28;;123:4;118:3;114:14;159:9;141:16;138:31;135:2;;;182:1;179;172:12;135:2;219:3;213:10;331:9;325:2;311:12;307:21;289:16;285:44;282:59;261:11;247:12;244:29;233:116;230:2;;;362:1;359;352:12;230:2;0:373;;719:280:36;;;;;;832:6;:13;815:6;:13;:30;807:39;;;;;;;;880:1;864:6;:13;:17;856:26;;;;;;;;898:9;910:1;898:13;;893:100;917:6;:13;913:1;:17;893:100;;;951:31;961:6;968:1;961:9;;;;;;;;;;;;;;;;;;972:6;979:1;972:9;;;;;;;;;;;;;;;;;;951;;;:31;;;:::i;:::-;932:3;;;;;;;893:100;;;;719:280;;244:2905;;2808:339;2906:1;2887:21;;:7;:21;;;;2879:30;;;;;;;;2937:1;2927:7;:11;2919:20;;;;;;;;2977:1;2957:7;:16;2965:7;2957:16;;;;;;;;;;;;;;;;:21;2949:30;;;;;;;;2990:7;3003;2990:21;;39:1:-1;33:3;27:10;23:18;57:10;52:3;45:23;79:10;72:17;;0:93;2990:21:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3040:7;3021;:16;3029:7;3021:16;;;;;;;;;;;;;;;:26;;;;3072:25;3089:7;3072:12;;:16;;;;;;:25;;;;;:::i;:::-;3057:12;:40;;;;3112:28;3123:7;3132;3112:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;2808:339;;:::o;1431:145:33:-;1489:7;1508:9;1524:1;1520;:5;1508:17;;1548:1;1543;:6;;1535:15;;;;;;;;1568:1;1561:8;;;1431:145;;;;:::o;244:2905:36:-;;;;;;;", + "deployedSourceMap": "244:2905:36:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1094:38;1110:10;1122:9;1094:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;244:2905;2114:509;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2114:509:36;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2114:509:36;;;;;;;;;;;;;;;;;;;;;;1210:89;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1210:89:36;;;;;;;;;;;;;;;;;;;;;;;1878:98;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1878:98:36;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1878:98:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1710:107;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1710:107:36;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1710:107:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1527:103;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1527:103:36;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1527:103:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1371:93;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1371:93:36;;;;;;;;;;;;;;;;;;;;;;;2114:509;2200:1;2181:7;:16;2189:7;2181:16;;;;;;;;;;;;;;;;:20;2173:29;;;;;;;;2213:21;2237:41;2263:14;;2245:4;2237:21;;;:25;;:41;;;;:::i;:::-;2213:65;;2288:15;2306:77;2364:9;:18;2374:7;2364:18;;;;;;;;;;;;;;;;2306:53;2346:12;;2306:35;2324:7;:16;2332:7;2324:16;;;;;;;;;;;;;;;;2306:13;:17;;:35;;;;:::i;:::-;:39;;:53;;;;:::i;:::-;:57;;:77;;;;:::i;:::-;2288:95;;2413:1;2402:7;:12;;2394:21;;;;;;;;2447:31;2470:7;2447:9;:18;2457:7;2447:18;;;;;;;;;;;;;;;;:22;;:31;;;;:::i;:::-;2426:9;:18;2436:7;2426:18;;;;;;;;;;;;;;;:52;;;;2505:27;2524:7;2505:14;;:18;;:27;;;;:::i;:::-;2488:14;:44;;;;2543:7;:16;;:25;2560:7;2543:25;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2543:25:36;2583:33;2599:7;2608;2583:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;2114:509;;;:::o;1210:89::-;1254:7;1280:12;;1273:19;;1210:89;:::o;1878:98::-;1929:7;1955;1963:5;1955:14;;;;;;;;;;;;;;;;;;;;;;;;;;;1948:21;;1878:98;;;:::o;1710:107::-;1766:7;1792:9;:18;1802:7;1792:18;;;;;;;;;;;;;;;;1785:25;;1710:107;;;:::o;1527:103::-;1581:7;1607;:16;1615:7;1607:16;;;;;;;;;;;;;;;;1600:23;;1527:103;;;:::o;1371:93::-;1417:7;1443:14;;1436:21;;1371:93;:::o;1431:145:33:-;1489:7;1508:9;1524:1;1520;:5;1508:17;;1548:1;1543;:6;;1535:15;;;;;;;;1568:1;1561:8;;;1431:145;;;;:::o;229:421::-;287:7;532:1;527;:6;523:45;;;556:1;549:8;;;;523:45;578:9;594:1;590;:5;578:17;;622:1;617;613;:5;;;;;;;;:10;605:19;;;;;;;;642:1;635:8;;;229:421;;;;;:::o;778:296::-;836:7;933:1;929;:5;921:14;;;;;;;;945:9;961:1;957;:5;;;;;;;;945:17;;1066:1;1059:8;;;778:296;;;;:::o;1205:145::-;1263:7;1295:1;1290;:6;;1282:15;;;;;;;;1307:9;1323:1;1319;:5;1307:17;;1342:1;1335:8;;;1205:145;;;;:::o", + "source": "pragma solidity ^0.5.0;\n\nimport \"../math/SafeMath.sol\";\n\n/**\n * @title PaymentSplitter\n * @dev This contract can be used when payments need to be received by a group\n * of people and split proportionately to some number of shares they own.\n */\ncontract PaymentSplitter {\n using SafeMath for uint256;\n\n event PayeeAdded(address account, uint256 shares);\n event PaymentReleased(address to, uint256 amount);\n event PaymentReceived(address from, uint256 amount);\n\n uint256 private _totalShares;\n uint256 private _totalReleased;\n\n mapping(address => uint256) private _shares;\n mapping(address => uint256) private _released;\n address[] private _payees;\n\n /**\n * @dev Constructor\n */\n constructor (address[] memory payees, uint256[] memory shares) public payable {\n require(payees.length == shares.length);\n require(payees.length > 0);\n\n for (uint256 i = 0; i < payees.length; i++) {\n _addPayee(payees[i], shares[i]);\n }\n }\n\n /**\n * @dev payable fallback\n */\n function () external payable {\n emit PaymentReceived(msg.sender, msg.value);\n }\n\n /**\n * @return the total shares of the contract.\n */\n function totalShares() public view returns (uint256) {\n return _totalShares;\n }\n\n /**\n * @return the total amount already released.\n */\n function totalReleased() public view returns (uint256) {\n return _totalReleased;\n }\n\n /**\n * @return the shares of an account.\n */\n function shares(address account) public view returns (uint256) {\n return _shares[account];\n }\n\n /**\n * @return the amount already released to an account.\n */\n function released(address account) public view returns (uint256) {\n return _released[account];\n }\n\n /**\n * @return the address of a payee.\n */\n function payee(uint256 index) public view returns (address) {\n return _payees[index];\n }\n\n /**\n * @dev Release one of the payee's proportional payment.\n * @param account Whose payments will be released.\n */\n function release(address payable account) public {\n require(_shares[account] > 0);\n\n uint256 totalReceived = address(this).balance.add(_totalReleased);\n uint256 payment = totalReceived.mul(_shares[account]).div(_totalShares).sub(_released[account]);\n\n require(payment != 0);\n\n _released[account] = _released[account].add(payment);\n _totalReleased = _totalReleased.add(payment);\n\n account.transfer(payment);\n emit PaymentReleased(account, payment);\n }\n\n /**\n * @dev Add a new payee to the contract.\n * @param account The address of the payee to add.\n * @param shares_ The number of shares owned by the payee.\n */\n function _addPayee(address account, uint256 shares_) private {\n require(account != address(0));\n require(shares_ > 0);\n require(_shares[account] == 0);\n\n _payees.push(account);\n _shares[account] = shares_;\n _totalShares = _totalShares.add(shares_);\n emit PayeeAdded(account, shares_);\n }\n}\n", + "sourcePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/payment/PaymentSplitter.sol", + "ast": { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/payment/PaymentSplitter.sol", + "exportedSymbols": { + "PaymentSplitter": [ + 3936 + ] + }, + "id": 3937, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 3658, + "literals": [ + "solidity", + "^", + "0.5", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "0:23:36" + }, + { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/math/SafeMath.sol", + "file": "../math/SafeMath.sol", + "id": 3659, + "nodeType": "ImportDirective", + "scope": 3937, + "sourceUnit": 3483, + "src": "25:30:36", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [], + "contractDependencies": [], + "contractKind": "contract", + "documentation": "@title PaymentSplitter\n@dev This contract can be used when payments need to be received by a group\nof people and split proportionately to some number of shares they own.", + "fullyImplemented": true, + "id": 3936, + "linearizedBaseContracts": [ + 3936 + ], + "name": "PaymentSplitter", + "nodeType": "ContractDefinition", + "nodes": [ + { + "id": 3662, + "libraryName": { + "contractScope": null, + "id": 3660, + "name": "SafeMath", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 3482, + "src": "281:8:36", + "typeDescriptions": { + "typeIdentifier": "t_contract$_SafeMath_$3482", + "typeString": "library SafeMath" + } + }, + "nodeType": "UsingForDirective", + "src": "275:27:36", + "typeName": { + "id": 3661, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "294:7:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + { + "anonymous": false, + "documentation": null, + "id": 3668, + "name": "PayeeAdded", + "nodeType": "EventDefinition", + "parameters": { + "id": 3667, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3664, + "indexed": false, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 3668, + "src": "325:15:36", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3663, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "325:7:36", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 3666, + "indexed": false, + "name": "shares", + "nodeType": "VariableDeclaration", + "scope": 3668, + "src": "342:14:36", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3665, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "342:7:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "324:33:36" + }, + "src": "308:50:36" + }, + { + "anonymous": false, + "documentation": null, + "id": 3674, + "name": "PaymentReleased", + "nodeType": "EventDefinition", + "parameters": { + "id": 3673, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3670, + "indexed": false, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 3674, + "src": "385:10:36", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3669, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "385:7:36", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 3672, + "indexed": false, + "name": "amount", + "nodeType": "VariableDeclaration", + "scope": 3674, + "src": "397:14:36", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3671, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "397:7:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "384:28:36" + }, + "src": "363:50:36" + }, + { + "anonymous": false, + "documentation": null, + "id": 3680, + "name": "PaymentReceived", + "nodeType": "EventDefinition", + "parameters": { + "id": 3679, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3676, + "indexed": false, + "name": "from", + "nodeType": "VariableDeclaration", + "scope": 3680, + "src": "440:12:36", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3675, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "440:7:36", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 3678, + "indexed": false, + "name": "amount", + "nodeType": "VariableDeclaration", + "scope": 3680, + "src": "454:14:36", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3677, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "454:7:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "439:30:36" + }, + "src": "418:52:36" + }, + { + "constant": false, + "id": 3682, + "name": "_totalShares", + "nodeType": "VariableDeclaration", + "scope": 3936, + "src": "476:28:36", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3681, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "476:7:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "private" + }, + { + "constant": false, + "id": 3684, + "name": "_totalReleased", + "nodeType": "VariableDeclaration", + "scope": 3936, + "src": "510:30:36", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3683, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "510:7:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "private" + }, + { + "constant": false, + "id": 3688, + "name": "_shares", + "nodeType": "VariableDeclaration", + "scope": 3936, + "src": "547:43:36", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + }, + "typeName": { + "id": 3687, + "keyType": { + "id": 3685, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "555:7:36", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "547:27:36", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + }, + "valueType": { + "id": 3686, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "566:7:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "value": null, + "visibility": "private" + }, + { + "constant": false, + "id": 3692, + "name": "_released", + "nodeType": "VariableDeclaration", + "scope": 3936, + "src": "596:45:36", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + }, + "typeName": { + "id": 3691, + "keyType": { + "id": 3689, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "604:7:36", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "596:27:36", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + }, + "valueType": { + "id": 3690, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "615:7:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "value": null, + "visibility": "private" + }, + { + "constant": false, + "id": 3695, + "name": "_payees", + "nodeType": "VariableDeclaration", + "scope": 3936, + "src": "647:25:36", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[]" + }, + "typeName": { + "baseType": { + "id": 3693, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "647:7:36", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 3694, + "length": null, + "nodeType": "ArrayTypeName", + "src": "647:9:36", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[]" + } + }, + "value": null, + "visibility": "private" + }, + { + "body": { + "id": 3741, + "nodeType": "Block", + "src": "797:202:36", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3709, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 3705, + "name": "payees", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3698, + "src": "815:6:36", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "id": 3706, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "815:13:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 3707, + "name": "shares", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3701, + "src": "832:6:36", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "id": 3708, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "832:13:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "815:30:36", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 3704, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6848, + 6849 + ], + "referencedDeclaration": 6848, + "src": "807:7:36", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 3710, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "807:39:36", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3711, + "nodeType": "ExpressionStatement", + "src": "807:39:36" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3716, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 3713, + "name": "payees", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3698, + "src": "864:6:36", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "id": 3714, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "864:13:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 3715, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "880:1:36", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "864:17:36", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 3712, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6848, + 6849 + ], + "referencedDeclaration": 6848, + "src": "856:7:36", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 3717, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "856:26:36", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3718, + "nodeType": "ExpressionStatement", + "src": "856:26:36" + }, + { + "body": { + "id": 3739, + "nodeType": "Block", + "src": "937:56:36", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 3731, + "name": "payees", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3698, + "src": "961:6:36", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "id": 3733, + "indexExpression": { + "argumentTypes": null, + "id": 3732, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3720, + "src": "968:1:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "961:9:36", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 3734, + "name": "shares", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3701, + "src": "972:6:36", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "id": 3736, + "indexExpression": { + "argumentTypes": null, + "id": 3735, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3720, + "src": "979:1:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "972:9:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 3730, + "name": "_addPayee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3935, + "src": "951:9:36", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 3737, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "951:31:36", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3738, + "nodeType": "ExpressionStatement", + "src": "951:31:36" + } + ] + }, + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3726, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 3723, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3720, + "src": "913:1:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 3724, + "name": "payees", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3698, + "src": "917:6:36", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "id": 3725, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "917:13:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "913:17:36", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 3740, + "initializationExpression": { + "assignments": [ + 3720 + ], + "declarations": [ + { + "constant": false, + "id": 3720, + "name": "i", + "nodeType": "VariableDeclaration", + "scope": 3740, + "src": "898:9:36", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3719, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "898:7:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 3722, + "initialValue": { + "argumentTypes": null, + "hexValue": "30", + "id": 3721, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "910:1:36", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "898:13:36" + }, + "loopExpression": { + "expression": { + "argumentTypes": null, + "id": 3728, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "932:3:36", + "subExpression": { + "argumentTypes": null, + "id": 3727, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3720, + "src": "932:1:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 3729, + "nodeType": "ExpressionStatement", + "src": "932:3:36" + }, + "nodeType": "ForStatement", + "src": "893:100:36" + } + ] + }, + "documentation": "@dev Constructor", + "id": 3742, + "implemented": true, + "kind": "constructor", + "modifiers": [], + "name": "", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3702, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3698, + "name": "payees", + "nodeType": "VariableDeclaration", + "scope": 3742, + "src": "732:23:36", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[]" + }, + "typeName": { + "baseType": { + "id": 3696, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "732:7:36", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 3697, + "length": null, + "nodeType": "ArrayTypeName", + "src": "732:9:36", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[]" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 3701, + "name": "shares", + "nodeType": "VariableDeclaration", + "scope": 3742, + "src": "757:23:36", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 3699, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "757:7:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 3700, + "length": null, + "nodeType": "ArrayTypeName", + "src": "757:9:36", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "731:50:36" + }, + "returnParameters": { + "id": 3703, + "nodeType": "ParameterList", + "parameters": [], + "src": "797:0:36" + }, + "scope": 3936, + "src": "719:280:36", + "stateMutability": "payable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 3752, + "nodeType": "Block", + "src": "1079:60:36", + "statements": [ + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 3746, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6845, + "src": "1110:3:36", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 3747, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "1110:10:36", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 3748, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6845, + "src": "1122:3:36", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 3749, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "value", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "1122:9:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 3745, + "name": "PaymentReceived", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3680, + "src": "1094:15:36", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 3750, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1094:38:36", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3751, + "nodeType": "EmitStatement", + "src": "1089:43:36" + } + ] + }, + "documentation": "@dev payable fallback", + "id": 3753, + "implemented": true, + "kind": "fallback", + "modifiers": [], + "name": "", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3743, + "nodeType": "ParameterList", + "parameters": [], + "src": "1059:2:36" + }, + "returnParameters": { + "id": 3744, + "nodeType": "ParameterList", + "parameters": [], + "src": "1079:0:36" + }, + "scope": 3936, + "src": "1050:89:36", + "stateMutability": "payable", + "superFunction": null, + "visibility": "external" + }, + { + "body": { + "id": 3760, + "nodeType": "Block", + "src": "1263:36:36", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 3758, + "name": "_totalShares", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3682, + "src": "1280:12:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 3757, + "id": 3759, + "nodeType": "Return", + "src": "1273:19:36" + } + ] + }, + "documentation": "@return the total shares of the contract.", + "id": 3761, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "totalShares", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3754, + "nodeType": "ParameterList", + "parameters": [], + "src": "1230:2:36" + }, + "returnParameters": { + "id": 3757, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3756, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 3761, + "src": "1254:7:36", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3755, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1254:7:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1253:9:36" + }, + "scope": 3936, + "src": "1210:89:36", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 3768, + "nodeType": "Block", + "src": "1426:38:36", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 3766, + "name": "_totalReleased", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3684, + "src": "1443:14:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 3765, + "id": 3767, + "nodeType": "Return", + "src": "1436:21:36" + } + ] + }, + "documentation": "@return the total amount already released.", + "id": 3769, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "totalReleased", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3762, + "nodeType": "ParameterList", + "parameters": [], + "src": "1393:2:36" + }, + "returnParameters": { + "id": 3765, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3764, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 3769, + "src": "1417:7:36", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3763, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1417:7:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1416:9:36" + }, + "scope": 3936, + "src": "1371:93:36", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 3780, + "nodeType": "Block", + "src": "1590:40:36", + "statements": [ + { + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 3776, + "name": "_shares", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3688, + "src": "1607:7:36", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 3778, + "indexExpression": { + "argumentTypes": null, + "id": 3777, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3771, + "src": "1615:7:36", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "1607:16:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 3775, + "id": 3779, + "nodeType": "Return", + "src": "1600:23:36" + } + ] + }, + "documentation": "@return the shares of an account.", + "id": 3781, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "shares", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3772, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3771, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 3781, + "src": "1543:15:36", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3770, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1543:7:36", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1542:17:36" + }, + "returnParameters": { + "id": 3775, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3774, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 3781, + "src": "1581:7:36", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3773, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1581:7:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1580:9:36" + }, + "scope": 3936, + "src": "1527:103:36", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 3792, + "nodeType": "Block", + "src": "1775:42:36", + "statements": [ + { + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 3788, + "name": "_released", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3692, + "src": "1792:9:36", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 3790, + "indexExpression": { + "argumentTypes": null, + "id": 3789, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3783, + "src": "1802:7:36", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "1792:18:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 3787, + "id": 3791, + "nodeType": "Return", + "src": "1785:25:36" + } + ] + }, + "documentation": "@return the amount already released to an account.", + "id": 3793, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "released", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3784, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3783, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 3793, + "src": "1728:15:36", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3782, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1728:7:36", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1727:17:36" + }, + "returnParameters": { + "id": 3787, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3786, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 3793, + "src": "1766:7:36", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3785, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1766:7:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1765:9:36" + }, + "scope": 3936, + "src": "1710:107:36", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 3804, + "nodeType": "Block", + "src": "1938:38:36", + "statements": [ + { + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 3800, + "name": "_payees", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3695, + "src": "1955:7:36", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + } + }, + "id": 3802, + "indexExpression": { + "argumentTypes": null, + "id": 3801, + "name": "index", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3795, + "src": "1963:5:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "1955:14:36", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "functionReturnParameters": 3799, + "id": 3803, + "nodeType": "Return", + "src": "1948:21:36" + } + ] + }, + "documentation": "@return the address of a payee.", + "id": 3805, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "payee", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3796, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3795, + "name": "index", + "nodeType": "VariableDeclaration", + "scope": 3805, + "src": "1893:13:36", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3794, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1893:7:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1892:15:36" + }, + "returnParameters": { + "id": 3799, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3798, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 3805, + "src": "1929:7:36", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3797, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1929:7:36", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1928:9:36" + }, + "scope": 3936, + "src": "1878:98:36", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 3880, + "nodeType": "Block", + "src": "2163:460:36", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3815, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 3811, + "name": "_shares", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3688, + "src": "2181:7:36", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 3813, + "indexExpression": { + "argumentTypes": null, + "id": 3812, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3807, + "src": "2189:7:36", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2181:16:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 3814, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2200:1:36", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "2181:20:36", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 3810, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6848, + 6849 + ], + "referencedDeclaration": 6848, + "src": "2173:7:36", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 3816, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2173:29:36", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3817, + "nodeType": "ExpressionStatement", + "src": "2173:29:36" + }, + { + "assignments": [ + 3819 + ], + "declarations": [ + { + "constant": false, + "id": 3819, + "name": "totalReceived", + "nodeType": "VariableDeclaration", + "scope": 3880, + "src": "2213:21:36", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3818, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2213:7:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 3827, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 3825, + "name": "_totalReleased", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3684, + "src": "2263:14:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 3821, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6948, + "src": "2245:4:36", + "typeDescriptions": { + "typeIdentifier": "t_contract$_PaymentSplitter_$3936", + "typeString": "contract PaymentSplitter" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_PaymentSplitter_$3936", + "typeString": "contract PaymentSplitter" + } + ], + "id": 3820, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2237:7:36", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 3822, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2237:13:36", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "id": 3823, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "balance", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2237:21:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 3824, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 3461, + "src": "2237:25:36", + "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": 3826, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2237:41:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "2213:65:36" + }, + { + "assignments": [ + 3829 + ], + "declarations": [ + { + "constant": false, + "id": 3829, + "name": "payment", + "nodeType": "VariableDeclaration", + "scope": 3880, + "src": "2288:15:36", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3828, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2288:7:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 3844, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 3840, + "name": "_released", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3692, + "src": "2364:9:36", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 3842, + "indexExpression": { + "argumentTypes": null, + "id": 3841, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3807, + "src": "2374:7:36", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2364:18:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 3837, + "name": "_totalShares", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3682, + "src": "2346:12:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 3832, + "name": "_shares", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3688, + "src": "2324:7:36", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 3834, + "indexExpression": { + "argumentTypes": null, + "id": 3833, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3807, + "src": "2332:7:36", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2324:16:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 3830, + "name": "totalReceived", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3819, + "src": "2306:13:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 3831, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "mul", + "nodeType": "MemberAccess", + "referencedDeclaration": 3389, + "src": "2306:17:36", + "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": 3835, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2306:35:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 3836, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "div", + "nodeType": "MemberAccess", + "referencedDeclaration": 3413, + "src": "2306:39:36", + "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": 3838, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2306:53:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 3839, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sub", + "nodeType": "MemberAccess", + "referencedDeclaration": 3437, + "src": "2306:57:36", + "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": 3843, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2306:77:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "2288:95:36" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3848, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 3846, + "name": "payment", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3829, + "src": "2402:7:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 3847, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2413:1:36", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "2402:12:36", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 3845, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6848, + 6849 + ], + "referencedDeclaration": 6848, + "src": "2394:7:36", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 3849, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2394:21:36", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3850, + "nodeType": "ExpressionStatement", + "src": "2394:21:36" + }, + { + "expression": { + "argumentTypes": null, + "id": 3860, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 3851, + "name": "_released", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3692, + "src": "2426:9:36", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 3853, + "indexExpression": { + "argumentTypes": null, + "id": 3852, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3807, + "src": "2436:7:36", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "2426:18:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 3858, + "name": "payment", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3829, + "src": "2470:7:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 3854, + "name": "_released", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3692, + "src": "2447:9:36", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 3856, + "indexExpression": { + "argumentTypes": null, + "id": 3855, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3807, + "src": "2457:7:36", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2447:18:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 3857, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 3461, + "src": "2447:22:36", + "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": 3859, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2447:31:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2426:52:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 3861, + "nodeType": "ExpressionStatement", + "src": "2426:52:36" + }, + { + "expression": { + "argumentTypes": null, + "id": 3867, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 3862, + "name": "_totalReleased", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3684, + "src": "2488:14:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 3865, + "name": "payment", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3829, + "src": "2524:7:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 3863, + "name": "_totalReleased", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3684, + "src": "2505:14:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 3864, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 3461, + "src": "2505:18:36", + "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": 3866, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2505:27:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2488:44:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 3868, + "nodeType": "ExpressionStatement", + "src": "2488:44:36" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 3872, + "name": "payment", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3829, + "src": "2560:7:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 3869, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3807, + "src": "2543:7:36", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "id": 3871, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "transfer", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2543:16:36", + "typeDescriptions": { + "typeIdentifier": "t_function_transfer_nonpayable$_t_uint256_$returns$__$", + "typeString": "function (uint256)" + } + }, + "id": 3873, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2543:25:36", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3874, + "nodeType": "ExpressionStatement", + "src": "2543:25:36" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 3876, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3807, + "src": "2599:7:36", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 3877, + "name": "payment", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3829, + "src": "2608:7:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 3875, + "name": "PaymentReleased", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3674, + "src": "2583:15:36", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 3878, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2583:33:36", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3879, + "nodeType": "EmitStatement", + "src": "2578:38:36" + } + ] + }, + "documentation": "@dev Release one of the payee's proportional payment.\n@param account Whose payments will be released.", + "id": 3881, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "release", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3808, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3807, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 3881, + "src": "2131:23:36", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + "typeName": { + "id": 3806, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2131:15:36", + "stateMutability": "payable", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2130:25:36" + }, + "returnParameters": { + "id": 3809, + "nodeType": "ParameterList", + "parameters": [], + "src": "2163:0:36" + }, + "scope": 3936, + "src": "2114:509:36", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 3934, + "nodeType": "Block", + "src": "2869:278:36", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 3893, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 3889, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3883, + "src": "2887:7:36", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 3891, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2906:1:36", + "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": 3890, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2898:7:36", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 3892, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2898:10:36", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "2887:21:36", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 3888, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6848, + 6849 + ], + "referencedDeclaration": 6848, + "src": "2879:7:36", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 3894, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2879:30:36", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3895, + "nodeType": "ExpressionStatement", + "src": "2879:30:36" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3899, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 3897, + "name": "shares_", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3885, + "src": "2927:7:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 3898, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2937:1:36", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "2927:11:36", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 3896, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6848, + 6849 + ], + "referencedDeclaration": 6848, + "src": "2919:7:36", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 3900, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2919:20:36", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3901, + "nodeType": "ExpressionStatement", + "src": "2919:20:36" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3907, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 3903, + "name": "_shares", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3688, + "src": "2957:7:36", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 3905, + "indexExpression": { + "argumentTypes": null, + "id": 3904, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3883, + "src": "2965:7:36", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2957:16:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 3906, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2977:1:36", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "2957:21:36", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 3902, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6848, + 6849 + ], + "referencedDeclaration": 6848, + "src": "2949:7:36", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 3908, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2949:30:36", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3909, + "nodeType": "ExpressionStatement", + "src": "2949:30:36" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 3913, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3883, + "src": "3003:7:36", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 3910, + "name": "_payees", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3695, + "src": "2990:7:36", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + } + }, + "id": 3912, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "push", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2990:12:36", + "typeDescriptions": { + "typeIdentifier": "t_function_arraypush_nonpayable$_t_address_$returns$_t_uint256_$", + "typeString": "function (address) returns (uint256)" + } + }, + "id": 3914, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2990:21:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 3915, + "nodeType": "ExpressionStatement", + "src": "2990:21:36" + }, + { + "expression": { + "argumentTypes": null, + "id": 3920, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 3916, + "name": "_shares", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3688, + "src": "3021:7:36", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 3918, + "indexExpression": { + "argumentTypes": null, + "id": 3917, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3883, + "src": "3029:7:36", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "3021:16:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 3919, + "name": "shares_", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3885, + "src": "3040:7:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3021:26:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 3921, + "nodeType": "ExpressionStatement", + "src": "3021:26:36" + }, + { + "expression": { + "argumentTypes": null, + "id": 3927, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 3922, + "name": "_totalShares", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3682, + "src": "3057:12:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 3925, + "name": "shares_", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3885, + "src": "3089:7:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 3923, + "name": "_totalShares", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3682, + "src": "3072:12:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 3924, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 3461, + "src": "3072:16:36", + "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": 3926, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3072:25:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3057:40:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 3928, + "nodeType": "ExpressionStatement", + "src": "3057:40:36" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 3930, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3883, + "src": "3123:7:36", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 3931, + "name": "shares_", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3885, + "src": "3132:7:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 3929, + "name": "PayeeAdded", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3668, + "src": "3112:10:36", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 3932, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3112:28:36", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3933, + "nodeType": "EmitStatement", + "src": "3107:33:36" + } + ] + }, + "documentation": "@dev Add a new payee to the contract.\n@param account The address of the payee to add.\n@param shares_ The number of shares owned by the payee.", + "id": 3935, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_addPayee", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3886, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3883, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 3935, + "src": "2827:15:36", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3882, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2827:7:36", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 3885, + "name": "shares_", + "nodeType": "VariableDeclaration", + "scope": 3935, + "src": "2844:15:36", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3884, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2844:7:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2826:34:36" + }, + "returnParameters": { + "id": 3887, + "nodeType": "ParameterList", + "parameters": [], + "src": "2869:0:36" + }, + "scope": 3936, + "src": "2808:339:36", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "private" + } + ], + "scope": 3937, + "src": "244:2905:36" + } + ], + "src": "0:3150:36" + }, + "legacyAST": { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/payment/PaymentSplitter.sol", + "exportedSymbols": { + "PaymentSplitter": [ + 3936 + ] + }, + "id": 3937, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 3658, + "literals": [ + "solidity", + "^", + "0.5", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "0:23:36" + }, + { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/math/SafeMath.sol", + "file": "../math/SafeMath.sol", + "id": 3659, + "nodeType": "ImportDirective", + "scope": 3937, + "sourceUnit": 3483, + "src": "25:30:36", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [], + "contractDependencies": [], + "contractKind": "contract", + "documentation": "@title PaymentSplitter\n@dev This contract can be used when payments need to be received by a group\nof people and split proportionately to some number of shares they own.", + "fullyImplemented": true, + "id": 3936, + "linearizedBaseContracts": [ + 3936 + ], + "name": "PaymentSplitter", + "nodeType": "ContractDefinition", + "nodes": [ + { + "id": 3662, + "libraryName": { + "contractScope": null, + "id": 3660, + "name": "SafeMath", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 3482, + "src": "281:8:36", + "typeDescriptions": { + "typeIdentifier": "t_contract$_SafeMath_$3482", + "typeString": "library SafeMath" + } + }, + "nodeType": "UsingForDirective", + "src": "275:27:36", + "typeName": { + "id": 3661, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "294:7:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + { + "anonymous": false, + "documentation": null, + "id": 3668, + "name": "PayeeAdded", + "nodeType": "EventDefinition", + "parameters": { + "id": 3667, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3664, + "indexed": false, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 3668, + "src": "325:15:36", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3663, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "325:7:36", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 3666, + "indexed": false, + "name": "shares", + "nodeType": "VariableDeclaration", + "scope": 3668, + "src": "342:14:36", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3665, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "342:7:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "324:33:36" + }, + "src": "308:50:36" + }, + { + "anonymous": false, + "documentation": null, + "id": 3674, + "name": "PaymentReleased", + "nodeType": "EventDefinition", + "parameters": { + "id": 3673, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3670, + "indexed": false, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 3674, + "src": "385:10:36", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3669, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "385:7:36", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 3672, + "indexed": false, + "name": "amount", + "nodeType": "VariableDeclaration", + "scope": 3674, + "src": "397:14:36", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3671, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "397:7:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "384:28:36" + }, + "src": "363:50:36" + }, + { + "anonymous": false, + "documentation": null, + "id": 3680, + "name": "PaymentReceived", + "nodeType": "EventDefinition", + "parameters": { + "id": 3679, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3676, + "indexed": false, + "name": "from", + "nodeType": "VariableDeclaration", + "scope": 3680, + "src": "440:12:36", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3675, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "440:7:36", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 3678, + "indexed": false, + "name": "amount", + "nodeType": "VariableDeclaration", + "scope": 3680, + "src": "454:14:36", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3677, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "454:7:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "439:30:36" + }, + "src": "418:52:36" + }, + { + "constant": false, + "id": 3682, + "name": "_totalShares", + "nodeType": "VariableDeclaration", + "scope": 3936, + "src": "476:28:36", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3681, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "476:7:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "private" + }, + { + "constant": false, + "id": 3684, + "name": "_totalReleased", + "nodeType": "VariableDeclaration", + "scope": 3936, + "src": "510:30:36", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3683, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "510:7:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "private" + }, + { + "constant": false, + "id": 3688, + "name": "_shares", + "nodeType": "VariableDeclaration", + "scope": 3936, + "src": "547:43:36", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + }, + "typeName": { + "id": 3687, + "keyType": { + "id": 3685, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "555:7:36", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "547:27:36", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + }, + "valueType": { + "id": 3686, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "566:7:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "value": null, + "visibility": "private" + }, + { + "constant": false, + "id": 3692, + "name": "_released", + "nodeType": "VariableDeclaration", + "scope": 3936, + "src": "596:45:36", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + }, + "typeName": { + "id": 3691, + "keyType": { + "id": 3689, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "604:7:36", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "596:27:36", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + }, + "valueType": { + "id": 3690, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "615:7:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "value": null, + "visibility": "private" + }, + { + "constant": false, + "id": 3695, + "name": "_payees", + "nodeType": "VariableDeclaration", + "scope": 3936, + "src": "647:25:36", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[]" + }, + "typeName": { + "baseType": { + "id": 3693, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "647:7:36", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 3694, + "length": null, + "nodeType": "ArrayTypeName", + "src": "647:9:36", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[]" + } + }, + "value": null, + "visibility": "private" + }, + { + "body": { + "id": 3741, + "nodeType": "Block", + "src": "797:202:36", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3709, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 3705, + "name": "payees", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3698, + "src": "815:6:36", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "id": 3706, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "815:13:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 3707, + "name": "shares", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3701, + "src": "832:6:36", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "id": 3708, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "832:13:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "815:30:36", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 3704, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6848, + 6849 + ], + "referencedDeclaration": 6848, + "src": "807:7:36", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 3710, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "807:39:36", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3711, + "nodeType": "ExpressionStatement", + "src": "807:39:36" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3716, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 3713, + "name": "payees", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3698, + "src": "864:6:36", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "id": 3714, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "864:13:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 3715, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "880:1:36", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "864:17:36", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 3712, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6848, + 6849 + ], + "referencedDeclaration": 6848, + "src": "856:7:36", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 3717, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "856:26:36", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3718, + "nodeType": "ExpressionStatement", + "src": "856:26:36" + }, + { + "body": { + "id": 3739, + "nodeType": "Block", + "src": "937:56:36", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 3731, + "name": "payees", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3698, + "src": "961:6:36", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "id": 3733, + "indexExpression": { + "argumentTypes": null, + "id": 3732, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3720, + "src": "968:1:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "961:9:36", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 3734, + "name": "shares", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3701, + "src": "972:6:36", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "id": 3736, + "indexExpression": { + "argumentTypes": null, + "id": 3735, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3720, + "src": "979:1:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "972:9:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 3730, + "name": "_addPayee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3935, + "src": "951:9:36", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 3737, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "951:31:36", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3738, + "nodeType": "ExpressionStatement", + "src": "951:31:36" + } + ] + }, + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3726, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 3723, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3720, + "src": "913:1:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 3724, + "name": "payees", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3698, + "src": "917:6:36", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "id": 3725, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "917:13:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "913:17:36", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 3740, + "initializationExpression": { + "assignments": [ + 3720 + ], + "declarations": [ + { + "constant": false, + "id": 3720, + "name": "i", + "nodeType": "VariableDeclaration", + "scope": 3740, + "src": "898:9:36", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3719, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "898:7:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 3722, + "initialValue": { + "argumentTypes": null, + "hexValue": "30", + "id": 3721, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "910:1:36", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "898:13:36" + }, + "loopExpression": { + "expression": { + "argumentTypes": null, + "id": 3728, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "932:3:36", + "subExpression": { + "argumentTypes": null, + "id": 3727, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3720, + "src": "932:1:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 3729, + "nodeType": "ExpressionStatement", + "src": "932:3:36" + }, + "nodeType": "ForStatement", + "src": "893:100:36" + } + ] + }, + "documentation": "@dev Constructor", + "id": 3742, + "implemented": true, + "kind": "constructor", + "modifiers": [], + "name": "", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3702, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3698, + "name": "payees", + "nodeType": "VariableDeclaration", + "scope": 3742, + "src": "732:23:36", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[]" + }, + "typeName": { + "baseType": { + "id": 3696, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "732:7:36", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 3697, + "length": null, + "nodeType": "ArrayTypeName", + "src": "732:9:36", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[]" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 3701, + "name": "shares", + "nodeType": "VariableDeclaration", + "scope": 3742, + "src": "757:23:36", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 3699, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "757:7:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 3700, + "length": null, + "nodeType": "ArrayTypeName", + "src": "757:9:36", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "731:50:36" + }, + "returnParameters": { + "id": 3703, + "nodeType": "ParameterList", + "parameters": [], + "src": "797:0:36" + }, + "scope": 3936, + "src": "719:280:36", + "stateMutability": "payable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 3752, + "nodeType": "Block", + "src": "1079:60:36", + "statements": [ + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 3746, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6845, + "src": "1110:3:36", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 3747, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "1110:10:36", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 3748, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6845, + "src": "1122:3:36", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 3749, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "value", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "1122:9:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 3745, + "name": "PaymentReceived", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3680, + "src": "1094:15:36", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 3750, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1094:38:36", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3751, + "nodeType": "EmitStatement", + "src": "1089:43:36" + } + ] + }, + "documentation": "@dev payable fallback", + "id": 3753, + "implemented": true, + "kind": "fallback", + "modifiers": [], + "name": "", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3743, + "nodeType": "ParameterList", + "parameters": [], + "src": "1059:2:36" + }, + "returnParameters": { + "id": 3744, + "nodeType": "ParameterList", + "parameters": [], + "src": "1079:0:36" + }, + "scope": 3936, + "src": "1050:89:36", + "stateMutability": "payable", + "superFunction": null, + "visibility": "external" + }, + { + "body": { + "id": 3760, + "nodeType": "Block", + "src": "1263:36:36", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 3758, + "name": "_totalShares", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3682, + "src": "1280:12:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 3757, + "id": 3759, + "nodeType": "Return", + "src": "1273:19:36" + } + ] + }, + "documentation": "@return the total shares of the contract.", + "id": 3761, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "totalShares", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3754, + "nodeType": "ParameterList", + "parameters": [], + "src": "1230:2:36" + }, + "returnParameters": { + "id": 3757, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3756, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 3761, + "src": "1254:7:36", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3755, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1254:7:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1253:9:36" + }, + "scope": 3936, + "src": "1210:89:36", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 3768, + "nodeType": "Block", + "src": "1426:38:36", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 3766, + "name": "_totalReleased", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3684, + "src": "1443:14:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 3765, + "id": 3767, + "nodeType": "Return", + "src": "1436:21:36" + } + ] + }, + "documentation": "@return the total amount already released.", + "id": 3769, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "totalReleased", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3762, + "nodeType": "ParameterList", + "parameters": [], + "src": "1393:2:36" + }, + "returnParameters": { + "id": 3765, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3764, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 3769, + "src": "1417:7:36", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3763, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1417:7:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1416:9:36" + }, + "scope": 3936, + "src": "1371:93:36", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 3780, + "nodeType": "Block", + "src": "1590:40:36", + "statements": [ + { + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 3776, + "name": "_shares", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3688, + "src": "1607:7:36", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 3778, + "indexExpression": { + "argumentTypes": null, + "id": 3777, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3771, + "src": "1615:7:36", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "1607:16:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 3775, + "id": 3779, + "nodeType": "Return", + "src": "1600:23:36" + } + ] + }, + "documentation": "@return the shares of an account.", + "id": 3781, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "shares", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3772, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3771, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 3781, + "src": "1543:15:36", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3770, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1543:7:36", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1542:17:36" + }, + "returnParameters": { + "id": 3775, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3774, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 3781, + "src": "1581:7:36", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3773, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1581:7:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1580:9:36" + }, + "scope": 3936, + "src": "1527:103:36", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 3792, + "nodeType": "Block", + "src": "1775:42:36", + "statements": [ + { + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 3788, + "name": "_released", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3692, + "src": "1792:9:36", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 3790, + "indexExpression": { + "argumentTypes": null, + "id": 3789, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3783, + "src": "1802:7:36", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "1792:18:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 3787, + "id": 3791, + "nodeType": "Return", + "src": "1785:25:36" + } + ] + }, + "documentation": "@return the amount already released to an account.", + "id": 3793, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "released", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3784, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3783, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 3793, + "src": "1728:15:36", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3782, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1728:7:36", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1727:17:36" + }, + "returnParameters": { + "id": 3787, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3786, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 3793, + "src": "1766:7:36", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3785, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1766:7:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1765:9:36" + }, + "scope": 3936, + "src": "1710:107:36", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 3804, + "nodeType": "Block", + "src": "1938:38:36", + "statements": [ + { + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 3800, + "name": "_payees", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3695, + "src": "1955:7:36", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + } + }, + "id": 3802, + "indexExpression": { + "argumentTypes": null, + "id": 3801, + "name": "index", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3795, + "src": "1963:5:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "1955:14:36", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "functionReturnParameters": 3799, + "id": 3803, + "nodeType": "Return", + "src": "1948:21:36" + } + ] + }, + "documentation": "@return the address of a payee.", + "id": 3805, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "payee", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3796, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3795, + "name": "index", + "nodeType": "VariableDeclaration", + "scope": 3805, + "src": "1893:13:36", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3794, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1893:7:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1892:15:36" + }, + "returnParameters": { + "id": 3799, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3798, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 3805, + "src": "1929:7:36", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3797, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1929:7:36", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1928:9:36" + }, + "scope": 3936, + "src": "1878:98:36", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 3880, + "nodeType": "Block", + "src": "2163:460:36", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3815, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 3811, + "name": "_shares", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3688, + "src": "2181:7:36", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 3813, + "indexExpression": { + "argumentTypes": null, + "id": 3812, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3807, + "src": "2189:7:36", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2181:16:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 3814, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2200:1:36", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "2181:20:36", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 3810, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6848, + 6849 + ], + "referencedDeclaration": 6848, + "src": "2173:7:36", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 3816, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2173:29:36", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3817, + "nodeType": "ExpressionStatement", + "src": "2173:29:36" + }, + { + "assignments": [ + 3819 + ], + "declarations": [ + { + "constant": false, + "id": 3819, + "name": "totalReceived", + "nodeType": "VariableDeclaration", + "scope": 3880, + "src": "2213:21:36", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3818, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2213:7:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 3827, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 3825, + "name": "_totalReleased", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3684, + "src": "2263:14:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 3821, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6948, + "src": "2245:4:36", + "typeDescriptions": { + "typeIdentifier": "t_contract$_PaymentSplitter_$3936", + "typeString": "contract PaymentSplitter" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_PaymentSplitter_$3936", + "typeString": "contract PaymentSplitter" + } + ], + "id": 3820, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2237:7:36", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 3822, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2237:13:36", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "id": 3823, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "balance", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2237:21:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 3824, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 3461, + "src": "2237:25:36", + "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": 3826, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2237:41:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "2213:65:36" + }, + { + "assignments": [ + 3829 + ], + "declarations": [ + { + "constant": false, + "id": 3829, + "name": "payment", + "nodeType": "VariableDeclaration", + "scope": 3880, + "src": "2288:15:36", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3828, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2288:7:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 3844, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 3840, + "name": "_released", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3692, + "src": "2364:9:36", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 3842, + "indexExpression": { + "argumentTypes": null, + "id": 3841, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3807, + "src": "2374:7:36", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2364:18:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 3837, + "name": "_totalShares", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3682, + "src": "2346:12:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 3832, + "name": "_shares", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3688, + "src": "2324:7:36", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 3834, + "indexExpression": { + "argumentTypes": null, + "id": 3833, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3807, + "src": "2332:7:36", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2324:16:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 3830, + "name": "totalReceived", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3819, + "src": "2306:13:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 3831, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "mul", + "nodeType": "MemberAccess", + "referencedDeclaration": 3389, + "src": "2306:17:36", + "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": 3835, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2306:35:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 3836, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "div", + "nodeType": "MemberAccess", + "referencedDeclaration": 3413, + "src": "2306:39:36", + "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": 3838, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2306:53:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 3839, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sub", + "nodeType": "MemberAccess", + "referencedDeclaration": 3437, + "src": "2306:57:36", + "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": 3843, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2306:77:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "2288:95:36" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3848, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 3846, + "name": "payment", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3829, + "src": "2402:7:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 3847, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2413:1:36", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "2402:12:36", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 3845, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6848, + 6849 + ], + "referencedDeclaration": 6848, + "src": "2394:7:36", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 3849, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2394:21:36", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3850, + "nodeType": "ExpressionStatement", + "src": "2394:21:36" + }, + { + "expression": { + "argumentTypes": null, + "id": 3860, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 3851, + "name": "_released", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3692, + "src": "2426:9:36", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 3853, + "indexExpression": { + "argumentTypes": null, + "id": 3852, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3807, + "src": "2436:7:36", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "2426:18:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 3858, + "name": "payment", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3829, + "src": "2470:7:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 3854, + "name": "_released", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3692, + "src": "2447:9:36", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 3856, + "indexExpression": { + "argumentTypes": null, + "id": 3855, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3807, + "src": "2457:7:36", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2447:18:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 3857, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 3461, + "src": "2447:22:36", + "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": 3859, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2447:31:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2426:52:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 3861, + "nodeType": "ExpressionStatement", + "src": "2426:52:36" + }, + { + "expression": { + "argumentTypes": null, + "id": 3867, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 3862, + "name": "_totalReleased", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3684, + "src": "2488:14:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 3865, + "name": "payment", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3829, + "src": "2524:7:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 3863, + "name": "_totalReleased", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3684, + "src": "2505:14:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 3864, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 3461, + "src": "2505:18:36", + "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": 3866, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2505:27:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2488:44:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 3868, + "nodeType": "ExpressionStatement", + "src": "2488:44:36" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 3872, + "name": "payment", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3829, + "src": "2560:7:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 3869, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3807, + "src": "2543:7:36", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "id": 3871, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "transfer", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2543:16:36", + "typeDescriptions": { + "typeIdentifier": "t_function_transfer_nonpayable$_t_uint256_$returns$__$", + "typeString": "function (uint256)" + } + }, + "id": 3873, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2543:25:36", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3874, + "nodeType": "ExpressionStatement", + "src": "2543:25:36" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 3876, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3807, + "src": "2599:7:36", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 3877, + "name": "payment", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3829, + "src": "2608:7:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 3875, + "name": "PaymentReleased", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3674, + "src": "2583:15:36", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 3878, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2583:33:36", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3879, + "nodeType": "EmitStatement", + "src": "2578:38:36" + } + ] + }, + "documentation": "@dev Release one of the payee's proportional payment.\n@param account Whose payments will be released.", + "id": 3881, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "release", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3808, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3807, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 3881, + "src": "2131:23:36", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + "typeName": { + "id": 3806, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2131:15:36", + "stateMutability": "payable", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2130:25:36" + }, + "returnParameters": { + "id": 3809, + "nodeType": "ParameterList", + "parameters": [], + "src": "2163:0:36" + }, + "scope": 3936, + "src": "2114:509:36", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 3934, + "nodeType": "Block", + "src": "2869:278:36", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 3893, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 3889, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3883, + "src": "2887:7:36", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 3891, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2906:1:36", + "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": 3890, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2898:7:36", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 3892, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2898:10:36", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "2887:21:36", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 3888, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6848, + 6849 + ], + "referencedDeclaration": 6848, + "src": "2879:7:36", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 3894, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2879:30:36", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3895, + "nodeType": "ExpressionStatement", + "src": "2879:30:36" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3899, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 3897, + "name": "shares_", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3885, + "src": "2927:7:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 3898, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2937:1:36", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "2927:11:36", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 3896, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6848, + 6849 + ], + "referencedDeclaration": 6848, + "src": "2919:7:36", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 3900, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2919:20:36", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3901, + "nodeType": "ExpressionStatement", + "src": "2919:20:36" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3907, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 3903, + "name": "_shares", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3688, + "src": "2957:7:36", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 3905, + "indexExpression": { + "argumentTypes": null, + "id": 3904, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3883, + "src": "2965:7:36", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2957:16:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 3906, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2977:1:36", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "2957:21:36", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 3902, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6848, + 6849 + ], + "referencedDeclaration": 6848, + "src": "2949:7:36", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 3908, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2949:30:36", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3909, + "nodeType": "ExpressionStatement", + "src": "2949:30:36" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 3913, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3883, + "src": "3003:7:36", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 3910, + "name": "_payees", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3695, + "src": "2990:7:36", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + } + }, + "id": 3912, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "push", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2990:12:36", + "typeDescriptions": { + "typeIdentifier": "t_function_arraypush_nonpayable$_t_address_$returns$_t_uint256_$", + "typeString": "function (address) returns (uint256)" + } + }, + "id": 3914, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2990:21:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 3915, + "nodeType": "ExpressionStatement", + "src": "2990:21:36" + }, + { + "expression": { + "argumentTypes": null, + "id": 3920, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 3916, + "name": "_shares", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3688, + "src": "3021:7:36", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 3918, + "indexExpression": { + "argumentTypes": null, + "id": 3917, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3883, + "src": "3029:7:36", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "3021:16:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 3919, + "name": "shares_", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3885, + "src": "3040:7:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3021:26:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 3921, + "nodeType": "ExpressionStatement", + "src": "3021:26:36" + }, + { + "expression": { + "argumentTypes": null, + "id": 3927, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 3922, + "name": "_totalShares", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3682, + "src": "3057:12:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 3925, + "name": "shares_", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3885, + "src": "3089:7:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 3923, + "name": "_totalShares", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3682, + "src": "3072:12:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 3924, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 3461, + "src": "3072:16:36", + "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": 3926, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3072:25:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3057:40:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 3928, + "nodeType": "ExpressionStatement", + "src": "3057:40:36" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 3930, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3883, + "src": "3123:7:36", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 3931, + "name": "shares_", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3885, + "src": "3132:7:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 3929, + "name": "PayeeAdded", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3668, + "src": "3112:10:36", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 3932, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3112:28:36", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3933, + "nodeType": "EmitStatement", + "src": "3107:33:36" + } + ] + }, + "documentation": "@dev Add a new payee to the contract.\n@param account The address of the payee to add.\n@param shares_ The number of shares owned by the payee.", + "id": 3935, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_addPayee", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3886, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3883, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 3935, + "src": "2827:15:36", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3882, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2827:7:36", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 3885, + "name": "shares_", + "nodeType": "VariableDeclaration", + "scope": 3935, + "src": "2844:15:36", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3884, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2844:7:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2826:34:36" + }, + "returnParameters": { + "id": 3887, + "nodeType": "ParameterList", + "parameters": [], + "src": "2869:0:36" + }, + "scope": 3936, + "src": "2808:339:36", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "private" + } + ], + "scope": 3937, + "src": "244:2905:36" + } + ], + "src": "0:3150:36" + }, + "compiler": { + "name": "solc", + "version": "0.5.0+commit.1d4f565a.Emscripten.clang" + }, + "networks": {}, + "schemaVersion": "3.0.0", + "updatedAt": "2019-01-04T21:44:02.887Z", + "devdoc": { + "details": "This contract can be used when payments need to be received by a group of people and split proportionately to some number of shares they own.", + "methods": { + "constructor": { + "details": "Constructor" + }, + "payee(uint256)": { + "return": "the address of a payee." + }, + "release(address)": { + "details": "Release one of the payee's proportional payment.", + "params": { + "account": "Whose payments will be released." + } + }, + "released(address)": { + "return": "the amount already released to an account." + }, + "shares(address)": { + "return": "the shares of an account." + }, + "totalReleased()": { + "return": "the total amount already released." + }, + "totalShares()": { + "return": "the total shares of the contract." + } + }, + "title": "PaymentSplitter" + }, + "userdoc": { + "methods": {} + } +} \ No newline at end of file diff --git a/node_modules/openzeppelin-solidity/build/contracts/PostDeliveryCrowdsale.json b/node_modules/openzeppelin-solidity/build/contracts/PostDeliveryCrowdsale.json new file mode 100644 index 0000000..a9ba569 --- /dev/null +++ b/node_modules/openzeppelin-solidity/build/contracts/PostDeliveryCrowdsale.json @@ -0,0 +1,2234 @@ +{ + "contractName": "PostDeliveryCrowdsale", + "abi": [ + { + "constant": true, + "inputs": [], + "name": "hasClosed", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "rate", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "weiRaised", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "isOpen", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "closingTime", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "wallet", + "outputs": [ + { + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "openingTime", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "beneficiary", + "type": "address" + } + ], + "name": "buyTokens", + "outputs": [], + "payable": true, + "stateMutability": "payable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "token", + "outputs": [ + { + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "payable": true, + "stateMutability": "payable", + "type": "fallback" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "purchaser", + "type": "address" + }, + { + "indexed": true, + "name": "beneficiary", + "type": "address" + }, + { + "indexed": false, + "name": "value", + "type": "uint256" + }, + { + "indexed": false, + "name": "amount", + "type": "uint256" + } + ], + "name": "TokensPurchased", + "type": "event" + }, + { + "constant": false, + "inputs": [ + { + "name": "beneficiary", + "type": "address" + } + ], + "name": "withdrawTokens", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "account", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "sourceMap": "", + "deployedSourceMap": "", + "source": "pragma solidity ^0.5.0;\n\nimport \"../validation/TimedCrowdsale.sol\";\nimport \"../../math/SafeMath.sol\";\n\n/**\n * @title PostDeliveryCrowdsale\n * @dev Crowdsale that locks tokens from withdrawal until it ends.\n */\ncontract PostDeliveryCrowdsale is TimedCrowdsale {\n using SafeMath for uint256;\n\n mapping(address => uint256) private _balances;\n\n /**\n * @dev Withdraw tokens only after crowdsale ends.\n * @param beneficiary Whose tokens will be withdrawn.\n */\n function withdrawTokens(address beneficiary) public {\n require(hasClosed());\n uint256 amount = _balances[beneficiary];\n require(amount > 0);\n _balances[beneficiary] = 0;\n _deliverTokens(beneficiary, amount);\n }\n\n /**\n * @return the balance of an account.\n */\n function balanceOf(address account) public view returns (uint256) {\n return _balances[account];\n }\n\n /**\n * @dev Overrides parent by storing balances instead of issuing tokens right away.\n * @param beneficiary Token purchaser\n * @param tokenAmount Amount of tokens purchased\n */\n function _processPurchase(address beneficiary, uint256 tokenAmount) internal {\n _balances[beneficiary] = _balances[beneficiary].add(tokenAmount);\n }\n\n}\n", + "sourcePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/crowdsale/distribution/PostDeliveryCrowdsale.sol", + "ast": { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/crowdsale/distribution/PostDeliveryCrowdsale.sol", + "exportedSymbols": { + "PostDeliveryCrowdsale": [ + 1121 + ] + }, + "id": 1122, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 1044, + "literals": [ + "solidity", + "^", + "0.5", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "0:23:9" + }, + { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/crowdsale/validation/TimedCrowdsale.sol", + "file": "../validation/TimedCrowdsale.sol", + "id": 1045, + "nodeType": "ImportDirective", + "scope": 1122, + "sourceUnit": 1848, + "src": "25:42:9", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/math/SafeMath.sol", + "file": "../../math/SafeMath.sol", + "id": 1046, + "nodeType": "ImportDirective", + "scope": 1122, + "sourceUnit": 3483, + "src": "68:33:9", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 1047, + "name": "TimedCrowdsale", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 1847, + "src": "244:14:9", + "typeDescriptions": { + "typeIdentifier": "t_contract$_TimedCrowdsale_$1847", + "typeString": "contract TimedCrowdsale" + } + }, + "id": 1048, + "nodeType": "InheritanceSpecifier", + "src": "244:14:9" + } + ], + "contractDependencies": [ + 984, + 1847, + 6830 + ], + "contractKind": "contract", + "documentation": "@title PostDeliveryCrowdsale\n@dev Crowdsale that locks tokens from withdrawal until it ends.", + "fullyImplemented": false, + "id": 1121, + "linearizedBaseContracts": [ + 1121, + 1847, + 984, + 6830 + ], + "name": "PostDeliveryCrowdsale", + "nodeType": "ContractDefinition", + "nodes": [ + { + "id": 1051, + "libraryName": { + "contractScope": null, + "id": 1049, + "name": "SafeMath", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 3482, + "src": "271:8:9", + "typeDescriptions": { + "typeIdentifier": "t_contract$_SafeMath_$3482", + "typeString": "library SafeMath" + } + }, + "nodeType": "UsingForDirective", + "src": "265:27:9", + "typeName": { + "id": 1050, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "284:7:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + { + "constant": false, + "id": 1055, + "name": "_balances", + "nodeType": "VariableDeclaration", + "scope": 1121, + "src": "298:45:9", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + }, + "typeName": { + "id": 1054, + "keyType": { + "id": 1052, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "306:7:9", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "298:27:9", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + }, + "valueType": { + "id": 1053, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "317:7:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "value": null, + "visibility": "private" + }, + { + "body": { + "id": 1088, + "nodeType": "Block", + "src": "531:196:9", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 1061, + "name": "hasClosed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1829, + "src": "549:9:9", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_bool_$", + "typeString": "function () view returns (bool)" + } + }, + "id": 1062, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "549:11:9", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 1060, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6848, + 6849 + ], + "referencedDeclaration": 6848, + "src": "541:7:9", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 1063, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "541:20:9", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1064, + "nodeType": "ExpressionStatement", + "src": "541:20:9" + }, + { + "assignments": [ + 1066 + ], + "declarations": [ + { + "constant": false, + "id": 1066, + "name": "amount", + "nodeType": "VariableDeclaration", + "scope": 1088, + "src": "571:14:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1065, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "571:7:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1070, + "initialValue": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1067, + "name": "_balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1055, + "src": "588:9:9", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 1069, + "indexExpression": { + "argumentTypes": null, + "id": 1068, + "name": "beneficiary", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1057, + "src": "598:11:9", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "588:22:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "571:39:9" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1074, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1072, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1066, + "src": "628:6:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 1073, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "637:1:9", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "628:10:9", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 1071, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6848, + 6849 + ], + "referencedDeclaration": 6848, + "src": "620:7:9", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 1075, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "620:19:9", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1076, + "nodeType": "ExpressionStatement", + "src": "620:19:9" + }, + { + "expression": { + "argumentTypes": null, + "id": 1081, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1077, + "name": "_balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1055, + "src": "649:9:9", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 1079, + "indexExpression": { + "argumentTypes": null, + "id": 1078, + "name": "beneficiary", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1057, + "src": "659:11:9", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "649:22:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "30", + "id": 1080, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "674:1:9", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "649:26:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1082, + "nodeType": "ExpressionStatement", + "src": "649:26:9" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1084, + "name": "beneficiary", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1057, + "src": "700:11:9", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1085, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1066, + "src": "713:6:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1083, + "name": "_deliverTokens", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 938, + "src": "685:14:9", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 1086, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "685:35:9", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1087, + "nodeType": "ExpressionStatement", + "src": "685:35:9" + } + ] + }, + "documentation": "@dev Withdraw tokens only after crowdsale ends.\n@param beneficiary Whose tokens will be withdrawn.", + "id": 1089, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "withdrawTokens", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1058, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1057, + "name": "beneficiary", + "nodeType": "VariableDeclaration", + "scope": 1089, + "src": "503:19:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1056, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "503:7:9", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "502:21:9" + }, + "returnParameters": { + "id": 1059, + "nodeType": "ParameterList", + "parameters": [], + "src": "531:0:9" + }, + "scope": 1121, + "src": "479:248:9", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 1100, + "nodeType": "Block", + "src": "857:42:9", + "statements": [ + { + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1096, + "name": "_balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1055, + "src": "874:9:9", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 1098, + "indexExpression": { + "argumentTypes": null, + "id": 1097, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1091, + "src": "884:7:9", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "874:18:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 1095, + "id": 1099, + "nodeType": "Return", + "src": "867:25:9" + } + ] + }, + "documentation": "@return the balance of an account.", + "id": 1101, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "balanceOf", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1092, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1091, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 1101, + "src": "810:15:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1090, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "810:7:9", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "809:17:9" + }, + "returnParameters": { + "id": 1095, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1094, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 1101, + "src": "848:7:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1093, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "848:7:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "847:9:9" + }, + "scope": 1121, + "src": "791:108:9", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 1119, + "nodeType": "Block", + "src": "1180:81:9", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 1117, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1108, + "name": "_balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1055, + "src": "1190:9:9", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 1110, + "indexExpression": { + "argumentTypes": null, + "id": 1109, + "name": "beneficiary", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1103, + "src": "1200:11:9", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "1190:22:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1115, + "name": "tokenAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1105, + "src": "1242:11:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1111, + "name": "_balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1055, + "src": "1215:9:9", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 1113, + "indexExpression": { + "argumentTypes": null, + "id": 1112, + "name": "beneficiary", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1103, + "src": "1225:11:9", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "1215:22:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1114, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 3461, + "src": "1215:26:9", + "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": 1116, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1215:39:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1190:64:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1118, + "nodeType": "ExpressionStatement", + "src": "1190:64:9" + } + ] + }, + "documentation": "@dev Overrides parent by storing balances instead of issuing tokens right away.\n@param beneficiary Token purchaser\n@param tokenAmount Amount of tokens purchased", + "id": 1120, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_processPurchase", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1106, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1103, + "name": "beneficiary", + "nodeType": "VariableDeclaration", + "scope": 1120, + "src": "1129:19:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1102, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1129:7:9", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1105, + "name": "tokenAmount", + "nodeType": "VariableDeclaration", + "scope": 1120, + "src": "1150:19:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1104, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1150:7:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1128:42:9" + }, + "returnParameters": { + "id": 1107, + "nodeType": "ParameterList", + "parameters": [], + "src": "1180:0:9" + }, + "scope": 1121, + "src": "1103:158:9", + "stateMutability": "nonpayable", + "superFunction": 951, + "visibility": "internal" + } + ], + "scope": 1122, + "src": "210:1054:9" + } + ], + "src": "0:1265:9" + }, + "legacyAST": { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/crowdsale/distribution/PostDeliveryCrowdsale.sol", + "exportedSymbols": { + "PostDeliveryCrowdsale": [ + 1121 + ] + }, + "id": 1122, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 1044, + "literals": [ + "solidity", + "^", + "0.5", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "0:23:9" + }, + { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/crowdsale/validation/TimedCrowdsale.sol", + "file": "../validation/TimedCrowdsale.sol", + "id": 1045, + "nodeType": "ImportDirective", + "scope": 1122, + "sourceUnit": 1848, + "src": "25:42:9", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/math/SafeMath.sol", + "file": "../../math/SafeMath.sol", + "id": 1046, + "nodeType": "ImportDirective", + "scope": 1122, + "sourceUnit": 3483, + "src": "68:33:9", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 1047, + "name": "TimedCrowdsale", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 1847, + "src": "244:14:9", + "typeDescriptions": { + "typeIdentifier": "t_contract$_TimedCrowdsale_$1847", + "typeString": "contract TimedCrowdsale" + } + }, + "id": 1048, + "nodeType": "InheritanceSpecifier", + "src": "244:14:9" + } + ], + "contractDependencies": [ + 984, + 1847, + 6830 + ], + "contractKind": "contract", + "documentation": "@title PostDeliveryCrowdsale\n@dev Crowdsale that locks tokens from withdrawal until it ends.", + "fullyImplemented": false, + "id": 1121, + "linearizedBaseContracts": [ + 1121, + 1847, + 984, + 6830 + ], + "name": "PostDeliveryCrowdsale", + "nodeType": "ContractDefinition", + "nodes": [ + { + "id": 1051, + "libraryName": { + "contractScope": null, + "id": 1049, + "name": "SafeMath", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 3482, + "src": "271:8:9", + "typeDescriptions": { + "typeIdentifier": "t_contract$_SafeMath_$3482", + "typeString": "library SafeMath" + } + }, + "nodeType": "UsingForDirective", + "src": "265:27:9", + "typeName": { + "id": 1050, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "284:7:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + { + "constant": false, + "id": 1055, + "name": "_balances", + "nodeType": "VariableDeclaration", + "scope": 1121, + "src": "298:45:9", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + }, + "typeName": { + "id": 1054, + "keyType": { + "id": 1052, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "306:7:9", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "298:27:9", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + }, + "valueType": { + "id": 1053, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "317:7:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "value": null, + "visibility": "private" + }, + { + "body": { + "id": 1088, + "nodeType": "Block", + "src": "531:196:9", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 1061, + "name": "hasClosed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1829, + "src": "549:9:9", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_bool_$", + "typeString": "function () view returns (bool)" + } + }, + "id": 1062, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "549:11:9", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 1060, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6848, + 6849 + ], + "referencedDeclaration": 6848, + "src": "541:7:9", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 1063, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "541:20:9", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1064, + "nodeType": "ExpressionStatement", + "src": "541:20:9" + }, + { + "assignments": [ + 1066 + ], + "declarations": [ + { + "constant": false, + "id": 1066, + "name": "amount", + "nodeType": "VariableDeclaration", + "scope": 1088, + "src": "571:14:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1065, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "571:7:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1070, + "initialValue": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1067, + "name": "_balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1055, + "src": "588:9:9", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 1069, + "indexExpression": { + "argumentTypes": null, + "id": 1068, + "name": "beneficiary", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1057, + "src": "598:11:9", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "588:22:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "571:39:9" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1074, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1072, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1066, + "src": "628:6:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 1073, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "637:1:9", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "628:10:9", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 1071, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6848, + 6849 + ], + "referencedDeclaration": 6848, + "src": "620:7:9", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 1075, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "620:19:9", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1076, + "nodeType": "ExpressionStatement", + "src": "620:19:9" + }, + { + "expression": { + "argumentTypes": null, + "id": 1081, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1077, + "name": "_balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1055, + "src": "649:9:9", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 1079, + "indexExpression": { + "argumentTypes": null, + "id": 1078, + "name": "beneficiary", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1057, + "src": "659:11:9", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "649:22:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "30", + "id": 1080, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "674:1:9", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "649:26:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1082, + "nodeType": "ExpressionStatement", + "src": "649:26:9" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1084, + "name": "beneficiary", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1057, + "src": "700:11:9", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1085, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1066, + "src": "713:6:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1083, + "name": "_deliverTokens", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 938, + "src": "685:14:9", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 1086, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "685:35:9", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1087, + "nodeType": "ExpressionStatement", + "src": "685:35:9" + } + ] + }, + "documentation": "@dev Withdraw tokens only after crowdsale ends.\n@param beneficiary Whose tokens will be withdrawn.", + "id": 1089, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "withdrawTokens", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1058, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1057, + "name": "beneficiary", + "nodeType": "VariableDeclaration", + "scope": 1089, + "src": "503:19:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1056, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "503:7:9", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "502:21:9" + }, + "returnParameters": { + "id": 1059, + "nodeType": "ParameterList", + "parameters": [], + "src": "531:0:9" + }, + "scope": 1121, + "src": "479:248:9", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 1100, + "nodeType": "Block", + "src": "857:42:9", + "statements": [ + { + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1096, + "name": "_balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1055, + "src": "874:9:9", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 1098, + "indexExpression": { + "argumentTypes": null, + "id": 1097, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1091, + "src": "884:7:9", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "874:18:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 1095, + "id": 1099, + "nodeType": "Return", + "src": "867:25:9" + } + ] + }, + "documentation": "@return the balance of an account.", + "id": 1101, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "balanceOf", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1092, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1091, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 1101, + "src": "810:15:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1090, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "810:7:9", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "809:17:9" + }, + "returnParameters": { + "id": 1095, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1094, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 1101, + "src": "848:7:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1093, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "848:7:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "847:9:9" + }, + "scope": 1121, + "src": "791:108:9", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 1119, + "nodeType": "Block", + "src": "1180:81:9", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 1117, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1108, + "name": "_balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1055, + "src": "1190:9:9", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 1110, + "indexExpression": { + "argumentTypes": null, + "id": 1109, + "name": "beneficiary", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1103, + "src": "1200:11:9", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "1190:22:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1115, + "name": "tokenAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1105, + "src": "1242:11:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1111, + "name": "_balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1055, + "src": "1215:9:9", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 1113, + "indexExpression": { + "argumentTypes": null, + "id": 1112, + "name": "beneficiary", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1103, + "src": "1225:11:9", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "1215:22:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1114, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 3461, + "src": "1215:26:9", + "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": 1116, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1215:39:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1190:64:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1118, + "nodeType": "ExpressionStatement", + "src": "1190:64:9" + } + ] + }, + "documentation": "@dev Overrides parent by storing balances instead of issuing tokens right away.\n@param beneficiary Token purchaser\n@param tokenAmount Amount of tokens purchased", + "id": 1120, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_processPurchase", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1106, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1103, + "name": "beneficiary", + "nodeType": "VariableDeclaration", + "scope": 1120, + "src": "1129:19:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1102, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1129:7:9", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1105, + "name": "tokenAmount", + "nodeType": "VariableDeclaration", + "scope": 1120, + "src": "1150:19:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1104, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1150:7:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1128:42:9" + }, + "returnParameters": { + "id": 1107, + "nodeType": "ParameterList", + "parameters": [], + "src": "1180:0:9" + }, + "scope": 1121, + "src": "1103:158:9", + "stateMutability": "nonpayable", + "superFunction": 951, + "visibility": "internal" + } + ], + "scope": 1122, + "src": "210:1054:9" + } + ], + "src": "0:1265:9" + }, + "compiler": { + "name": "solc", + "version": "0.5.0+commit.1d4f565a.Emscripten.clang" + }, + "networks": {}, + "schemaVersion": "3.0.0", + "updatedAt": "2019-01-04T21:44:02.871Z", + "devdoc": { + "details": "Crowdsale that locks tokens from withdrawal until it ends.", + "methods": { + "balanceOf(address)": { + "return": "the balance of an account." + }, + "buyTokens(address)": { + "details": "low level token purchase ***DO NOT OVERRIDE*** This function has a non-reentrancy guard, so it shouldn't be called by another `nonReentrant` function.", + "params": { + "beneficiary": "Recipient of the token purchase" + } + }, + "closingTime()": { + "return": "the crowdsale closing time." + }, + "hasClosed()": { + "details": "Checks whether the period in which the crowdsale is open has already elapsed.", + "return": "Whether crowdsale period has elapsed" + }, + "isOpen()": { + "return": "true if the crowdsale is open, false otherwise." + }, + "openingTime()": { + "return": "the crowdsale opening time." + }, + "rate()": { + "return": "the number of token units a buyer gets per wei." + }, + "token()": { + "return": "the token being sold." + }, + "wallet()": { + "return": "the address where funds are collected." + }, + "weiRaised()": { + "return": "the amount of wei raised." + }, + "withdrawTokens(address)": { + "details": "Withdraw tokens only after crowdsale ends.", + "params": { + "beneficiary": "Whose tokens will be withdrawn." + } + } + }, + "title": "PostDeliveryCrowdsale" + }, + "userdoc": { + "methods": {} + } +} \ No newline at end of file diff --git a/node_modules/openzeppelin-solidity/build/contracts/PullPayment.json b/node_modules/openzeppelin-solidity/build/contracts/PullPayment.json new file mode 100644 index 0000000..0b06970 --- /dev/null +++ b/node_modules/openzeppelin-solidity/build/contracts/PullPayment.json @@ -0,0 +1,1458 @@ +{ + "contractName": "PullPayment", + "abi": [ + { + "inputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "constant": false, + "inputs": [ + { + "name": "payee", + "type": "address" + } + ], + "name": "withdrawPayments", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "dest", + "type": "address" + } + ], + "name": "payments", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "sourceMap": "", + "deployedSourceMap": "", + "source": "pragma solidity ^0.5.0;\n\nimport \"./escrow/Escrow.sol\";\n\n/**\n * @title PullPayment\n * @dev Base contract supporting async send for pull payments. Inherit from this\n * contract and use _asyncTransfer instead of send or transfer.\n */\ncontract PullPayment {\n Escrow private _escrow;\n\n constructor () internal {\n _escrow = new Escrow();\n }\n\n /**\n * @dev Withdraw accumulated balance.\n * @param payee Whose balance will be withdrawn.\n */\n function withdrawPayments(address payable payee) public {\n _escrow.withdraw(payee);\n }\n\n /**\n * @dev Returns the credit owed to an address.\n * @param dest The creditor's address.\n */\n function payments(address dest) public view returns (uint256) {\n return _escrow.depositsOf(dest);\n }\n\n /**\n * @dev Called by the payer to store the sent amount as credit to be pulled.\n * @param dest The destination address of the funds.\n * @param amount The amount to transfer.\n */\n function _asyncTransfer(address dest, uint256 amount) internal {\n _escrow.deposit.value(amount)(dest);\n }\n}\n", + "sourcePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/payment/PullPayment.sol", + "ast": { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/payment/PullPayment.sol", + "exportedSymbols": { + "PullPayment": [ + 3995 + ] + }, + "id": 3996, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 3938, + "literals": [ + "solidity", + "^", + "0.5", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "0:23:37" + }, + { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/payment/escrow/Escrow.sol", + "file": "./escrow/Escrow.sol", + "id": 3939, + "nodeType": "ImportDirective", + "scope": 3996, + "sourceUnit": 4125, + "src": "25:29:37", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [], + "contractDependencies": [ + 4124 + ], + "contractKind": "contract", + "documentation": "@title PullPayment\n@dev Base contract supporting async send for pull payments. Inherit from this\ncontract and use _asyncTransfer instead of send or transfer.", + "fullyImplemented": true, + "id": 3995, + "linearizedBaseContracts": [ + 3995 + ], + "name": "PullPayment", + "nodeType": "ContractDefinition", + "nodes": [ + { + "constant": false, + "id": 3941, + "name": "_escrow", + "nodeType": "VariableDeclaration", + "scope": 3995, + "src": "258:22:37", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Escrow_$4124", + "typeString": "contract Escrow" + }, + "typeName": { + "contractScope": null, + "id": 3940, + "name": "Escrow", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 4124, + "src": "258:6:37", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Escrow_$4124", + "typeString": "contract Escrow" + } + }, + "value": null, + "visibility": "private" + }, + { + "body": { + "id": 3950, + "nodeType": "Block", + "src": "311:39:37", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 3948, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 3944, + "name": "_escrow", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3941, + "src": "321:7:37", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Escrow_$4124", + "typeString": "contract Escrow" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 3946, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "NewExpression", + "src": "331:10:37", + "typeDescriptions": { + "typeIdentifier": "t_function_creation_nonpayable$__$returns$_t_contract$_Escrow_$4124_$", + "typeString": "function () returns (contract Escrow)" + }, + "typeName": { + "contractScope": null, + "id": 3945, + "name": "Escrow", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 4124, + "src": "335:6:37", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Escrow_$4124", + "typeString": "contract Escrow" + } + } + }, + "id": 3947, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "331:12:37", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Escrow_$4124", + "typeString": "contract Escrow" + } + }, + "src": "321:22:37", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Escrow_$4124", + "typeString": "contract Escrow" + } + }, + "id": 3949, + "nodeType": "ExpressionStatement", + "src": "321:22:37" + } + ] + }, + "documentation": null, + "id": 3951, + "implemented": true, + "kind": "constructor", + "modifiers": [], + "name": "", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3942, + "nodeType": "ParameterList", + "parameters": [], + "src": "299:2:37" + }, + "returnParameters": { + "id": 3943, + "nodeType": "ParameterList", + "parameters": [], + "src": "311:0:37" + }, + "scope": 3995, + "src": "287:63:37", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 3962, + "nodeType": "Block", + "src": "520:40:37", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 3959, + "name": "payee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3953, + "src": "547:5:37", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "expression": { + "argumentTypes": null, + "id": 3956, + "name": "_escrow", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3941, + "src": "530:7:37", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Escrow_$4124", + "typeString": "contract Escrow" + } + }, + "id": 3958, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "withdraw", + "nodeType": "MemberAccess", + "referencedDeclaration": 4123, + "src": "530:16:37", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_payable_$returns$__$", + "typeString": "function (address payable) external" + } + }, + "id": 3960, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "530:23:37", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3961, + "nodeType": "ExpressionStatement", + "src": "530:23:37" + } + ] + }, + "documentation": "@dev Withdraw accumulated balance.\n@param payee Whose balance will be withdrawn.", + "id": 3963, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "withdrawPayments", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3954, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3953, + "name": "payee", + "nodeType": "VariableDeclaration", + "scope": 3963, + "src": "490:21:37", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + "typeName": { + "id": 3952, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "490:15:37", + "stateMutability": "payable", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "489:23:37" + }, + "returnParameters": { + "id": 3955, + "nodeType": "ParameterList", + "parameters": [], + "src": "520:0:37" + }, + "scope": 3995, + "src": "464:96:37", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 3975, + "nodeType": "Block", + "src": "735:48:37", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 3972, + "name": "dest", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3965, + "src": "771:4:37", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 3970, + "name": "_escrow", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3941, + "src": "752:7:37", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Escrow_$4124", + "typeString": "contract Escrow" + } + }, + "id": 3971, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "depositsOf", + "nodeType": "MemberAccess", + "referencedDeclaration": 4063, + "src": "752:18:37", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$", + "typeString": "function (address) view external returns (uint256)" + } + }, + "id": 3973, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "752:24:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 3969, + "id": 3974, + "nodeType": "Return", + "src": "745:31:37" + } + ] + }, + "documentation": "@dev Returns the credit owed to an address.\n@param dest The creditor's address.", + "id": 3976, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "payments", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3966, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3965, + "name": "dest", + "nodeType": "VariableDeclaration", + "scope": 3976, + "src": "691:12:37", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3964, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "691:7:37", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "690:14:37" + }, + "returnParameters": { + "id": 3969, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3968, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 3976, + "src": "726:7:37", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3967, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "726:7:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "725:9:37" + }, + "scope": 3995, + "src": "673:110:37", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 3993, + "nodeType": "Block", + "src": "1047:52:37", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 3990, + "name": "dest", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3978, + "src": "1087:4:37", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "arguments": [ + { + "argumentTypes": null, + "id": 3988, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3980, + "src": "1079:6:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 3983, + "name": "_escrow", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3941, + "src": "1057:7:37", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Escrow_$4124", + "typeString": "contract Escrow" + } + }, + "id": 3986, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "deposit", + "nodeType": "MemberAccess", + "referencedDeclaration": 4092, + "src": "1057:15:37", + "typeDescriptions": { + "typeIdentifier": "t_function_external_payable$_t_address_$returns$__$", + "typeString": "function (address) payable external" + } + }, + "id": 3987, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "value", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "1057:21:37", + "typeDescriptions": { + "typeIdentifier": "t_function_setvalue_nonpayable$_t_uint256_$returns$_t_function_external_payable$_t_address_$returns$__$value_$", + "typeString": "function (uint256) returns (function (address) payable external)" + } + }, + "id": 3989, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1057:29:37", + "typeDescriptions": { + "typeIdentifier": "t_function_external_payable$_t_address_$returns$__$value", + "typeString": "function (address) payable external" + } + }, + "id": 3991, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1057:35:37", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3992, + "nodeType": "ExpressionStatement", + "src": "1057:35:37" + } + ] + }, + "documentation": "@dev Called by the payer to store the sent amount as credit to be pulled.\n@param dest The destination address of the funds.\n@param amount The amount to transfer.", + "id": 3994, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_asyncTransfer", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3981, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3978, + "name": "dest", + "nodeType": "VariableDeclaration", + "scope": 3994, + "src": "1008:12:37", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3977, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1008:7:37", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 3980, + "name": "amount", + "nodeType": "VariableDeclaration", + "scope": 3994, + "src": "1022:14:37", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3979, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1022:7:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1007:30:37" + }, + "returnParameters": { + "id": 3982, + "nodeType": "ParameterList", + "parameters": [], + "src": "1047:0:37" + }, + "scope": 3995, + "src": "984:115:37", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + } + ], + "scope": 3996, + "src": "231:870:37" + } + ], + "src": "0:1102:37" + }, + "legacyAST": { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/payment/PullPayment.sol", + "exportedSymbols": { + "PullPayment": [ + 3995 + ] + }, + "id": 3996, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 3938, + "literals": [ + "solidity", + "^", + "0.5", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "0:23:37" + }, + { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/payment/escrow/Escrow.sol", + "file": "./escrow/Escrow.sol", + "id": 3939, + "nodeType": "ImportDirective", + "scope": 3996, + "sourceUnit": 4125, + "src": "25:29:37", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [], + "contractDependencies": [ + 4124 + ], + "contractKind": "contract", + "documentation": "@title PullPayment\n@dev Base contract supporting async send for pull payments. Inherit from this\ncontract and use _asyncTransfer instead of send or transfer.", + "fullyImplemented": true, + "id": 3995, + "linearizedBaseContracts": [ + 3995 + ], + "name": "PullPayment", + "nodeType": "ContractDefinition", + "nodes": [ + { + "constant": false, + "id": 3941, + "name": "_escrow", + "nodeType": "VariableDeclaration", + "scope": 3995, + "src": "258:22:37", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Escrow_$4124", + "typeString": "contract Escrow" + }, + "typeName": { + "contractScope": null, + "id": 3940, + "name": "Escrow", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 4124, + "src": "258:6:37", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Escrow_$4124", + "typeString": "contract Escrow" + } + }, + "value": null, + "visibility": "private" + }, + { + "body": { + "id": 3950, + "nodeType": "Block", + "src": "311:39:37", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 3948, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 3944, + "name": "_escrow", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3941, + "src": "321:7:37", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Escrow_$4124", + "typeString": "contract Escrow" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 3946, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "NewExpression", + "src": "331:10:37", + "typeDescriptions": { + "typeIdentifier": "t_function_creation_nonpayable$__$returns$_t_contract$_Escrow_$4124_$", + "typeString": "function () returns (contract Escrow)" + }, + "typeName": { + "contractScope": null, + "id": 3945, + "name": "Escrow", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 4124, + "src": "335:6:37", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Escrow_$4124", + "typeString": "contract Escrow" + } + } + }, + "id": 3947, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "331:12:37", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Escrow_$4124", + "typeString": "contract Escrow" + } + }, + "src": "321:22:37", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Escrow_$4124", + "typeString": "contract Escrow" + } + }, + "id": 3949, + "nodeType": "ExpressionStatement", + "src": "321:22:37" + } + ] + }, + "documentation": null, + "id": 3951, + "implemented": true, + "kind": "constructor", + "modifiers": [], + "name": "", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3942, + "nodeType": "ParameterList", + "parameters": [], + "src": "299:2:37" + }, + "returnParameters": { + "id": 3943, + "nodeType": "ParameterList", + "parameters": [], + "src": "311:0:37" + }, + "scope": 3995, + "src": "287:63:37", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 3962, + "nodeType": "Block", + "src": "520:40:37", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 3959, + "name": "payee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3953, + "src": "547:5:37", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "expression": { + "argumentTypes": null, + "id": 3956, + "name": "_escrow", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3941, + "src": "530:7:37", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Escrow_$4124", + "typeString": "contract Escrow" + } + }, + "id": 3958, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "withdraw", + "nodeType": "MemberAccess", + "referencedDeclaration": 4123, + "src": "530:16:37", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_payable_$returns$__$", + "typeString": "function (address payable) external" + } + }, + "id": 3960, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "530:23:37", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3961, + "nodeType": "ExpressionStatement", + "src": "530:23:37" + } + ] + }, + "documentation": "@dev Withdraw accumulated balance.\n@param payee Whose balance will be withdrawn.", + "id": 3963, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "withdrawPayments", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3954, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3953, + "name": "payee", + "nodeType": "VariableDeclaration", + "scope": 3963, + "src": "490:21:37", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + "typeName": { + "id": 3952, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "490:15:37", + "stateMutability": "payable", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "489:23:37" + }, + "returnParameters": { + "id": 3955, + "nodeType": "ParameterList", + "parameters": [], + "src": "520:0:37" + }, + "scope": 3995, + "src": "464:96:37", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 3975, + "nodeType": "Block", + "src": "735:48:37", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 3972, + "name": "dest", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3965, + "src": "771:4:37", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 3970, + "name": "_escrow", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3941, + "src": "752:7:37", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Escrow_$4124", + "typeString": "contract Escrow" + } + }, + "id": 3971, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "depositsOf", + "nodeType": "MemberAccess", + "referencedDeclaration": 4063, + "src": "752:18:37", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$", + "typeString": "function (address) view external returns (uint256)" + } + }, + "id": 3973, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "752:24:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 3969, + "id": 3974, + "nodeType": "Return", + "src": "745:31:37" + } + ] + }, + "documentation": "@dev Returns the credit owed to an address.\n@param dest The creditor's address.", + "id": 3976, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "payments", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3966, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3965, + "name": "dest", + "nodeType": "VariableDeclaration", + "scope": 3976, + "src": "691:12:37", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3964, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "691:7:37", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "690:14:37" + }, + "returnParameters": { + "id": 3969, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3968, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 3976, + "src": "726:7:37", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3967, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "726:7:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "725:9:37" + }, + "scope": 3995, + "src": "673:110:37", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 3993, + "nodeType": "Block", + "src": "1047:52:37", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 3990, + "name": "dest", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3978, + "src": "1087:4:37", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "arguments": [ + { + "argumentTypes": null, + "id": 3988, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3980, + "src": "1079:6:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 3983, + "name": "_escrow", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3941, + "src": "1057:7:37", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Escrow_$4124", + "typeString": "contract Escrow" + } + }, + "id": 3986, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "deposit", + "nodeType": "MemberAccess", + "referencedDeclaration": 4092, + "src": "1057:15:37", + "typeDescriptions": { + "typeIdentifier": "t_function_external_payable$_t_address_$returns$__$", + "typeString": "function (address) payable external" + } + }, + "id": 3987, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "value", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "1057:21:37", + "typeDescriptions": { + "typeIdentifier": "t_function_setvalue_nonpayable$_t_uint256_$returns$_t_function_external_payable$_t_address_$returns$__$value_$", + "typeString": "function (uint256) returns (function (address) payable external)" + } + }, + "id": 3989, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1057:29:37", + "typeDescriptions": { + "typeIdentifier": "t_function_external_payable$_t_address_$returns$__$value", + "typeString": "function (address) payable external" + } + }, + "id": 3991, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1057:35:37", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3992, + "nodeType": "ExpressionStatement", + "src": "1057:35:37" + } + ] + }, + "documentation": "@dev Called by the payer to store the sent amount as credit to be pulled.\n@param dest The destination address of the funds.\n@param amount The amount to transfer.", + "id": 3994, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_asyncTransfer", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3981, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3978, + "name": "dest", + "nodeType": "VariableDeclaration", + "scope": 3994, + "src": "1008:12:37", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3977, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1008:7:37", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 3980, + "name": "amount", + "nodeType": "VariableDeclaration", + "scope": 3994, + "src": "1022:14:37", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3979, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1022:7:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1007:30:37" + }, + "returnParameters": { + "id": 3982, + "nodeType": "ParameterList", + "parameters": [], + "src": "1047:0:37" + }, + "scope": 3995, + "src": "984:115:37", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + } + ], + "scope": 3996, + "src": "231:870:37" + } + ], + "src": "0:1102:37" + }, + "compiler": { + "name": "solc", + "version": "0.5.0+commit.1d4f565a.Emscripten.clang" + }, + "networks": {}, + "schemaVersion": "3.0.0", + "updatedAt": "2019-01-04T21:44:02.888Z", + "devdoc": { + "details": "Base contract supporting async send for pull payments. Inherit from this contract and use _asyncTransfer instead of send or transfer.", + "methods": { + "payments(address)": { + "details": "Returns the credit owed to an address.", + "params": { + "dest": "The creditor's address." + } + }, + "withdrawPayments(address)": { + "details": "Withdraw accumulated balance.", + "params": { + "payee": "Whose balance will be withdrawn." + } + } + }, + "title": "PullPayment" + }, + "userdoc": { + "methods": {} + } +} \ No newline at end of file diff --git a/node_modules/openzeppelin-solidity/build/contracts/ReentrancyGuard.json b/node_modules/openzeppelin-solidity/build/contracts/ReentrancyGuard.json new file mode 100644 index 0000000..23f1ab1 --- /dev/null +++ b/node_modules/openzeppelin-solidity/build/contracts/ReentrancyGuard.json @@ -0,0 +1,765 @@ +{ + "contractName": "ReentrancyGuard", + "abi": [ + { + "inputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "constructor" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "sourceMap": "", + "deployedSourceMap": "", + "source": "pragma solidity ^0.5.0;\n\n/**\n * @title Helps contracts guard against reentrancy attacks.\n * @author Remco Bloemen , Eenae \n * @dev If you mark a function `nonReentrant`, you should also\n * mark it `external`.\n */\ncontract ReentrancyGuard {\n /// @dev counter to allow mutex lock with only one SSTORE operation\n uint256 private _guardCounter;\n\n constructor () internal {\n // The counter starts at one to prevent changing it from zero to a non-zero\n // value, which is a more expensive operation.\n _guardCounter = 1;\n }\n\n /**\n * @dev Prevents a contract from calling itself, directly or indirectly.\n * Calling a `nonReentrant` function from another `nonReentrant`\n * function is not supported. It is possible to prevent this from happening\n * by making the `nonReentrant` function external, and make it call a\n * `private` function that does the actual work.\n */\n modifier nonReentrant() {\n _guardCounter += 1;\n uint256 localCounter = _guardCounter;\n _;\n require(localCounter == _guardCounter);\n }\n}\n", + "sourcePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/utils/ReentrancyGuard.sol", + "ast": { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/utils/ReentrancyGuard.sol", + "exportedSymbols": { + "ReentrancyGuard": [ + 6830 + ] + }, + "id": 6831, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 6801, + "literals": [ + "solidity", + "^", + "0.5", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "0:23:66" + }, + { + "baseContracts": [], + "contractDependencies": [], + "contractKind": "contract", + "documentation": "@title Helps contracts guard against reentrancy attacks.\n@author Remco Bloemen , Eenae \n@dev If you mark a function `nonReentrant`, you should also\nmark it `external`.", + "fullyImplemented": true, + "id": 6830, + "linearizedBaseContracts": [ + 6830 + ], + "name": "ReentrancyGuard", + "nodeType": "ContractDefinition", + "nodes": [ + { + "constant": false, + "id": 6803, + "name": "_guardCounter", + "nodeType": "VariableDeclaration", + "scope": 6830, + "src": "351:29:66", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6802, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "351:7:66", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "private" + }, + { + "body": { + "id": 6810, + "nodeType": "Block", + "src": "411:173:66", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 6808, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 6806, + "name": "_guardCounter", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6803, + "src": "560:13:66", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "31", + "id": 6807, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "576:1:66", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "560:17:66", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 6809, + "nodeType": "ExpressionStatement", + "src": "560:17:66" + } + ] + }, + "documentation": null, + "id": 6811, + "implemented": true, + "kind": "constructor", + "modifiers": [], + "name": "", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6804, + "nodeType": "ParameterList", + "parameters": [], + "src": "399:2:66" + }, + "returnParameters": { + "id": 6805, + "nodeType": "ParameterList", + "parameters": [], + "src": "411:0:66" + }, + "scope": 6830, + "src": "387:197:66", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 6828, + "nodeType": "Block", + "src": "983:140:66", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 6815, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 6813, + "name": "_guardCounter", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6803, + "src": "993:13:66", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "+=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "31", + "id": 6814, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1010:1:66", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "993:18:66", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 6816, + "nodeType": "ExpressionStatement", + "src": "993:18:66" + }, + { + "assignments": [ + 6818 + ], + "declarations": [ + { + "constant": false, + "id": 6818, + "name": "localCounter", + "nodeType": "VariableDeclaration", + "scope": 6828, + "src": "1021:20:66", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6817, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1021:7:66", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 6820, + "initialValue": { + "argumentTypes": null, + "id": 6819, + "name": "_guardCounter", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6803, + "src": "1044:13:66", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "1021:36:66" + }, + { + "id": 6821, + "nodeType": "PlaceholderStatement", + "src": "1067:1:66" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6825, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 6823, + "name": "localCounter", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6818, + "src": "1086:12:66", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 6824, + "name": "_guardCounter", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6803, + "src": "1102:13:66", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1086:29:66", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 6822, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6848, + 6849 + ], + "referencedDeclaration": 6848, + "src": "1078:7:66", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 6826, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1078:38:66", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 6827, + "nodeType": "ExpressionStatement", + "src": "1078:38:66" + } + ] + }, + "documentation": "@dev Prevents a contract from calling itself, directly or indirectly.\nCalling a `nonReentrant` function from another `nonReentrant`\nfunction is not supported. It is possible to prevent this from happening\nby making the `nonReentrant` function external, and make it call a\n`private` function that does the actual work.", + "id": 6829, + "name": "nonReentrant", + "nodeType": "ModifierDefinition", + "parameters": { + "id": 6812, + "nodeType": "ParameterList", + "parameters": [], + "src": "980:2:66" + }, + "src": "959:164:66", + "visibility": "internal" + } + ], + "scope": 6831, + "src": "248:877:66" + } + ], + "src": "0:1126:66" + }, + "legacyAST": { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/utils/ReentrancyGuard.sol", + "exportedSymbols": { + "ReentrancyGuard": [ + 6830 + ] + }, + "id": 6831, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 6801, + "literals": [ + "solidity", + "^", + "0.5", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "0:23:66" + }, + { + "baseContracts": [], + "contractDependencies": [], + "contractKind": "contract", + "documentation": "@title Helps contracts guard against reentrancy attacks.\n@author Remco Bloemen , Eenae \n@dev If you mark a function `nonReentrant`, you should also\nmark it `external`.", + "fullyImplemented": true, + "id": 6830, + "linearizedBaseContracts": [ + 6830 + ], + "name": "ReentrancyGuard", + "nodeType": "ContractDefinition", + "nodes": [ + { + "constant": false, + "id": 6803, + "name": "_guardCounter", + "nodeType": "VariableDeclaration", + "scope": 6830, + "src": "351:29:66", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6802, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "351:7:66", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "private" + }, + { + "body": { + "id": 6810, + "nodeType": "Block", + "src": "411:173:66", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 6808, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 6806, + "name": "_guardCounter", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6803, + "src": "560:13:66", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "31", + "id": 6807, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "576:1:66", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "560:17:66", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 6809, + "nodeType": "ExpressionStatement", + "src": "560:17:66" + } + ] + }, + "documentation": null, + "id": 6811, + "implemented": true, + "kind": "constructor", + "modifiers": [], + "name": "", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6804, + "nodeType": "ParameterList", + "parameters": [], + "src": "399:2:66" + }, + "returnParameters": { + "id": 6805, + "nodeType": "ParameterList", + "parameters": [], + "src": "411:0:66" + }, + "scope": 6830, + "src": "387:197:66", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 6828, + "nodeType": "Block", + "src": "983:140:66", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 6815, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 6813, + "name": "_guardCounter", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6803, + "src": "993:13:66", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "+=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "31", + "id": 6814, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1010:1:66", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "993:18:66", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 6816, + "nodeType": "ExpressionStatement", + "src": "993:18:66" + }, + { + "assignments": [ + 6818 + ], + "declarations": [ + { + "constant": false, + "id": 6818, + "name": "localCounter", + "nodeType": "VariableDeclaration", + "scope": 6828, + "src": "1021:20:66", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6817, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1021:7:66", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 6820, + "initialValue": { + "argumentTypes": null, + "id": 6819, + "name": "_guardCounter", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6803, + "src": "1044:13:66", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "1021:36:66" + }, + { + "id": 6821, + "nodeType": "PlaceholderStatement", + "src": "1067:1:66" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6825, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 6823, + "name": "localCounter", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6818, + "src": "1086:12:66", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 6824, + "name": "_guardCounter", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6803, + "src": "1102:13:66", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1086:29:66", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 6822, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6848, + 6849 + ], + "referencedDeclaration": 6848, + "src": "1078:7:66", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 6826, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1078:38:66", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 6827, + "nodeType": "ExpressionStatement", + "src": "1078:38:66" + } + ] + }, + "documentation": "@dev Prevents a contract from calling itself, directly or indirectly.\nCalling a `nonReentrant` function from another `nonReentrant`\nfunction is not supported. It is possible to prevent this from happening\nby making the `nonReentrant` function external, and make it call a\n`private` function that does the actual work.", + "id": 6829, + "name": "nonReentrant", + "nodeType": "ModifierDefinition", + "parameters": { + "id": 6812, + "nodeType": "ParameterList", + "parameters": [], + "src": "980:2:66" + }, + "src": "959:164:66", + "visibility": "internal" + } + ], + "scope": 6831, + "src": "248:877:66" + } + ], + "src": "0:1126:66" + }, + "compiler": { + "name": "solc", + "version": "0.5.0+commit.1d4f565a.Emscripten.clang" + }, + "networks": {}, + "schemaVersion": "3.0.0", + "updatedAt": "2019-01-04T21:44:02.908Z", + "devdoc": { + "author": "Remco Bloemen , Eenae ", + "details": "If you mark a function `nonReentrant`, you should also mark it `external`.", + "methods": {}, + "title": "Helps contracts guard against reentrancy attacks." + }, + "userdoc": { + "methods": {} + } +} \ No newline at end of file diff --git a/node_modules/openzeppelin-solidity/build/contracts/RefundEscrow.json b/node_modules/openzeppelin-solidity/build/contracts/RefundEscrow.json new file mode 100644 index 0000000..582ec55 --- /dev/null +++ b/node_modules/openzeppelin-solidity/build/contracts/RefundEscrow.json @@ -0,0 +1,3910 @@ +{ + "contractName": "RefundEscrow", + "abi": [ + { + "constant": false, + "inputs": [ + { + "name": "recipient", + "type": "address" + } + ], + "name": "transferPrimary", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "payee", + "type": "address" + } + ], + "name": "withdraw", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "primary", + "outputs": [ + { + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "payee", + "type": "address" + } + ], + "name": "depositsOf", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "name": "beneficiary", + "type": "address" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [], + "name": "RefundsClosed", + "type": "event" + }, + { + "anonymous": false, + "inputs": [], + "name": "RefundsEnabled", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "payee", + "type": "address" + }, + { + "indexed": false, + "name": "weiAmount", + "type": "uint256" + } + ], + "name": "Deposited", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "payee", + "type": "address" + }, + { + "indexed": false, + "name": "weiAmount", + "type": "uint256" + } + ], + "name": "Withdrawn", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "name": "recipient", + "type": "address" + } + ], + "name": "PrimaryTransferred", + "type": "event" + }, + { + "constant": true, + "inputs": [], + "name": "state", + "outputs": [ + { + "name": "", + "type": "uint8" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "beneficiary", + "outputs": [ + { + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "refundee", + "type": "address" + } + ], + "name": "deposit", + "outputs": [], + "payable": true, + "stateMutability": "payable", + "type": "function" + }, + { + "constant": false, + "inputs": [], + "name": "close", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [], + "name": "enableRefunds", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [], + "name": "beneficiaryWithdraw", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "", + "type": "address" + } + ], + "name": "withdrawalAllowed", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + } + ], + "bytecode": "0x608060405234801561001057600080fd5b50604051602080610d748339810180604052602081101561003057600080fd5b8101908080519060200190929190505050336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f4101e71e974f68df5e9730cc223280b41654676bbb052cdcc735c3337e64d2d96000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff16604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a1600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415151561014157600080fd5b80600260016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600260006101000a81548160ff021916908360028111156101a157fe5b021790555050610bbe806101b66000396000f3fe6080604052600436106100af576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680632348238c146100b457806338af3eed1461010557806343d726d61461015c57806351cff8d914610173578063685ca194146101c45780638c52dc411461022d5780639af6549a14610244578063c19d93fb1461025b578063c6dbdf6114610294578063e3a9db1a146102eb578063f340fa0114610350575b600080fd5b3480156100c057600080fd5b50610103600480360360208110156100d757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610394565b005b34801561011157600080fd5b5061011a6104f2565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561016857600080fd5b5061017161051c565b005b34801561017f57600080fd5b506101c26004803603602081101561019657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506105fc565b005b3480156101d057600080fd5b50610213600480360360208110156101e757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061061c565b604051808215151515815260200191505060405180910390f35b34801561023957600080fd5b5061024261064e565b005b34801561025057600080fd5b5061025961072f565b005b34801561026757600080fd5b506102706107e4565b6040518082600281111561028057fe5b60ff16815260200191505060405180910390f35b3480156102a057600080fd5b506102a96107fb565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156102f757600080fd5b5061033a6004803603602081101561030e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610824565b6040518082815260200191505060405180910390f35b6103926004803603602081101561036657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061086d565b005b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156103ef57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415151561042b57600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f4101e71e974f68df5e9730cc223280b41654676bbb052cdcc735c3337e64d2d96000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff16604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a150565b6000600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561057757600080fd5b6000600281111561058457fe5b600260009054906101000a900460ff16600281111561059f57fe5b1415156105ab57600080fd5b60028060006101000a81548160ff021916908360028111156105c957fe5b02179055507f088672c3a6e342f7cd94a65ba63b79df24a8973927b4d05d803c44bbf787d12f60405160405180910390a1565b6106058161061c565b151561061057600080fd5b610619816108ad565b50565b60006001600281111561062b57fe5b600260009054906101000a900460ff16600281111561064657fe5b149050919050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156106a957600080fd5b600060028111156106b657fe5b600260009054906101000a900460ff1660028111156106d157fe5b1415156106dd57600080fd5b6001600260006101000a81548160ff021916908360028111156106fc57fe5b02179055507f599d8e5a83cffb867d051598c4d70e805d59802d8081c1c7d6dffc5b6aca2b8960405160405180910390a1565b60028081111561073b57fe5b600260009054906101000a900460ff16600281111561075657fe5b14151561076257600080fd5b600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc3073ffffffffffffffffffffffffffffffffffffffff16319081150290604051600060405180830381858888f193505050501580156107e1573d6000803e3d6000fd5b50565b6000600260009054906101000a900460ff16905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000600281111561087a57fe5b600260009054906101000a900460ff16600281111561089557fe5b1415156108a157600080fd5b6108aa81610a2a565b50565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561090857600080fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156109d7573d6000803e3d6000fd5b508173ffffffffffffffffffffffffffffffffffffffff167f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d5826040518082815260200191505060405180910390a25050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610a8557600080fd5b6000349050610adc81600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610b7190919063ffffffff16565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff167f2da466a7b24304f47e87fa2e1e5a81b9831ce54fec19055ce277ca2f39ba42c4826040518082815260200191505060405180910390a25050565b6000808284019050838110151515610b8857600080fd5b809150509291505056fea165627a7a723058201c6d3b7121b283ac8184f061d9ec3c5f4d7baf0970c2e03f500e300a4a962ffd0029", + "deployedBytecode": "0x6080604052600436106100af576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680632348238c146100b457806338af3eed1461010557806343d726d61461015c57806351cff8d914610173578063685ca194146101c45780638c52dc411461022d5780639af6549a14610244578063c19d93fb1461025b578063c6dbdf6114610294578063e3a9db1a146102eb578063f340fa0114610350575b600080fd5b3480156100c057600080fd5b50610103600480360360208110156100d757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610394565b005b34801561011157600080fd5b5061011a6104f2565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561016857600080fd5b5061017161051c565b005b34801561017f57600080fd5b506101c26004803603602081101561019657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506105fc565b005b3480156101d057600080fd5b50610213600480360360208110156101e757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061061c565b604051808215151515815260200191505060405180910390f35b34801561023957600080fd5b5061024261064e565b005b34801561025057600080fd5b5061025961072f565b005b34801561026757600080fd5b506102706107e4565b6040518082600281111561028057fe5b60ff16815260200191505060405180910390f35b3480156102a057600080fd5b506102a96107fb565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156102f757600080fd5b5061033a6004803603602081101561030e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610824565b6040518082815260200191505060405180910390f35b6103926004803603602081101561036657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061086d565b005b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156103ef57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415151561042b57600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f4101e71e974f68df5e9730cc223280b41654676bbb052cdcc735c3337e64d2d96000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff16604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a150565b6000600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561057757600080fd5b6000600281111561058457fe5b600260009054906101000a900460ff16600281111561059f57fe5b1415156105ab57600080fd5b60028060006101000a81548160ff021916908360028111156105c957fe5b02179055507f088672c3a6e342f7cd94a65ba63b79df24a8973927b4d05d803c44bbf787d12f60405160405180910390a1565b6106058161061c565b151561061057600080fd5b610619816108ad565b50565b60006001600281111561062b57fe5b600260009054906101000a900460ff16600281111561064657fe5b149050919050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156106a957600080fd5b600060028111156106b657fe5b600260009054906101000a900460ff1660028111156106d157fe5b1415156106dd57600080fd5b6001600260006101000a81548160ff021916908360028111156106fc57fe5b02179055507f599d8e5a83cffb867d051598c4d70e805d59802d8081c1c7d6dffc5b6aca2b8960405160405180910390a1565b60028081111561073b57fe5b600260009054906101000a900460ff16600281111561075657fe5b14151561076257600080fd5b600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc3073ffffffffffffffffffffffffffffffffffffffff16319081150290604051600060405180830381858888f193505050501580156107e1573d6000803e3d6000fd5b50565b6000600260009054906101000a900460ff16905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000600281111561087a57fe5b600260009054906101000a900460ff16600281111561089557fe5b1415156108a157600080fd5b6108aa81610a2a565b50565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561090857600080fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156109d7573d6000803e3d6000fd5b508173ffffffffffffffffffffffffffffffffffffffff167f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d5826040518082815260200191505060405180910390a25050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610a8557600080fd5b6000349050610adc81600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610b7190919063ffffffff16565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff167f2da466a7b24304f47e87fa2e1e5a81b9831ce54fec19055ce277ca2f39ba42c4826040518082815260200191505060405180910390a25050565b6000808284019050838110151515610b8857600080fd5b809150509291505056fea165627a7a723058201c6d3b7121b283ac8184f061d9ec3c5f4d7baf0970c2e03f500e300a4a962ffd0029", + "sourceMap": "624:2144:40:-;;;944:167;8:9:-1;5:2;;;30:1;27;20:12;5:2;944:167:40;;;;;;;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;944:167:40;;;;;;;;;;;;;;;;418:10:35;407:8;;:21;;;;;;;;;;;;;;;;;;443:28;462:8;;;;;;;;;;;443:28;;;;;;;;;;;;;;;;;;;;;;1034:1:40;1011:25;;:11;:25;;;;1003:34;;;;;;;;1062:11;1047:12;;:26;;;;;;;;;;;;;;;;;;1092:12;1083:6;;:21;;;;;;;;;;;;;;;;;;;;;;;;944:167;624:2144;;;;;;", + "deployedSourceMap": "624:2144:40:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;922:185:35;;8:9:-1;5:2;;;30:1;27;20:12;5:2;922:185:35;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;922:185:35;;;;;;;;;;;;;;;;;;;;;;1324:89:40;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1324:89:40;;;;;;;;;;;;;;;;;;;;;;;;;;;1817:145;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1817:145:40;;;;;;546:129:38;;8:9:-1;5:2;;;30:1;27;20:12;5:2;546:129:38;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;546:129:38;;;;;;;;;;;;;;;;;;;;;;2654:112:40;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2654:112:40;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2654:112:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2058:157;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2058:157:40;;;;;;2284:140;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2284:140:40;;;;;;1181:75;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1181:75:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;718:81:35;;8:9:-1;5:2;;;30:1;27;20:12;5:2;718:81:35;;;;;;;;;;;;;;;;;;;;;;;;;;;982:105:39;;8:9:-1;5:2;;;30:1;27;20:12;5:2;982:105:39;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;982:105:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1565:131:40;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1565:131:40;;;;;;;;;;;;;;;;;;;;;;922:185:35;626:8;;;;;;;;;;;612:22;;:10;:22;;;604:31;;;;;;;;1024:1;1003:23;;:9;:23;;;;995:32;;;;;;;;1048:9;1037:8;;:20;;;;;;;;;;;;;;;;;;1072:28;1091:8;;;;;;;;;;;1072:28;;;;;;;;;;;;;;;;;;;;;;922:185;:::o;1324:89:40:-;1368:7;1394:12;;;;;;;;;;;1387:19;;1324:89;:::o;1817:145::-;626:8:35;;;;;;;;;;;612:22;;:10;:22;;;604:31;;;;;;;;1881:12:40;1871:22;;;;;;;;:6;;;;;;;;;;;:22;;;;;;;;;1863:31;;;;;;;;1913:12;1904:6;;:21;;;;;;;;;;;;;;;;;;;;;;;;1940:15;;;;;;;;;;1817:145::o;546:129:38:-;612:24;630:5;612:17;:24::i;:::-;604:33;;;;;;;;647:21;662:5;647:14;:21::i;:::-;546:129;:::o;2654:112:40:-;2711:4;2744:15;2734:25;;;;;;;;:6;;;;;;;;;;;:25;;;;;;;;;2727:32;;2654:112;;;:::o;2058:157::-;626:8:35;;;;;;;;;;;612:22;;:10;:22;;;604:31;;;;;;;;2130:12:40;2120:22;;;;;;;;:6;;;;;;;;;;;:22;;;;;;;;;2112:31;;;;;;;;2162:15;2153:6;;:24;;;;;;;;;;;;;;;;;;;;;;;;2192:16;;;;;;;;;;2058:157::o;2284:140::-;2350:12;2340:22;;;;;;;;:6;;;;;;;;;;;:22;;;;;;;;;2332:31;;;;;;;;2373:12;;;;;;;;;;;:21;;:44;2403:4;2395:21;;;2373:44;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2373:44:40;2284:140::o;1181:75::-;1219:5;1243:6;;;;;;;;;;;1236:13;;1181:75;:::o;718:81:35:-;758:7;784:8;;;;;;;;;;;777:15;;718:81;:::o;982:105:39:-;1038:7;1064:9;:16;1074:5;1064:16;;;;;;;;;;;;;;;;1057:23;;982:105;;;:::o;1565:131:40:-;1643:12;1633:22;;;;;;;;:6;;;;;;;;;;;:22;;;;;;;;;1625:31;;;;;;;;1666:23;1680:8;1666:13;:23::i;:::-;1565:131;:::o;1580:217:39:-;626:8:35;;;;;;;;;;;612:22;;:10;:22;;;604:31;;;;;;;;1650:15:39;1668:9;:16;1678:5;1668:16;;;;;;;;;;;;;;;;1650:34;;1714:1;1695:9;:16;1705:5;1695:16;;;;;;;;;;;;;;;:20;;;;1726:5;:14;;:23;1741:7;1726:23;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1726:23:39;1775:5;1765:25;;;1782:7;1765:25;;;;;;;;;;;;;;;;;;645:1:35;1580:217:39;:::o;1226:199::-;626:8:35;;;;;;;;;;;612:22;;:10;:22;;;604:31;;;;;;;;1295:14:39;1312:9;1295:26;;1350:28;1371:6;1350:9;:16;1360:5;1350:16;;;;;;;;;;;;;;;;:20;;:28;;;;:::i;:::-;1331:9;:16;1341:5;1331:16;;;;;;;;;;;;;;;:47;;;;1404:5;1394:24;;;1411:6;1394:24;;;;;;;;;;;;;;;;;;645:1:35;1226:199:39;:::o;1431:145:33:-;1489:7;1508:9;1524:1;1520;:5;1508:17;;1548:1;1543;:6;;1535:15;;;;;;;;1568:1;1561:8;;;1431:145;;;;:::o", + "source": "pragma solidity ^0.5.0;\n\nimport \"./ConditionalEscrow.sol\";\n\n/**\n * @title RefundEscrow\n * @dev Escrow that holds funds for a beneficiary, deposited from multiple\n * parties.\n * @dev Intended usage: See Escrow.sol. Same usage guidelines apply here.\n * @dev The primary account (that is, the contract that instantiates this\n * contract) may deposit, close the deposit period, and allow for either\n * withdrawal by the beneficiary, or refunds to the depositors. All interactions\n * with RefundEscrow will be made through the primary contract. See the\n * RefundableCrowdsale contract for an example of RefundEscrow’s use.\n */\ncontract RefundEscrow is ConditionalEscrow {\n enum State { Active, Refunding, Closed }\n\n event RefundsClosed();\n event RefundsEnabled();\n\n State private _state;\n address payable private _beneficiary;\n\n /**\n * @dev Constructor.\n * @param beneficiary The beneficiary of the deposits.\n */\n constructor (address payable beneficiary) public {\n require(beneficiary != address(0));\n _beneficiary = beneficiary;\n _state = State.Active;\n }\n\n /**\n * @return the current state of the escrow.\n */\n function state() public view returns (State) {\n return _state;\n }\n\n /**\n * @return the beneficiary of the escrow.\n */\n function beneficiary() public view returns (address) {\n return _beneficiary;\n }\n\n /**\n * @dev Stores funds that may later be refunded.\n * @param refundee The address funds will be sent to if a refund occurs.\n */\n function deposit(address refundee) public payable {\n require(_state == State.Active);\n super.deposit(refundee);\n }\n\n /**\n * @dev Allows for the beneficiary to withdraw their funds, rejecting\n * further deposits.\n */\n function close() public onlyPrimary {\n require(_state == State.Active);\n _state = State.Closed;\n emit RefundsClosed();\n }\n\n /**\n * @dev Allows for refunds to take place, rejecting further deposits.\n */\n function enableRefunds() public onlyPrimary {\n require(_state == State.Active);\n _state = State.Refunding;\n emit RefundsEnabled();\n }\n\n /**\n * @dev Withdraws the beneficiary's funds.\n */\n function beneficiaryWithdraw() public {\n require(_state == State.Closed);\n _beneficiary.transfer(address(this).balance);\n }\n\n /**\n * @dev Returns whether refundees can withdraw their deposits (be refunded). The overriden function receives a\n * 'payee' argument, but we ignore it here since the condition is global, not per-payee.\n */\n function withdrawalAllowed(address) public view returns (bool) {\n return _state == State.Refunding;\n }\n}\n", + "sourcePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/payment/escrow/RefundEscrow.sol", + "ast": { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/payment/escrow/RefundEscrow.sol", + "exportedSymbols": { + "RefundEscrow": [ + 4275 + ] + }, + "id": 4276, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 4126, + "literals": [ + "solidity", + "^", + "0.5", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "0:23:40" + }, + { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/payment/escrow/ConditionalEscrow.sol", + "file": "./ConditionalEscrow.sol", + "id": 4127, + "nodeType": "ImportDirective", + "scope": 4276, + "sourceUnit": 4027, + "src": "25:33:40", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 4128, + "name": "ConditionalEscrow", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 4026, + "src": "649:17:40", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ConditionalEscrow_$4026", + "typeString": "contract ConditionalEscrow" + } + }, + "id": 4129, + "nodeType": "InheritanceSpecifier", + "src": "649:17:40" + } + ], + "contractDependencies": [ + 3656, + 4026, + 4124 + ], + "contractKind": "contract", + "documentation": "@title RefundEscrow\n@dev Escrow that holds funds for a beneficiary, deposited from multiple\nparties.\n@dev Intended usage: See Escrow.sol. Same usage guidelines apply here.\n@dev The primary account (that is, the contract that instantiates this\ncontract) may deposit, close the deposit period, and allow for either\nwithdrawal by the beneficiary, or refunds to the depositors. All interactions\nwith RefundEscrow will be made through the primary contract. See the\nRefundableCrowdsale contract for an example of RefundEscrow’s use.", + "fullyImplemented": true, + "id": 4275, + "linearizedBaseContracts": [ + 4275, + 4026, + 4124, + 3656 + ], + "name": "RefundEscrow", + "nodeType": "ContractDefinition", + "nodes": [ + { + "canonicalName": "RefundEscrow.State", + "id": 4133, + "members": [ + { + "id": 4130, + "name": "Active", + "nodeType": "EnumValue", + "src": "686:6:40" + }, + { + "id": 4131, + "name": "Refunding", + "nodeType": "EnumValue", + "src": "694:9:40" + }, + { + "id": 4132, + "name": "Closed", + "nodeType": "EnumValue", + "src": "705:6:40" + } + ], + "name": "State", + "nodeType": "EnumDefinition", + "src": "673:40:40" + }, + { + "anonymous": false, + "documentation": null, + "id": 4135, + "name": "RefundsClosed", + "nodeType": "EventDefinition", + "parameters": { + "id": 4134, + "nodeType": "ParameterList", + "parameters": [], + "src": "738:2:40" + }, + "src": "719:22:40" + }, + { + "anonymous": false, + "documentation": null, + "id": 4137, + "name": "RefundsEnabled", + "nodeType": "EventDefinition", + "parameters": { + "id": 4136, + "nodeType": "ParameterList", + "parameters": [], + "src": "766:2:40" + }, + "src": "746:23:40" + }, + { + "constant": false, + "id": 4139, + "name": "_state", + "nodeType": "VariableDeclaration", + "scope": 4275, + "src": "775:20:40", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_enum$_State_$4133", + "typeString": "enum RefundEscrow.State" + }, + "typeName": { + "contractScope": null, + "id": 4138, + "name": "State", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 4133, + "src": "775:5:40", + "typeDescriptions": { + "typeIdentifier": "t_enum$_State_$4133", + "typeString": "enum RefundEscrow.State" + } + }, + "value": null, + "visibility": "private" + }, + { + "constant": false, + "id": 4141, + "name": "_beneficiary", + "nodeType": "VariableDeclaration", + "scope": 4275, + "src": "801:36:40", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + "typeName": { + "id": 4140, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "801:15:40", + "stateMutability": "payable", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "value": null, + "visibility": "private" + }, + { + "body": { + "id": 4163, + "nodeType": "Block", + "src": "993:118:40", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + "id": 4151, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 4147, + "name": "beneficiary", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4143, + "src": "1011:11:40", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 4149, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1034:1:40", + "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": 4148, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "1026:7:40", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 4150, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1026:10:40", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "1011:25:40", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 4146, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6848, + 6849 + ], + "referencedDeclaration": 6848, + "src": "1003:7:40", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 4152, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1003:34:40", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4153, + "nodeType": "ExpressionStatement", + "src": "1003:34:40" + }, + { + "expression": { + "argumentTypes": null, + "id": 4156, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 4154, + "name": "_beneficiary", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4141, + "src": "1047:12:40", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 4155, + "name": "beneficiary", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4143, + "src": "1062:11:40", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "1047:26:40", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "id": 4157, + "nodeType": "ExpressionStatement", + "src": "1047:26:40" + }, + { + "expression": { + "argumentTypes": null, + "id": 4161, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 4158, + "name": "_state", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4139, + "src": "1083:6:40", + "typeDescriptions": { + "typeIdentifier": "t_enum$_State_$4133", + "typeString": "enum RefundEscrow.State" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 4159, + "name": "State", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4133, + "src": "1092:5:40", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_enum$_State_$4133_$", + "typeString": "type(enum RefundEscrow.State)" + } + }, + "id": 4160, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "Active", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "1092:12:40", + "typeDescriptions": { + "typeIdentifier": "t_enum$_State_$4133", + "typeString": "enum RefundEscrow.State" + } + }, + "src": "1083:21:40", + "typeDescriptions": { + "typeIdentifier": "t_enum$_State_$4133", + "typeString": "enum RefundEscrow.State" + } + }, + "id": 4162, + "nodeType": "ExpressionStatement", + "src": "1083:21:40" + } + ] + }, + "documentation": "@dev Constructor.\n@param beneficiary The beneficiary of the deposits.", + "id": 4164, + "implemented": true, + "kind": "constructor", + "modifiers": [], + "name": "", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4144, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4143, + "name": "beneficiary", + "nodeType": "VariableDeclaration", + "scope": 4164, + "src": "957:27:40", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + "typeName": { + "id": 4142, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "957:15:40", + "stateMutability": "payable", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "956:29:40" + }, + "returnParameters": { + "id": 4145, + "nodeType": "ParameterList", + "parameters": [], + "src": "993:0:40" + }, + "scope": 4275, + "src": "944:167:40", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 4171, + "nodeType": "Block", + "src": "1226:30:40", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 4169, + "name": "_state", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4139, + "src": "1243:6:40", + "typeDescriptions": { + "typeIdentifier": "t_enum$_State_$4133", + "typeString": "enum RefundEscrow.State" + } + }, + "functionReturnParameters": 4168, + "id": 4170, + "nodeType": "Return", + "src": "1236:13:40" + } + ] + }, + "documentation": "@return the current state of the escrow.", + "id": 4172, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "state", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4165, + "nodeType": "ParameterList", + "parameters": [], + "src": "1195:2:40" + }, + "returnParameters": { + "id": 4168, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4167, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 4172, + "src": "1219:5:40", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_enum$_State_$4133", + "typeString": "enum RefundEscrow.State" + }, + "typeName": { + "contractScope": null, + "id": 4166, + "name": "State", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 4133, + "src": "1219:5:40", + "typeDescriptions": { + "typeIdentifier": "t_enum$_State_$4133", + "typeString": "enum RefundEscrow.State" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1218:7:40" + }, + "scope": 4275, + "src": "1181:75:40", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 4179, + "nodeType": "Block", + "src": "1377:36:40", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 4177, + "name": "_beneficiary", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4141, + "src": "1394:12:40", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "functionReturnParameters": 4176, + "id": 4178, + "nodeType": "Return", + "src": "1387:19:40" + } + ] + }, + "documentation": "@return the beneficiary of the escrow.", + "id": 4180, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "beneficiary", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4173, + "nodeType": "ParameterList", + "parameters": [], + "src": "1344:2:40" + }, + "returnParameters": { + "id": 4176, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4175, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 4180, + "src": "1368:7:40", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4174, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1368:7:40", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1367:9:40" + }, + "scope": 4275, + "src": "1324:89:40", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 4198, + "nodeType": "Block", + "src": "1615:81:40", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_enum$_State_$4133", + "typeString": "enum RefundEscrow.State" + }, + "id": 4189, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 4186, + "name": "_state", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4139, + "src": "1633:6:40", + "typeDescriptions": { + "typeIdentifier": "t_enum$_State_$4133", + "typeString": "enum RefundEscrow.State" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 4187, + "name": "State", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4133, + "src": "1643:5:40", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_enum$_State_$4133_$", + "typeString": "type(enum RefundEscrow.State)" + } + }, + "id": 4188, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "Active", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "1643:12:40", + "typeDescriptions": { + "typeIdentifier": "t_enum$_State_$4133", + "typeString": "enum RefundEscrow.State" + } + }, + "src": "1633:22:40", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 4185, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6848, + 6849 + ], + "referencedDeclaration": 6848, + "src": "1625:7:40", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 4190, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1625:31:40", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4191, + "nodeType": "ExpressionStatement", + "src": "1625:31:40" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 4195, + "name": "refundee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4182, + "src": "1680:8:40", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 4192, + "name": "super", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6895, + "src": "1666:5:40", + "typeDescriptions": { + "typeIdentifier": "t_super$_RefundEscrow_$4275", + "typeString": "contract super RefundEscrow" + } + }, + "id": 4194, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "deposit", + "nodeType": "MemberAccess", + "referencedDeclaration": 4092, + "src": "1666:13:40", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 4196, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1666:23:40", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4197, + "nodeType": "ExpressionStatement", + "src": "1666:23:40" + } + ] + }, + "documentation": "@dev Stores funds that may later be refunded.\n@param refundee The address funds will be sent to if a refund occurs.", + "id": 4199, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "deposit", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4183, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4182, + "name": "refundee", + "nodeType": "VariableDeclaration", + "scope": 4199, + "src": "1582:16:40", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4181, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1582:7:40", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1581:18:40" + }, + "returnParameters": { + "id": 4184, + "nodeType": "ParameterList", + "parameters": [], + "src": "1615:0:40" + }, + "scope": 4275, + "src": "1565:131:40", + "stateMutability": "payable", + "superFunction": 4092, + "visibility": "public" + }, + { + "body": { + "id": 4219, + "nodeType": "Block", + "src": "1853:109:40", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_enum$_State_$4133", + "typeString": "enum RefundEscrow.State" + }, + "id": 4208, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 4205, + "name": "_state", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4139, + "src": "1871:6:40", + "typeDescriptions": { + "typeIdentifier": "t_enum$_State_$4133", + "typeString": "enum RefundEscrow.State" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 4206, + "name": "State", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4133, + "src": "1881:5:40", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_enum$_State_$4133_$", + "typeString": "type(enum RefundEscrow.State)" + } + }, + "id": 4207, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "Active", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "1881:12:40", + "typeDescriptions": { + "typeIdentifier": "t_enum$_State_$4133", + "typeString": "enum RefundEscrow.State" + } + }, + "src": "1871:22:40", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 4204, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6848, + 6849 + ], + "referencedDeclaration": 6848, + "src": "1863:7:40", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 4209, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1863:31:40", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4210, + "nodeType": "ExpressionStatement", + "src": "1863:31:40" + }, + { + "expression": { + "argumentTypes": null, + "id": 4214, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 4211, + "name": "_state", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4139, + "src": "1904:6:40", + "typeDescriptions": { + "typeIdentifier": "t_enum$_State_$4133", + "typeString": "enum RefundEscrow.State" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 4212, + "name": "State", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4133, + "src": "1913:5:40", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_enum$_State_$4133_$", + "typeString": "type(enum RefundEscrow.State)" + } + }, + "id": 4213, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "Closed", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "1913:12:40", + "typeDescriptions": { + "typeIdentifier": "t_enum$_State_$4133", + "typeString": "enum RefundEscrow.State" + } + }, + "src": "1904:21:40", + "typeDescriptions": { + "typeIdentifier": "t_enum$_State_$4133", + "typeString": "enum RefundEscrow.State" + } + }, + "id": 4215, + "nodeType": "ExpressionStatement", + "src": "1904:21:40" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 4216, + "name": "RefundsClosed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4135, + "src": "1940:13:40", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$__$returns$__$", + "typeString": "function ()" + } + }, + "id": 4217, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1940:15:40", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4218, + "nodeType": "EmitStatement", + "src": "1935:20:40" + } + ] + }, + "documentation": "@dev Allows for the beneficiary to withdraw their funds, rejecting\nfurther deposits.", + "id": 4220, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": null, + "id": 4202, + "modifierName": { + "argumentTypes": null, + "id": 4201, + "name": "onlyPrimary", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3623, + "src": "1841:11:40", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "1841:11:40" + } + ], + "name": "close", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4200, + "nodeType": "ParameterList", + "parameters": [], + "src": "1831:2:40" + }, + "returnParameters": { + "id": 4203, + "nodeType": "ParameterList", + "parameters": [], + "src": "1853:0:40" + }, + "scope": 4275, + "src": "1817:145:40", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 4240, + "nodeType": "Block", + "src": "2102:113:40", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_enum$_State_$4133", + "typeString": "enum RefundEscrow.State" + }, + "id": 4229, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 4226, + "name": "_state", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4139, + "src": "2120:6:40", + "typeDescriptions": { + "typeIdentifier": "t_enum$_State_$4133", + "typeString": "enum RefundEscrow.State" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 4227, + "name": "State", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4133, + "src": "2130:5:40", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_enum$_State_$4133_$", + "typeString": "type(enum RefundEscrow.State)" + } + }, + "id": 4228, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "Active", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2130:12:40", + "typeDescriptions": { + "typeIdentifier": "t_enum$_State_$4133", + "typeString": "enum RefundEscrow.State" + } + }, + "src": "2120:22:40", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 4225, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6848, + 6849 + ], + "referencedDeclaration": 6848, + "src": "2112:7:40", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 4230, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2112:31:40", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4231, + "nodeType": "ExpressionStatement", + "src": "2112:31:40" + }, + { + "expression": { + "argumentTypes": null, + "id": 4235, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 4232, + "name": "_state", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4139, + "src": "2153:6:40", + "typeDescriptions": { + "typeIdentifier": "t_enum$_State_$4133", + "typeString": "enum RefundEscrow.State" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 4233, + "name": "State", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4133, + "src": "2162:5:40", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_enum$_State_$4133_$", + "typeString": "type(enum RefundEscrow.State)" + } + }, + "id": 4234, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "Refunding", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2162:15:40", + "typeDescriptions": { + "typeIdentifier": "t_enum$_State_$4133", + "typeString": "enum RefundEscrow.State" + } + }, + "src": "2153:24:40", + "typeDescriptions": { + "typeIdentifier": "t_enum$_State_$4133", + "typeString": "enum RefundEscrow.State" + } + }, + "id": 4236, + "nodeType": "ExpressionStatement", + "src": "2153:24:40" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 4237, + "name": "RefundsEnabled", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4137, + "src": "2192:14:40", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$__$returns$__$", + "typeString": "function ()" + } + }, + "id": 4238, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2192:16:40", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4239, + "nodeType": "EmitStatement", + "src": "2187:21:40" + } + ] + }, + "documentation": "@dev Allows for refunds to take place, rejecting further deposits.", + "id": 4241, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": null, + "id": 4223, + "modifierName": { + "argumentTypes": null, + "id": 4222, + "name": "onlyPrimary", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3623, + "src": "2090:11:40", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "2090:11:40" + } + ], + "name": "enableRefunds", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4221, + "nodeType": "ParameterList", + "parameters": [], + "src": "2080:2:40" + }, + "returnParameters": { + "id": 4224, + "nodeType": "ParameterList", + "parameters": [], + "src": "2102:0:40" + }, + "scope": 4275, + "src": "2058:157:40", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 4260, + "nodeType": "Block", + "src": "2322:102:40", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_enum$_State_$4133", + "typeString": "enum RefundEscrow.State" + }, + "id": 4248, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 4245, + "name": "_state", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4139, + "src": "2340:6:40", + "typeDescriptions": { + "typeIdentifier": "t_enum$_State_$4133", + "typeString": "enum RefundEscrow.State" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 4246, + "name": "State", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4133, + "src": "2350:5:40", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_enum$_State_$4133_$", + "typeString": "type(enum RefundEscrow.State)" + } + }, + "id": 4247, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "Closed", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2350:12:40", + "typeDescriptions": { + "typeIdentifier": "t_enum$_State_$4133", + "typeString": "enum RefundEscrow.State" + } + }, + "src": "2340:22:40", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 4244, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6848, + 6849 + ], + "referencedDeclaration": 6848, + "src": "2332:7:40", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 4249, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2332:31:40", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4250, + "nodeType": "ExpressionStatement", + "src": "2332:31:40" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 4255, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6894, + "src": "2403:4:40", + "typeDescriptions": { + "typeIdentifier": "t_contract$_RefundEscrow_$4275", + "typeString": "contract RefundEscrow" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_RefundEscrow_$4275", + "typeString": "contract RefundEscrow" + } + ], + "id": 4254, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2395:7:40", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 4256, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2395:13:40", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 4257, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "balance", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2395:21:40", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 4251, + "name": "_beneficiary", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4141, + "src": "2373:12:40", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "id": 4253, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "transfer", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2373:21:40", + "typeDescriptions": { + "typeIdentifier": "t_function_transfer_nonpayable$_t_uint256_$returns$__$", + "typeString": "function (uint256)" + } + }, + "id": 4258, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2373:44:40", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4259, + "nodeType": "ExpressionStatement", + "src": "2373:44:40" + } + ] + }, + "documentation": "@dev Withdraws the beneficiary's funds.", + "id": 4261, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "beneficiaryWithdraw", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4242, + "nodeType": "ParameterList", + "parameters": [], + "src": "2312:2:40" + }, + "returnParameters": { + "id": 4243, + "nodeType": "ParameterList", + "parameters": [], + "src": "2322:0:40" + }, + "scope": 4275, + "src": "2284:140:40", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 4273, + "nodeType": "Block", + "src": "2717:49:40", + "statements": [ + { + "expression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_enum$_State_$4133", + "typeString": "enum RefundEscrow.State" + }, + "id": 4271, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 4268, + "name": "_state", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4139, + "src": "2734:6:40", + "typeDescriptions": { + "typeIdentifier": "t_enum$_State_$4133", + "typeString": "enum RefundEscrow.State" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 4269, + "name": "State", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4133, + "src": "2744:5:40", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_enum$_State_$4133_$", + "typeString": "type(enum RefundEscrow.State)" + } + }, + "id": 4270, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "Refunding", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2744:15:40", + "typeDescriptions": { + "typeIdentifier": "t_enum$_State_$4133", + "typeString": "enum RefundEscrow.State" + } + }, + "src": "2734:25:40", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 4267, + "id": 4272, + "nodeType": "Return", + "src": "2727:32:40" + } + ] + }, + "documentation": "@dev Returns whether refundees can withdraw their deposits (be refunded). The overriden function receives a\n'payee' argument, but we ignore it here since the condition is global, not per-payee.", + "id": 4274, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "withdrawalAllowed", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4264, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4263, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 4274, + "src": "2681:7:40", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4262, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2681:7:40", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2680:9:40" + }, + "returnParameters": { + "id": 4267, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4266, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 4274, + "src": "2711:4:40", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 4265, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "2711:4:40", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2710:6:40" + }, + "scope": 4275, + "src": "2654:112:40", + "stateMutability": "view", + "superFunction": 4007, + "visibility": "public" + } + ], + "scope": 4276, + "src": "624:2144:40" + } + ], + "src": "0:2769:40" + }, + "legacyAST": { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/payment/escrow/RefundEscrow.sol", + "exportedSymbols": { + "RefundEscrow": [ + 4275 + ] + }, + "id": 4276, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 4126, + "literals": [ + "solidity", + "^", + "0.5", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "0:23:40" + }, + { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/payment/escrow/ConditionalEscrow.sol", + "file": "./ConditionalEscrow.sol", + "id": 4127, + "nodeType": "ImportDirective", + "scope": 4276, + "sourceUnit": 4027, + "src": "25:33:40", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 4128, + "name": "ConditionalEscrow", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 4026, + "src": "649:17:40", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ConditionalEscrow_$4026", + "typeString": "contract ConditionalEscrow" + } + }, + "id": 4129, + "nodeType": "InheritanceSpecifier", + "src": "649:17:40" + } + ], + "contractDependencies": [ + 3656, + 4026, + 4124 + ], + "contractKind": "contract", + "documentation": "@title RefundEscrow\n@dev Escrow that holds funds for a beneficiary, deposited from multiple\nparties.\n@dev Intended usage: See Escrow.sol. Same usage guidelines apply here.\n@dev The primary account (that is, the contract that instantiates this\ncontract) may deposit, close the deposit period, and allow for either\nwithdrawal by the beneficiary, or refunds to the depositors. All interactions\nwith RefundEscrow will be made through the primary contract. See the\nRefundableCrowdsale contract for an example of RefundEscrow’s use.", + "fullyImplemented": true, + "id": 4275, + "linearizedBaseContracts": [ + 4275, + 4026, + 4124, + 3656 + ], + "name": "RefundEscrow", + "nodeType": "ContractDefinition", + "nodes": [ + { + "canonicalName": "RefundEscrow.State", + "id": 4133, + "members": [ + { + "id": 4130, + "name": "Active", + "nodeType": "EnumValue", + "src": "686:6:40" + }, + { + "id": 4131, + "name": "Refunding", + "nodeType": "EnumValue", + "src": "694:9:40" + }, + { + "id": 4132, + "name": "Closed", + "nodeType": "EnumValue", + "src": "705:6:40" + } + ], + "name": "State", + "nodeType": "EnumDefinition", + "src": "673:40:40" + }, + { + "anonymous": false, + "documentation": null, + "id": 4135, + "name": "RefundsClosed", + "nodeType": "EventDefinition", + "parameters": { + "id": 4134, + "nodeType": "ParameterList", + "parameters": [], + "src": "738:2:40" + }, + "src": "719:22:40" + }, + { + "anonymous": false, + "documentation": null, + "id": 4137, + "name": "RefundsEnabled", + "nodeType": "EventDefinition", + "parameters": { + "id": 4136, + "nodeType": "ParameterList", + "parameters": [], + "src": "766:2:40" + }, + "src": "746:23:40" + }, + { + "constant": false, + "id": 4139, + "name": "_state", + "nodeType": "VariableDeclaration", + "scope": 4275, + "src": "775:20:40", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_enum$_State_$4133", + "typeString": "enum RefundEscrow.State" + }, + "typeName": { + "contractScope": null, + "id": 4138, + "name": "State", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 4133, + "src": "775:5:40", + "typeDescriptions": { + "typeIdentifier": "t_enum$_State_$4133", + "typeString": "enum RefundEscrow.State" + } + }, + "value": null, + "visibility": "private" + }, + { + "constant": false, + "id": 4141, + "name": "_beneficiary", + "nodeType": "VariableDeclaration", + "scope": 4275, + "src": "801:36:40", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + "typeName": { + "id": 4140, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "801:15:40", + "stateMutability": "payable", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "value": null, + "visibility": "private" + }, + { + "body": { + "id": 4163, + "nodeType": "Block", + "src": "993:118:40", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + "id": 4151, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 4147, + "name": "beneficiary", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4143, + "src": "1011:11:40", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 4149, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1034:1:40", + "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": 4148, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "1026:7:40", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 4150, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1026:10:40", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "1011:25:40", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 4146, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6848, + 6849 + ], + "referencedDeclaration": 6848, + "src": "1003:7:40", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 4152, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1003:34:40", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4153, + "nodeType": "ExpressionStatement", + "src": "1003:34:40" + }, + { + "expression": { + "argumentTypes": null, + "id": 4156, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 4154, + "name": "_beneficiary", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4141, + "src": "1047:12:40", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 4155, + "name": "beneficiary", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4143, + "src": "1062:11:40", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "1047:26:40", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "id": 4157, + "nodeType": "ExpressionStatement", + "src": "1047:26:40" + }, + { + "expression": { + "argumentTypes": null, + "id": 4161, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 4158, + "name": "_state", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4139, + "src": "1083:6:40", + "typeDescriptions": { + "typeIdentifier": "t_enum$_State_$4133", + "typeString": "enum RefundEscrow.State" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 4159, + "name": "State", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4133, + "src": "1092:5:40", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_enum$_State_$4133_$", + "typeString": "type(enum RefundEscrow.State)" + } + }, + "id": 4160, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "Active", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "1092:12:40", + "typeDescriptions": { + "typeIdentifier": "t_enum$_State_$4133", + "typeString": "enum RefundEscrow.State" + } + }, + "src": "1083:21:40", + "typeDescriptions": { + "typeIdentifier": "t_enum$_State_$4133", + "typeString": "enum RefundEscrow.State" + } + }, + "id": 4162, + "nodeType": "ExpressionStatement", + "src": "1083:21:40" + } + ] + }, + "documentation": "@dev Constructor.\n@param beneficiary The beneficiary of the deposits.", + "id": 4164, + "implemented": true, + "kind": "constructor", + "modifiers": [], + "name": "", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4144, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4143, + "name": "beneficiary", + "nodeType": "VariableDeclaration", + "scope": 4164, + "src": "957:27:40", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + "typeName": { + "id": 4142, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "957:15:40", + "stateMutability": "payable", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "956:29:40" + }, + "returnParameters": { + "id": 4145, + "nodeType": "ParameterList", + "parameters": [], + "src": "993:0:40" + }, + "scope": 4275, + "src": "944:167:40", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 4171, + "nodeType": "Block", + "src": "1226:30:40", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 4169, + "name": "_state", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4139, + "src": "1243:6:40", + "typeDescriptions": { + "typeIdentifier": "t_enum$_State_$4133", + "typeString": "enum RefundEscrow.State" + } + }, + "functionReturnParameters": 4168, + "id": 4170, + "nodeType": "Return", + "src": "1236:13:40" + } + ] + }, + "documentation": "@return the current state of the escrow.", + "id": 4172, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "state", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4165, + "nodeType": "ParameterList", + "parameters": [], + "src": "1195:2:40" + }, + "returnParameters": { + "id": 4168, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4167, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 4172, + "src": "1219:5:40", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_enum$_State_$4133", + "typeString": "enum RefundEscrow.State" + }, + "typeName": { + "contractScope": null, + "id": 4166, + "name": "State", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 4133, + "src": "1219:5:40", + "typeDescriptions": { + "typeIdentifier": "t_enum$_State_$4133", + "typeString": "enum RefundEscrow.State" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1218:7:40" + }, + "scope": 4275, + "src": "1181:75:40", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 4179, + "nodeType": "Block", + "src": "1377:36:40", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 4177, + "name": "_beneficiary", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4141, + "src": "1394:12:40", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "functionReturnParameters": 4176, + "id": 4178, + "nodeType": "Return", + "src": "1387:19:40" + } + ] + }, + "documentation": "@return the beneficiary of the escrow.", + "id": 4180, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "beneficiary", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4173, + "nodeType": "ParameterList", + "parameters": [], + "src": "1344:2:40" + }, + "returnParameters": { + "id": 4176, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4175, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 4180, + "src": "1368:7:40", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4174, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1368:7:40", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1367:9:40" + }, + "scope": 4275, + "src": "1324:89:40", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 4198, + "nodeType": "Block", + "src": "1615:81:40", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_enum$_State_$4133", + "typeString": "enum RefundEscrow.State" + }, + "id": 4189, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 4186, + "name": "_state", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4139, + "src": "1633:6:40", + "typeDescriptions": { + "typeIdentifier": "t_enum$_State_$4133", + "typeString": "enum RefundEscrow.State" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 4187, + "name": "State", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4133, + "src": "1643:5:40", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_enum$_State_$4133_$", + "typeString": "type(enum RefundEscrow.State)" + } + }, + "id": 4188, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "Active", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "1643:12:40", + "typeDescriptions": { + "typeIdentifier": "t_enum$_State_$4133", + "typeString": "enum RefundEscrow.State" + } + }, + "src": "1633:22:40", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 4185, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6848, + 6849 + ], + "referencedDeclaration": 6848, + "src": "1625:7:40", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 4190, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1625:31:40", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4191, + "nodeType": "ExpressionStatement", + "src": "1625:31:40" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 4195, + "name": "refundee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4182, + "src": "1680:8:40", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 4192, + "name": "super", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6895, + "src": "1666:5:40", + "typeDescriptions": { + "typeIdentifier": "t_super$_RefundEscrow_$4275", + "typeString": "contract super RefundEscrow" + } + }, + "id": 4194, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "deposit", + "nodeType": "MemberAccess", + "referencedDeclaration": 4092, + "src": "1666:13:40", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 4196, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1666:23:40", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4197, + "nodeType": "ExpressionStatement", + "src": "1666:23:40" + } + ] + }, + "documentation": "@dev Stores funds that may later be refunded.\n@param refundee The address funds will be sent to if a refund occurs.", + "id": 4199, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "deposit", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4183, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4182, + "name": "refundee", + "nodeType": "VariableDeclaration", + "scope": 4199, + "src": "1582:16:40", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4181, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1582:7:40", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1581:18:40" + }, + "returnParameters": { + "id": 4184, + "nodeType": "ParameterList", + "parameters": [], + "src": "1615:0:40" + }, + "scope": 4275, + "src": "1565:131:40", + "stateMutability": "payable", + "superFunction": 4092, + "visibility": "public" + }, + { + "body": { + "id": 4219, + "nodeType": "Block", + "src": "1853:109:40", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_enum$_State_$4133", + "typeString": "enum RefundEscrow.State" + }, + "id": 4208, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 4205, + "name": "_state", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4139, + "src": "1871:6:40", + "typeDescriptions": { + "typeIdentifier": "t_enum$_State_$4133", + "typeString": "enum RefundEscrow.State" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 4206, + "name": "State", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4133, + "src": "1881:5:40", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_enum$_State_$4133_$", + "typeString": "type(enum RefundEscrow.State)" + } + }, + "id": 4207, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "Active", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "1881:12:40", + "typeDescriptions": { + "typeIdentifier": "t_enum$_State_$4133", + "typeString": "enum RefundEscrow.State" + } + }, + "src": "1871:22:40", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 4204, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6848, + 6849 + ], + "referencedDeclaration": 6848, + "src": "1863:7:40", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 4209, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1863:31:40", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4210, + "nodeType": "ExpressionStatement", + "src": "1863:31:40" + }, + { + "expression": { + "argumentTypes": null, + "id": 4214, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 4211, + "name": "_state", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4139, + "src": "1904:6:40", + "typeDescriptions": { + "typeIdentifier": "t_enum$_State_$4133", + "typeString": "enum RefundEscrow.State" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 4212, + "name": "State", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4133, + "src": "1913:5:40", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_enum$_State_$4133_$", + "typeString": "type(enum RefundEscrow.State)" + } + }, + "id": 4213, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "Closed", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "1913:12:40", + "typeDescriptions": { + "typeIdentifier": "t_enum$_State_$4133", + "typeString": "enum RefundEscrow.State" + } + }, + "src": "1904:21:40", + "typeDescriptions": { + "typeIdentifier": "t_enum$_State_$4133", + "typeString": "enum RefundEscrow.State" + } + }, + "id": 4215, + "nodeType": "ExpressionStatement", + "src": "1904:21:40" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 4216, + "name": "RefundsClosed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4135, + "src": "1940:13:40", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$__$returns$__$", + "typeString": "function ()" + } + }, + "id": 4217, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1940:15:40", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4218, + "nodeType": "EmitStatement", + "src": "1935:20:40" + } + ] + }, + "documentation": "@dev Allows for the beneficiary to withdraw their funds, rejecting\nfurther deposits.", + "id": 4220, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": null, + "id": 4202, + "modifierName": { + "argumentTypes": null, + "id": 4201, + "name": "onlyPrimary", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3623, + "src": "1841:11:40", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "1841:11:40" + } + ], + "name": "close", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4200, + "nodeType": "ParameterList", + "parameters": [], + "src": "1831:2:40" + }, + "returnParameters": { + "id": 4203, + "nodeType": "ParameterList", + "parameters": [], + "src": "1853:0:40" + }, + "scope": 4275, + "src": "1817:145:40", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 4240, + "nodeType": "Block", + "src": "2102:113:40", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_enum$_State_$4133", + "typeString": "enum RefundEscrow.State" + }, + "id": 4229, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 4226, + "name": "_state", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4139, + "src": "2120:6:40", + "typeDescriptions": { + "typeIdentifier": "t_enum$_State_$4133", + "typeString": "enum RefundEscrow.State" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 4227, + "name": "State", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4133, + "src": "2130:5:40", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_enum$_State_$4133_$", + "typeString": "type(enum RefundEscrow.State)" + } + }, + "id": 4228, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "Active", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2130:12:40", + "typeDescriptions": { + "typeIdentifier": "t_enum$_State_$4133", + "typeString": "enum RefundEscrow.State" + } + }, + "src": "2120:22:40", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 4225, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6848, + 6849 + ], + "referencedDeclaration": 6848, + "src": "2112:7:40", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 4230, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2112:31:40", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4231, + "nodeType": "ExpressionStatement", + "src": "2112:31:40" + }, + { + "expression": { + "argumentTypes": null, + "id": 4235, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 4232, + "name": "_state", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4139, + "src": "2153:6:40", + "typeDescriptions": { + "typeIdentifier": "t_enum$_State_$4133", + "typeString": "enum RefundEscrow.State" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 4233, + "name": "State", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4133, + "src": "2162:5:40", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_enum$_State_$4133_$", + "typeString": "type(enum RefundEscrow.State)" + } + }, + "id": 4234, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "Refunding", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2162:15:40", + "typeDescriptions": { + "typeIdentifier": "t_enum$_State_$4133", + "typeString": "enum RefundEscrow.State" + } + }, + "src": "2153:24:40", + "typeDescriptions": { + "typeIdentifier": "t_enum$_State_$4133", + "typeString": "enum RefundEscrow.State" + } + }, + "id": 4236, + "nodeType": "ExpressionStatement", + "src": "2153:24:40" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 4237, + "name": "RefundsEnabled", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4137, + "src": "2192:14:40", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$__$returns$__$", + "typeString": "function ()" + } + }, + "id": 4238, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2192:16:40", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4239, + "nodeType": "EmitStatement", + "src": "2187:21:40" + } + ] + }, + "documentation": "@dev Allows for refunds to take place, rejecting further deposits.", + "id": 4241, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": null, + "id": 4223, + "modifierName": { + "argumentTypes": null, + "id": 4222, + "name": "onlyPrimary", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3623, + "src": "2090:11:40", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "2090:11:40" + } + ], + "name": "enableRefunds", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4221, + "nodeType": "ParameterList", + "parameters": [], + "src": "2080:2:40" + }, + "returnParameters": { + "id": 4224, + "nodeType": "ParameterList", + "parameters": [], + "src": "2102:0:40" + }, + "scope": 4275, + "src": "2058:157:40", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 4260, + "nodeType": "Block", + "src": "2322:102:40", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_enum$_State_$4133", + "typeString": "enum RefundEscrow.State" + }, + "id": 4248, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 4245, + "name": "_state", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4139, + "src": "2340:6:40", + "typeDescriptions": { + "typeIdentifier": "t_enum$_State_$4133", + "typeString": "enum RefundEscrow.State" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 4246, + "name": "State", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4133, + "src": "2350:5:40", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_enum$_State_$4133_$", + "typeString": "type(enum RefundEscrow.State)" + } + }, + "id": 4247, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "Closed", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2350:12:40", + "typeDescriptions": { + "typeIdentifier": "t_enum$_State_$4133", + "typeString": "enum RefundEscrow.State" + } + }, + "src": "2340:22:40", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 4244, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6848, + 6849 + ], + "referencedDeclaration": 6848, + "src": "2332:7:40", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 4249, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2332:31:40", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4250, + "nodeType": "ExpressionStatement", + "src": "2332:31:40" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 4255, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6894, + "src": "2403:4:40", + "typeDescriptions": { + "typeIdentifier": "t_contract$_RefundEscrow_$4275", + "typeString": "contract RefundEscrow" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_RefundEscrow_$4275", + "typeString": "contract RefundEscrow" + } + ], + "id": 4254, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2395:7:40", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 4256, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2395:13:40", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 4257, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "balance", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2395:21:40", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 4251, + "name": "_beneficiary", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4141, + "src": "2373:12:40", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "id": 4253, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "transfer", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2373:21:40", + "typeDescriptions": { + "typeIdentifier": "t_function_transfer_nonpayable$_t_uint256_$returns$__$", + "typeString": "function (uint256)" + } + }, + "id": 4258, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2373:44:40", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4259, + "nodeType": "ExpressionStatement", + "src": "2373:44:40" + } + ] + }, + "documentation": "@dev Withdraws the beneficiary's funds.", + "id": 4261, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "beneficiaryWithdraw", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4242, + "nodeType": "ParameterList", + "parameters": [], + "src": "2312:2:40" + }, + "returnParameters": { + "id": 4243, + "nodeType": "ParameterList", + "parameters": [], + "src": "2322:0:40" + }, + "scope": 4275, + "src": "2284:140:40", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 4273, + "nodeType": "Block", + "src": "2717:49:40", + "statements": [ + { + "expression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_enum$_State_$4133", + "typeString": "enum RefundEscrow.State" + }, + "id": 4271, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 4268, + "name": "_state", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4139, + "src": "2734:6:40", + "typeDescriptions": { + "typeIdentifier": "t_enum$_State_$4133", + "typeString": "enum RefundEscrow.State" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 4269, + "name": "State", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4133, + "src": "2744:5:40", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_enum$_State_$4133_$", + "typeString": "type(enum RefundEscrow.State)" + } + }, + "id": 4270, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "Refunding", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2744:15:40", + "typeDescriptions": { + "typeIdentifier": "t_enum$_State_$4133", + "typeString": "enum RefundEscrow.State" + } + }, + "src": "2734:25:40", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 4267, + "id": 4272, + "nodeType": "Return", + "src": "2727:32:40" + } + ] + }, + "documentation": "@dev Returns whether refundees can withdraw their deposits (be refunded). The overriden function receives a\n'payee' argument, but we ignore it here since the condition is global, not per-payee.", + "id": 4274, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "withdrawalAllowed", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4264, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4263, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 4274, + "src": "2681:7:40", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4262, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2681:7:40", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2680:9:40" + }, + "returnParameters": { + "id": 4267, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4266, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 4274, + "src": "2711:4:40", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 4265, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "2711:4:40", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2710:6:40" + }, + "scope": 4275, + "src": "2654:112:40", + "stateMutability": "view", + "superFunction": 4007, + "visibility": "public" + } + ], + "scope": 4276, + "src": "624:2144:40" + } + ], + "src": "0:2769:40" + }, + "compiler": { + "name": "solc", + "version": "0.5.0+commit.1d4f565a.Emscripten.clang" + }, + "networks": {}, + "schemaVersion": "3.0.0", + "updatedAt": "2019-01-04T21:44:02.889Z", + "devdoc": { + "details": "Escrow that holds funds for a beneficiary, deposited from multiple parties.Intended usage: See Escrow.sol. Same usage guidelines apply here.The primary account (that is, the contract that instantiates this contract) may deposit, close the deposit period, and allow for either withdrawal by the beneficiary, or refunds to the depositors. All interactions with RefundEscrow will be made through the primary contract. See the RefundableCrowdsale contract for an example of RefundEscrow’s use.", + "methods": { + "beneficiary()": { + "return": "the beneficiary of the escrow." + }, + "beneficiaryWithdraw()": { + "details": "Withdraws the beneficiary's funds." + }, + "close()": { + "details": "Allows for the beneficiary to withdraw their funds, rejecting further deposits." + }, + "constructor": { + "details": "Constructor.", + "params": { + "beneficiary": "The beneficiary of the deposits." + } + }, + "deposit(address)": { + "details": "Stores funds that may later be refunded.", + "params": { + "refundee": "The address funds will be sent to if a refund occurs." + } + }, + "enableRefunds()": { + "details": "Allows for refunds to take place, rejecting further deposits." + }, + "primary()": { + "return": "the address of the primary." + }, + "state()": { + "return": "the current state of the escrow." + }, + "transferPrimary(address)": { + "details": "Transfers contract to a new primary.", + "params": { + "recipient": "The address of new primary." + } + }, + "withdrawalAllowed(address)": { + "details": "Returns whether refundees can withdraw their deposits (be refunded). The overriden function receives a 'payee' argument, but we ignore it here since the condition is global, not per-payee." + } + }, + "title": "RefundEscrow" + }, + "userdoc": { + "methods": {} + } +} \ No newline at end of file diff --git a/node_modules/openzeppelin-solidity/build/contracts/RefundableCrowdsale.json b/node_modules/openzeppelin-solidity/build/contracts/RefundableCrowdsale.json new file mode 100644 index 0000000..3f2c3c9 --- /dev/null +++ b/node_modules/openzeppelin-solidity/build/contracts/RefundableCrowdsale.json @@ -0,0 +1,3265 @@ +{ + "contractName": "RefundableCrowdsale", + "abi": [ + { + "constant": true, + "inputs": [], + "name": "hasClosed", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "rate", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "weiRaised", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "isOpen", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "closingTime", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [], + "name": "finalize", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "wallet", + "outputs": [ + { + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "finalized", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "openingTime", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "beneficiary", + "type": "address" + } + ], + "name": "buyTokens", + "outputs": [], + "payable": true, + "stateMutability": "payable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "token", + "outputs": [ + { + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "name": "goal", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "payable": true, + "stateMutability": "payable", + "type": "fallback" + }, + { + "anonymous": false, + "inputs": [], + "name": "CrowdsaleFinalized", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "purchaser", + "type": "address" + }, + { + "indexed": true, + "name": "beneficiary", + "type": "address" + }, + { + "indexed": false, + "name": "value", + "type": "uint256" + }, + { + "indexed": false, + "name": "amount", + "type": "uint256" + } + ], + "name": "TokensPurchased", + "type": "event" + }, + { + "constant": true, + "inputs": [], + "name": "goal", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "refundee", + "type": "address" + } + ], + "name": "claimRefund", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "goalReached", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "sourceMap": "", + "deployedSourceMap": "", + "source": "pragma solidity ^0.5.0;\n\nimport \"../../math/SafeMath.sol\";\nimport \"./FinalizableCrowdsale.sol\";\nimport \"../../payment/escrow/RefundEscrow.sol\";\n\n/**\n * @title RefundableCrowdsale\n * @dev Extension of Crowdsale contract that adds a funding goal, and the possibility of users getting a refund if goal\n * is not met.\n *\n * Deprecated, use RefundablePostDeliveryCrowdsale instead. Note that if you allow tokens to be traded before the goal\n * is met, then an attack is possible in which the attacker purchases tokens from the crowdsale and when they sees that\n * the goal is unlikely to be met, they sell their tokens (possibly at a discount). The attacker will be refunded when\n * the crowdsale is finalized, and the users that purchased from them will be left with worthless tokens.\n */\ncontract RefundableCrowdsale is FinalizableCrowdsale {\n using SafeMath for uint256;\n\n // minimum amount of funds to be raised in weis\n uint256 private _goal;\n\n // refund escrow used to hold funds while crowdsale is running\n RefundEscrow private _escrow;\n\n /**\n * @dev Constructor, creates RefundEscrow.\n * @param goal Funding goal\n */\n constructor (uint256 goal) public {\n require(goal > 0);\n _escrow = new RefundEscrow(wallet());\n _goal = goal;\n }\n\n /**\n * @return minimum amount of funds to be raised in wei.\n */\n function goal() public view returns (uint256) {\n return _goal;\n }\n\n /**\n * @dev Investors can claim refunds here if crowdsale is unsuccessful\n * @param refundee Whose refund will be claimed.\n */\n function claimRefund(address payable refundee) public {\n require(finalized());\n require(!goalReached());\n\n _escrow.withdraw(refundee);\n }\n\n /**\n * @dev Checks whether funding goal was reached.\n * @return Whether funding goal was reached\n */\n function goalReached() public view returns (bool) {\n return weiRaised() >= _goal;\n }\n\n /**\n * @dev escrow finalization task, called when finalize() is called\n */\n function _finalization() internal {\n if (goalReached()) {\n _escrow.close();\n _escrow.beneficiaryWithdraw();\n } else {\n _escrow.enableRefunds();\n }\n\n super._finalization();\n }\n\n /**\n * @dev Overrides Crowdsale fund forwarding, sending funds to escrow.\n */\n function _forwardFunds() internal {\n _escrow.deposit.value(msg.value)(msg.sender);\n }\n}\n", + "sourcePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/crowdsale/distribution/RefundableCrowdsale.sol", + "ast": { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/crowdsale/distribution/RefundableCrowdsale.sol", + "exportedSymbols": { + "RefundableCrowdsale": [ + 1247 + ] + }, + "id": 1248, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 1123, + "literals": [ + "solidity", + "^", + "0.5", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "0:23:10" + }, + { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/math/SafeMath.sol", + "file": "../../math/SafeMath.sol", + "id": 1124, + "nodeType": "ImportDirective", + "scope": 1248, + "sourceUnit": 3483, + "src": "25:33:10", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/crowdsale/distribution/FinalizableCrowdsale.sol", + "file": "./FinalizableCrowdsale.sol", + "id": 1125, + "nodeType": "ImportDirective", + "scope": 1248, + "sourceUnit": 1043, + "src": "59:36:10", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/payment/escrow/RefundEscrow.sol", + "file": "../../payment/escrow/RefundEscrow.sol", + "id": 1126, + "nodeType": "ImportDirective", + "scope": 1248, + "sourceUnit": 4276, + "src": "96:47:10", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 1127, + "name": "FinalizableCrowdsale", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 1042, + "src": "817:20:10", + "typeDescriptions": { + "typeIdentifier": "t_contract$_FinalizableCrowdsale_$1042", + "typeString": "contract FinalizableCrowdsale" + } + }, + "id": 1128, + "nodeType": "InheritanceSpecifier", + "src": "817:20:10" + } + ], + "contractDependencies": [ + 984, + 1042, + 1847, + 4275, + 6830 + ], + "contractKind": "contract", + "documentation": "@title RefundableCrowdsale\n@dev Extension of Crowdsale contract that adds a funding goal, and the possibility of users getting a refund if goal\nis not met.\n * Deprecated, use RefundablePostDeliveryCrowdsale instead. Note that if you allow tokens to be traded before the goal\nis met, then an attack is possible in which the attacker purchases tokens from the crowdsale and when they sees that\nthe goal is unlikely to be met, they sell their tokens (possibly at a discount). The attacker will be refunded when\nthe crowdsale is finalized, and the users that purchased from them will be left with worthless tokens.", + "fullyImplemented": false, + "id": 1247, + "linearizedBaseContracts": [ + 1247, + 1042, + 1847, + 984, + 6830 + ], + "name": "RefundableCrowdsale", + "nodeType": "ContractDefinition", + "nodes": [ + { + "id": 1131, + "libraryName": { + "contractScope": null, + "id": 1129, + "name": "SafeMath", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 3482, + "src": "850:8:10", + "typeDescriptions": { + "typeIdentifier": "t_contract$_SafeMath_$3482", + "typeString": "library SafeMath" + } + }, + "nodeType": "UsingForDirective", + "src": "844:27:10", + "typeName": { + "id": 1130, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "863:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + { + "constant": false, + "id": 1133, + "name": "_goal", + "nodeType": "VariableDeclaration", + "scope": 1247, + "src": "929:21:10", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1132, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "929:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "private" + }, + { + "constant": false, + "id": 1135, + "name": "_escrow", + "nodeType": "VariableDeclaration", + "scope": 1247, + "src": "1024:28:10", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_RefundEscrow_$4275", + "typeString": "contract RefundEscrow" + }, + "typeName": { + "contractScope": null, + "id": 1134, + "name": "RefundEscrow", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 4275, + "src": "1024:12:10", + "typeDescriptions": { + "typeIdentifier": "t_contract$_RefundEscrow_$4275", + "typeString": "contract RefundEscrow" + } + }, + "value": null, + "visibility": "private" + }, + { + "body": { + "id": 1158, + "nodeType": "Block", + "src": "1188:102:10", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1143, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1141, + "name": "goal", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1137, + "src": "1206:4:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 1142, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1213:1:10", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "1206:8:10", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 1140, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6848, + 6849 + ], + "referencedDeclaration": 6848, + "src": "1198:7:10", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 1144, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1198:17:10", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1145, + "nodeType": "ExpressionStatement", + "src": "1198:17:10" + }, + { + "expression": { + "argumentTypes": null, + "id": 1152, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 1146, + "name": "_escrow", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1135, + "src": "1225:7:10", + "typeDescriptions": { + "typeIdentifier": "t_contract$_RefundEscrow_$4275", + "typeString": "contract RefundEscrow" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 1149, + "name": "wallet", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 820, + "src": "1252:6:10", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", + "typeString": "function () view returns (address payable)" + } + }, + "id": 1150, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1252:8:10", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "id": 1148, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "NewExpression", + "src": "1235:16:10", + "typeDescriptions": { + "typeIdentifier": "t_function_creation_nonpayable$_t_address_payable_$returns$_t_contract$_RefundEscrow_$4275_$", + "typeString": "function (address payable) returns (contract RefundEscrow)" + }, + "typeName": { + "contractScope": null, + "id": 1147, + "name": "RefundEscrow", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 4275, + "src": "1239:12:10", + "typeDescriptions": { + "typeIdentifier": "t_contract$_RefundEscrow_$4275", + "typeString": "contract RefundEscrow" + } + } + }, + "id": 1151, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1235:26:10", + "typeDescriptions": { + "typeIdentifier": "t_contract$_RefundEscrow_$4275", + "typeString": "contract RefundEscrow" + } + }, + "src": "1225:36:10", + "typeDescriptions": { + "typeIdentifier": "t_contract$_RefundEscrow_$4275", + "typeString": "contract RefundEscrow" + } + }, + "id": 1153, + "nodeType": "ExpressionStatement", + "src": "1225:36:10" + }, + { + "expression": { + "argumentTypes": null, + "id": 1156, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 1154, + "name": "_goal", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1133, + "src": "1271:5:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 1155, + "name": "goal", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1137, + "src": "1279:4:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1271:12:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1157, + "nodeType": "ExpressionStatement", + "src": "1271:12:10" + } + ] + }, + "documentation": "@dev Constructor, creates RefundEscrow.\n@param goal Funding goal", + "id": 1159, + "implemented": true, + "kind": "constructor", + "modifiers": [], + "name": "", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1138, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1137, + "name": "goal", + "nodeType": "VariableDeclaration", + "scope": 1159, + "src": "1167:12:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1136, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1167:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1166:14:10" + }, + "returnParameters": { + "id": 1139, + "nodeType": "ParameterList", + "parameters": [], + "src": "1188:0:10" + }, + "scope": 1247, + "src": "1154:136:10", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 1166, + "nodeType": "Block", + "src": "1418:29:10", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 1164, + "name": "_goal", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1133, + "src": "1435:5:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 1163, + "id": 1165, + "nodeType": "Return", + "src": "1428:12:10" + } + ] + }, + "documentation": "@return minimum amount of funds to be raised in wei.", + "id": 1167, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "goal", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1160, + "nodeType": "ParameterList", + "parameters": [], + "src": "1385:2:10" + }, + "returnParameters": { + "id": 1163, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1162, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 1167, + "src": "1409:7:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1161, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1409:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1408:9:10" + }, + "scope": 1247, + "src": "1372:75:10", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 1189, + "nodeType": "Block", + "src": "1650:107:10", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 1173, + "name": "finalized", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1013, + "src": "1668:9:10", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_bool_$", + "typeString": "function () view returns (bool)" + } + }, + "id": 1174, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1668:11:10", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 1172, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6848, + 6849 + ], + "referencedDeclaration": 6848, + "src": "1660:7:10", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 1175, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1660:20:10", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1176, + "nodeType": "ExpressionStatement", + "src": "1660:20:10" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1180, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "1698:14:10", + "subExpression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 1178, + "name": "goalReached", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1201, + "src": "1699:11:10", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_bool_$", + "typeString": "function () view returns (bool)" + } + }, + "id": 1179, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1699:13:10", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 1177, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6848, + 6849 + ], + "referencedDeclaration": 6848, + "src": "1690:7:10", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 1181, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1690:23:10", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1182, + "nodeType": "ExpressionStatement", + "src": "1690:23:10" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1186, + "name": "refundee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1169, + "src": "1741:8:10", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "expression": { + "argumentTypes": null, + "id": 1183, + "name": "_escrow", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1135, + "src": "1724:7:10", + "typeDescriptions": { + "typeIdentifier": "t_contract$_RefundEscrow_$4275", + "typeString": "contract RefundEscrow" + } + }, + "id": 1185, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "withdraw", + "nodeType": "MemberAccess", + "referencedDeclaration": 4025, + "src": "1724:16:10", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_payable_$returns$__$", + "typeString": "function (address payable) external" + } + }, + "id": 1187, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1724:26:10", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1188, + "nodeType": "ExpressionStatement", + "src": "1724:26:10" + } + ] + }, + "documentation": "@dev Investors can claim refunds here if crowdsale is unsuccessful\n@param refundee Whose refund will be claimed.", + "id": 1190, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "claimRefund", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1170, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1169, + "name": "refundee", + "nodeType": "VariableDeclaration", + "scope": 1190, + "src": "1617:24:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + "typeName": { + "id": 1168, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1617:15:10", + "stateMutability": "payable", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1616:26:10" + }, + "returnParameters": { + "id": 1171, + "nodeType": "ParameterList", + "parameters": [], + "src": "1650:0:10" + }, + "scope": 1247, + "src": "1596:161:10", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 1200, + "nodeType": "Block", + "src": "1930:44:10", + "statements": [ + { + "expression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1198, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 1195, + "name": "weiRaised", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 836, + "src": "1947:9:10", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$", + "typeString": "function () view returns (uint256)" + } + }, + "id": 1196, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1947:11:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "argumentTypes": null, + "id": 1197, + "name": "_goal", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1133, + "src": "1962:5:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1947:20:10", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 1194, + "id": 1199, + "nodeType": "Return", + "src": "1940:27:10" + } + ] + }, + "documentation": "@dev Checks whether funding goal was reached.\n@return Whether funding goal was reached", + "id": 1201, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "goalReached", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1191, + "nodeType": "ParameterList", + "parameters": [], + "src": "1900:2:10" + }, + "returnParameters": { + "id": 1194, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1193, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 1201, + "src": "1924:4:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 1192, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1924:4:10", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1923:6:10" + }, + "scope": 1247, + "src": "1880:94:10", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 1229, + "nodeType": "Block", + "src": "2101:204:10", + "statements": [ + { + "condition": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 1204, + "name": "goalReached", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1201, + "src": "2115:11:10", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_bool_$", + "typeString": "function () view returns (bool)" + } + }, + "id": 1205, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2115:13:10", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 1222, + "nodeType": "Block", + "src": "2219:48:10", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "argumentTypes": null, + "id": 1217, + "name": "_escrow", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1135, + "src": "2233:7:10", + "typeDescriptions": { + "typeIdentifier": "t_contract$_RefundEscrow_$4275", + "typeString": "contract RefundEscrow" + } + }, + "id": 1219, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "enableRefunds", + "nodeType": "MemberAccess", + "referencedDeclaration": 4241, + "src": "2233:21:10", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$__$returns$__$", + "typeString": "function () external" + } + }, + "id": 1220, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2233:23:10", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1221, + "nodeType": "ExpressionStatement", + "src": "2233:23:10" + } + ] + }, + "id": 1223, + "nodeType": "IfStatement", + "src": "2111:156:10", + "trueBody": { + "id": 1216, + "nodeType": "Block", + "src": "2130:83:10", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "argumentTypes": null, + "id": 1206, + "name": "_escrow", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1135, + "src": "2144:7:10", + "typeDescriptions": { + "typeIdentifier": "t_contract$_RefundEscrow_$4275", + "typeString": "contract RefundEscrow" + } + }, + "id": 1208, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "close", + "nodeType": "MemberAccess", + "referencedDeclaration": 4220, + "src": "2144:13:10", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$__$returns$__$", + "typeString": "function () external" + } + }, + "id": 1209, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2144:15:10", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1210, + "nodeType": "ExpressionStatement", + "src": "2144:15:10" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "argumentTypes": null, + "id": 1211, + "name": "_escrow", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1135, + "src": "2173:7:10", + "typeDescriptions": { + "typeIdentifier": "t_contract$_RefundEscrow_$4275", + "typeString": "contract RefundEscrow" + } + }, + "id": 1213, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "beneficiaryWithdraw", + "nodeType": "MemberAccess", + "referencedDeclaration": 4261, + "src": "2173:27:10", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$__$returns$__$", + "typeString": "function () external" + } + }, + "id": 1214, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2173:29:10", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1215, + "nodeType": "ExpressionStatement", + "src": "2173:29:10" + } + ] + } + }, + { + "expression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "argumentTypes": null, + "id": 1224, + "name": "super", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6897, + "src": "2277:5:10", + "typeDescriptions": { + "typeIdentifier": "t_super$_RefundableCrowdsale_$1247", + "typeString": "contract super RefundableCrowdsale" + } + }, + "id": 1226, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "_finalization", + "nodeType": "MemberAccess", + "referencedDeclaration": 1041, + "src": "2277:19:10", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", + "typeString": "function ()" + } + }, + "id": 1227, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2277:21:10", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1228, + "nodeType": "ExpressionStatement", + "src": "2277:21:10" + } + ] + }, + "documentation": "@dev escrow finalization task, called when finalize() is called", + "id": 1230, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_finalization", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1202, + "nodeType": "ParameterList", + "parameters": [], + "src": "2089:2:10" + }, + "returnParameters": { + "id": 1203, + "nodeType": "ParameterList", + "parameters": [], + "src": "2101:0:10" + }, + "scope": 1247, + "src": "2067:238:10", + "stateMutability": "nonpayable", + "superFunction": 1041, + "visibility": "internal" + }, + { + "body": { + "id": 1245, + "nodeType": "Block", + "src": "2435:61:10", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1241, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6845, + "src": "2478:3:10", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1242, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2478:10:10", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1238, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6845, + "src": "2467:3:10", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1239, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "value", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2467:9:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1233, + "name": "_escrow", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1135, + "src": "2445:7:10", + "typeDescriptions": { + "typeIdentifier": "t_contract$_RefundEscrow_$4275", + "typeString": "contract RefundEscrow" + } + }, + "id": 1236, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "deposit", + "nodeType": "MemberAccess", + "referencedDeclaration": 4199, + "src": "2445:15:10", + "typeDescriptions": { + "typeIdentifier": "t_function_external_payable$_t_address_$returns$__$", + "typeString": "function (address) payable external" + } + }, + "id": 1237, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "value", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2445:21:10", + "typeDescriptions": { + "typeIdentifier": "t_function_setvalue_nonpayable$_t_uint256_$returns$_t_function_external_payable$_t_address_$returns$__$value_$", + "typeString": "function (uint256) returns (function (address) payable external)" + } + }, + "id": 1240, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2445:32:10", + "typeDescriptions": { + "typeIdentifier": "t_function_external_payable$_t_address_$returns$__$value", + "typeString": "function (address) payable external" + } + }, + "id": 1243, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2445:44:10", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1244, + "nodeType": "ExpressionStatement", + "src": "2445:44:10" + } + ] + }, + "documentation": "@dev Overrides Crowdsale fund forwarding, sending funds to escrow.", + "id": 1246, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_forwardFunds", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1231, + "nodeType": "ParameterList", + "parameters": [], + "src": "2423:2:10" + }, + "returnParameters": { + "id": 1232, + "nodeType": "ParameterList", + "parameters": [], + "src": "2435:0:10" + }, + "scope": 1247, + "src": "2401:95:10", + "stateMutability": "nonpayable", + "superFunction": 983, + "visibility": "internal" + } + ], + "scope": 1248, + "src": "785:1713:10" + } + ], + "src": "0:2499:10" + }, + "legacyAST": { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/crowdsale/distribution/RefundableCrowdsale.sol", + "exportedSymbols": { + "RefundableCrowdsale": [ + 1247 + ] + }, + "id": 1248, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 1123, + "literals": [ + "solidity", + "^", + "0.5", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "0:23:10" + }, + { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/math/SafeMath.sol", + "file": "../../math/SafeMath.sol", + "id": 1124, + "nodeType": "ImportDirective", + "scope": 1248, + "sourceUnit": 3483, + "src": "25:33:10", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/crowdsale/distribution/FinalizableCrowdsale.sol", + "file": "./FinalizableCrowdsale.sol", + "id": 1125, + "nodeType": "ImportDirective", + "scope": 1248, + "sourceUnit": 1043, + "src": "59:36:10", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/payment/escrow/RefundEscrow.sol", + "file": "../../payment/escrow/RefundEscrow.sol", + "id": 1126, + "nodeType": "ImportDirective", + "scope": 1248, + "sourceUnit": 4276, + "src": "96:47:10", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 1127, + "name": "FinalizableCrowdsale", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 1042, + "src": "817:20:10", + "typeDescriptions": { + "typeIdentifier": "t_contract$_FinalizableCrowdsale_$1042", + "typeString": "contract FinalizableCrowdsale" + } + }, + "id": 1128, + "nodeType": "InheritanceSpecifier", + "src": "817:20:10" + } + ], + "contractDependencies": [ + 984, + 1042, + 1847, + 4275, + 6830 + ], + "contractKind": "contract", + "documentation": "@title RefundableCrowdsale\n@dev Extension of Crowdsale contract that adds a funding goal, and the possibility of users getting a refund if goal\nis not met.\n * Deprecated, use RefundablePostDeliveryCrowdsale instead. Note that if you allow tokens to be traded before the goal\nis met, then an attack is possible in which the attacker purchases tokens from the crowdsale and when they sees that\nthe goal is unlikely to be met, they sell their tokens (possibly at a discount). The attacker will be refunded when\nthe crowdsale is finalized, and the users that purchased from them will be left with worthless tokens.", + "fullyImplemented": false, + "id": 1247, + "linearizedBaseContracts": [ + 1247, + 1042, + 1847, + 984, + 6830 + ], + "name": "RefundableCrowdsale", + "nodeType": "ContractDefinition", + "nodes": [ + { + "id": 1131, + "libraryName": { + "contractScope": null, + "id": 1129, + "name": "SafeMath", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 3482, + "src": "850:8:10", + "typeDescriptions": { + "typeIdentifier": "t_contract$_SafeMath_$3482", + "typeString": "library SafeMath" + } + }, + "nodeType": "UsingForDirective", + "src": "844:27:10", + "typeName": { + "id": 1130, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "863:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + { + "constant": false, + "id": 1133, + "name": "_goal", + "nodeType": "VariableDeclaration", + "scope": 1247, + "src": "929:21:10", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1132, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "929:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "private" + }, + { + "constant": false, + "id": 1135, + "name": "_escrow", + "nodeType": "VariableDeclaration", + "scope": 1247, + "src": "1024:28:10", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_RefundEscrow_$4275", + "typeString": "contract RefundEscrow" + }, + "typeName": { + "contractScope": null, + "id": 1134, + "name": "RefundEscrow", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 4275, + "src": "1024:12:10", + "typeDescriptions": { + "typeIdentifier": "t_contract$_RefundEscrow_$4275", + "typeString": "contract RefundEscrow" + } + }, + "value": null, + "visibility": "private" + }, + { + "body": { + "id": 1158, + "nodeType": "Block", + "src": "1188:102:10", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1143, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1141, + "name": "goal", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1137, + "src": "1206:4:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 1142, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1213:1:10", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "1206:8:10", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 1140, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6848, + 6849 + ], + "referencedDeclaration": 6848, + "src": "1198:7:10", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 1144, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1198:17:10", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1145, + "nodeType": "ExpressionStatement", + "src": "1198:17:10" + }, + { + "expression": { + "argumentTypes": null, + "id": 1152, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 1146, + "name": "_escrow", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1135, + "src": "1225:7:10", + "typeDescriptions": { + "typeIdentifier": "t_contract$_RefundEscrow_$4275", + "typeString": "contract RefundEscrow" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 1149, + "name": "wallet", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 820, + "src": "1252:6:10", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", + "typeString": "function () view returns (address payable)" + } + }, + "id": 1150, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1252:8:10", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "id": 1148, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "NewExpression", + "src": "1235:16:10", + "typeDescriptions": { + "typeIdentifier": "t_function_creation_nonpayable$_t_address_payable_$returns$_t_contract$_RefundEscrow_$4275_$", + "typeString": "function (address payable) returns (contract RefundEscrow)" + }, + "typeName": { + "contractScope": null, + "id": 1147, + "name": "RefundEscrow", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 4275, + "src": "1239:12:10", + "typeDescriptions": { + "typeIdentifier": "t_contract$_RefundEscrow_$4275", + "typeString": "contract RefundEscrow" + } + } + }, + "id": 1151, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1235:26:10", + "typeDescriptions": { + "typeIdentifier": "t_contract$_RefundEscrow_$4275", + "typeString": "contract RefundEscrow" + } + }, + "src": "1225:36:10", + "typeDescriptions": { + "typeIdentifier": "t_contract$_RefundEscrow_$4275", + "typeString": "contract RefundEscrow" + } + }, + "id": 1153, + "nodeType": "ExpressionStatement", + "src": "1225:36:10" + }, + { + "expression": { + "argumentTypes": null, + "id": 1156, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 1154, + "name": "_goal", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1133, + "src": "1271:5:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 1155, + "name": "goal", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1137, + "src": "1279:4:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1271:12:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1157, + "nodeType": "ExpressionStatement", + "src": "1271:12:10" + } + ] + }, + "documentation": "@dev Constructor, creates RefundEscrow.\n@param goal Funding goal", + "id": 1159, + "implemented": true, + "kind": "constructor", + "modifiers": [], + "name": "", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1138, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1137, + "name": "goal", + "nodeType": "VariableDeclaration", + "scope": 1159, + "src": "1167:12:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1136, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1167:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1166:14:10" + }, + "returnParameters": { + "id": 1139, + "nodeType": "ParameterList", + "parameters": [], + "src": "1188:0:10" + }, + "scope": 1247, + "src": "1154:136:10", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 1166, + "nodeType": "Block", + "src": "1418:29:10", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 1164, + "name": "_goal", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1133, + "src": "1435:5:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 1163, + "id": 1165, + "nodeType": "Return", + "src": "1428:12:10" + } + ] + }, + "documentation": "@return minimum amount of funds to be raised in wei.", + "id": 1167, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "goal", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1160, + "nodeType": "ParameterList", + "parameters": [], + "src": "1385:2:10" + }, + "returnParameters": { + "id": 1163, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1162, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 1167, + "src": "1409:7:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1161, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1409:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1408:9:10" + }, + "scope": 1247, + "src": "1372:75:10", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 1189, + "nodeType": "Block", + "src": "1650:107:10", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 1173, + "name": "finalized", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1013, + "src": "1668:9:10", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_bool_$", + "typeString": "function () view returns (bool)" + } + }, + "id": 1174, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1668:11:10", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 1172, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6848, + 6849 + ], + "referencedDeclaration": 6848, + "src": "1660:7:10", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 1175, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1660:20:10", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1176, + "nodeType": "ExpressionStatement", + "src": "1660:20:10" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1180, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "1698:14:10", + "subExpression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 1178, + "name": "goalReached", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1201, + "src": "1699:11:10", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_bool_$", + "typeString": "function () view returns (bool)" + } + }, + "id": 1179, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1699:13:10", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 1177, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6848, + 6849 + ], + "referencedDeclaration": 6848, + "src": "1690:7:10", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 1181, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1690:23:10", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1182, + "nodeType": "ExpressionStatement", + "src": "1690:23:10" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1186, + "name": "refundee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1169, + "src": "1741:8:10", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "expression": { + "argumentTypes": null, + "id": 1183, + "name": "_escrow", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1135, + "src": "1724:7:10", + "typeDescriptions": { + "typeIdentifier": "t_contract$_RefundEscrow_$4275", + "typeString": "contract RefundEscrow" + } + }, + "id": 1185, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "withdraw", + "nodeType": "MemberAccess", + "referencedDeclaration": 4025, + "src": "1724:16:10", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_payable_$returns$__$", + "typeString": "function (address payable) external" + } + }, + "id": 1187, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1724:26:10", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1188, + "nodeType": "ExpressionStatement", + "src": "1724:26:10" + } + ] + }, + "documentation": "@dev Investors can claim refunds here if crowdsale is unsuccessful\n@param refundee Whose refund will be claimed.", + "id": 1190, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "claimRefund", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1170, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1169, + "name": "refundee", + "nodeType": "VariableDeclaration", + "scope": 1190, + "src": "1617:24:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + "typeName": { + "id": 1168, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1617:15:10", + "stateMutability": "payable", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1616:26:10" + }, + "returnParameters": { + "id": 1171, + "nodeType": "ParameterList", + "parameters": [], + "src": "1650:0:10" + }, + "scope": 1247, + "src": "1596:161:10", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 1200, + "nodeType": "Block", + "src": "1930:44:10", + "statements": [ + { + "expression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1198, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 1195, + "name": "weiRaised", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 836, + "src": "1947:9:10", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$", + "typeString": "function () view returns (uint256)" + } + }, + "id": 1196, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1947:11:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "argumentTypes": null, + "id": 1197, + "name": "_goal", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1133, + "src": "1962:5:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1947:20:10", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 1194, + "id": 1199, + "nodeType": "Return", + "src": "1940:27:10" + } + ] + }, + "documentation": "@dev Checks whether funding goal was reached.\n@return Whether funding goal was reached", + "id": 1201, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "goalReached", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1191, + "nodeType": "ParameterList", + "parameters": [], + "src": "1900:2:10" + }, + "returnParameters": { + "id": 1194, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1193, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 1201, + "src": "1924:4:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 1192, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1924:4:10", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1923:6:10" + }, + "scope": 1247, + "src": "1880:94:10", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 1229, + "nodeType": "Block", + "src": "2101:204:10", + "statements": [ + { + "condition": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 1204, + "name": "goalReached", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1201, + "src": "2115:11:10", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_bool_$", + "typeString": "function () view returns (bool)" + } + }, + "id": 1205, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2115:13:10", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 1222, + "nodeType": "Block", + "src": "2219:48:10", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "argumentTypes": null, + "id": 1217, + "name": "_escrow", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1135, + "src": "2233:7:10", + "typeDescriptions": { + "typeIdentifier": "t_contract$_RefundEscrow_$4275", + "typeString": "contract RefundEscrow" + } + }, + "id": 1219, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "enableRefunds", + "nodeType": "MemberAccess", + "referencedDeclaration": 4241, + "src": "2233:21:10", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$__$returns$__$", + "typeString": "function () external" + } + }, + "id": 1220, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2233:23:10", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1221, + "nodeType": "ExpressionStatement", + "src": "2233:23:10" + } + ] + }, + "id": 1223, + "nodeType": "IfStatement", + "src": "2111:156:10", + "trueBody": { + "id": 1216, + "nodeType": "Block", + "src": "2130:83:10", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "argumentTypes": null, + "id": 1206, + "name": "_escrow", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1135, + "src": "2144:7:10", + "typeDescriptions": { + "typeIdentifier": "t_contract$_RefundEscrow_$4275", + "typeString": "contract RefundEscrow" + } + }, + "id": 1208, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "close", + "nodeType": "MemberAccess", + "referencedDeclaration": 4220, + "src": "2144:13:10", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$__$returns$__$", + "typeString": "function () external" + } + }, + "id": 1209, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2144:15:10", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1210, + "nodeType": "ExpressionStatement", + "src": "2144:15:10" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "argumentTypes": null, + "id": 1211, + "name": "_escrow", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1135, + "src": "2173:7:10", + "typeDescriptions": { + "typeIdentifier": "t_contract$_RefundEscrow_$4275", + "typeString": "contract RefundEscrow" + } + }, + "id": 1213, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "beneficiaryWithdraw", + "nodeType": "MemberAccess", + "referencedDeclaration": 4261, + "src": "2173:27:10", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$__$returns$__$", + "typeString": "function () external" + } + }, + "id": 1214, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2173:29:10", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1215, + "nodeType": "ExpressionStatement", + "src": "2173:29:10" + } + ] + } + }, + { + "expression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "argumentTypes": null, + "id": 1224, + "name": "super", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6897, + "src": "2277:5:10", + "typeDescriptions": { + "typeIdentifier": "t_super$_RefundableCrowdsale_$1247", + "typeString": "contract super RefundableCrowdsale" + } + }, + "id": 1226, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "_finalization", + "nodeType": "MemberAccess", + "referencedDeclaration": 1041, + "src": "2277:19:10", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", + "typeString": "function ()" + } + }, + "id": 1227, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2277:21:10", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1228, + "nodeType": "ExpressionStatement", + "src": "2277:21:10" + } + ] + }, + "documentation": "@dev escrow finalization task, called when finalize() is called", + "id": 1230, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_finalization", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1202, + "nodeType": "ParameterList", + "parameters": [], + "src": "2089:2:10" + }, + "returnParameters": { + "id": 1203, + "nodeType": "ParameterList", + "parameters": [], + "src": "2101:0:10" + }, + "scope": 1247, + "src": "2067:238:10", + "stateMutability": "nonpayable", + "superFunction": 1041, + "visibility": "internal" + }, + { + "body": { + "id": 1245, + "nodeType": "Block", + "src": "2435:61:10", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1241, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6845, + "src": "2478:3:10", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1242, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2478:10:10", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1238, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6845, + "src": "2467:3:10", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1239, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "value", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2467:9:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1233, + "name": "_escrow", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1135, + "src": "2445:7:10", + "typeDescriptions": { + "typeIdentifier": "t_contract$_RefundEscrow_$4275", + "typeString": "contract RefundEscrow" + } + }, + "id": 1236, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "deposit", + "nodeType": "MemberAccess", + "referencedDeclaration": 4199, + "src": "2445:15:10", + "typeDescriptions": { + "typeIdentifier": "t_function_external_payable$_t_address_$returns$__$", + "typeString": "function (address) payable external" + } + }, + "id": 1237, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "value", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2445:21:10", + "typeDescriptions": { + "typeIdentifier": "t_function_setvalue_nonpayable$_t_uint256_$returns$_t_function_external_payable$_t_address_$returns$__$value_$", + "typeString": "function (uint256) returns (function (address) payable external)" + } + }, + "id": 1240, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2445:32:10", + "typeDescriptions": { + "typeIdentifier": "t_function_external_payable$_t_address_$returns$__$value", + "typeString": "function (address) payable external" + } + }, + "id": 1243, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2445:44:10", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1244, + "nodeType": "ExpressionStatement", + "src": "2445:44:10" + } + ] + }, + "documentation": "@dev Overrides Crowdsale fund forwarding, sending funds to escrow.", + "id": 1246, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_forwardFunds", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1231, + "nodeType": "ParameterList", + "parameters": [], + "src": "2423:2:10" + }, + "returnParameters": { + "id": 1232, + "nodeType": "ParameterList", + "parameters": [], + "src": "2435:0:10" + }, + "scope": 1247, + "src": "2401:95:10", + "stateMutability": "nonpayable", + "superFunction": 983, + "visibility": "internal" + } + ], + "scope": 1248, + "src": "785:1713:10" + } + ], + "src": "0:2499:10" + }, + "compiler": { + "name": "solc", + "version": "0.5.0+commit.1d4f565a.Emscripten.clang" + }, + "networks": {}, + "schemaVersion": "3.0.0", + "updatedAt": "2019-01-04T21:44:02.871Z", + "devdoc": { + "details": "Extension of Crowdsale contract that adds a funding goal, and the possibility of users getting a refund if goal is not met. * Deprecated, use RefundablePostDeliveryCrowdsale instead. Note that if you allow tokens to be traded before the goal is met, then an attack is possible in which the attacker purchases tokens from the crowdsale and when they sees that the goal is unlikely to be met, they sell their tokens (possibly at a discount). The attacker will be refunded when the crowdsale is finalized, and the users that purchased from them will be left with worthless tokens.", + "methods": { + "buyTokens(address)": { + "details": "low level token purchase ***DO NOT OVERRIDE*** This function has a non-reentrancy guard, so it shouldn't be called by another `nonReentrant` function.", + "params": { + "beneficiary": "Recipient of the token purchase" + } + }, + "claimRefund(address)": { + "details": "Investors can claim refunds here if crowdsale is unsuccessful", + "params": { + "refundee": "Whose refund will be claimed." + } + }, + "closingTime()": { + "return": "the crowdsale closing time." + }, + "constructor": { + "details": "Constructor, creates RefundEscrow.", + "params": { + "goal": "Funding goal" + } + }, + "finalize()": { + "details": "Must be called after crowdsale ends, to do some extra finalization work. Calls the contract's finalization function." + }, + "finalized()": { + "return": "true if the crowdsale is finalized, false otherwise." + }, + "goal()": { + "return": "minimum amount of funds to be raised in wei." + }, + "goalReached()": { + "details": "Checks whether funding goal was reached.", + "return": "Whether funding goal was reached" + }, + "hasClosed()": { + "details": "Checks whether the period in which the crowdsale is open has already elapsed.", + "return": "Whether crowdsale period has elapsed" + }, + "isOpen()": { + "return": "true if the crowdsale is open, false otherwise." + }, + "openingTime()": { + "return": "the crowdsale opening time." + }, + "rate()": { + "return": "the number of token units a buyer gets per wei." + }, + "token()": { + "return": "the token being sold." + }, + "wallet()": { + "return": "the address where funds are collected." + }, + "weiRaised()": { + "return": "the amount of wei raised." + } + }, + "title": "RefundableCrowdsale" + }, + "userdoc": { + "methods": {} + } +} \ No newline at end of file diff --git a/node_modules/openzeppelin-solidity/build/contracts/RefundablePostDeliveryCrowdsale.json b/node_modules/openzeppelin-solidity/build/contracts/RefundablePostDeliveryCrowdsale.json new file mode 100644 index 0000000..d99e529 --- /dev/null +++ b/node_modules/openzeppelin-solidity/build/contracts/RefundablePostDeliveryCrowdsale.json @@ -0,0 +1,1126 @@ +{ + "contractName": "RefundablePostDeliveryCrowdsale", + "abi": [ + { + "constant": true, + "inputs": [], + "name": "hasClosed", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "rate", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "goal", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "weiRaised", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "isOpen", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "closingTime", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [], + "name": "finalize", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "wallet", + "outputs": [ + { + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "account", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "goalReached", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "finalized", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "openingTime", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "refundee", + "type": "address" + } + ], + "name": "claimRefund", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "beneficiary", + "type": "address" + } + ], + "name": "buyTokens", + "outputs": [], + "payable": true, + "stateMutability": "payable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "token", + "outputs": [ + { + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "payable": true, + "stateMutability": "payable", + "type": "fallback" + }, + { + "anonymous": false, + "inputs": [], + "name": "CrowdsaleFinalized", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "purchaser", + "type": "address" + }, + { + "indexed": true, + "name": "beneficiary", + "type": "address" + }, + { + "indexed": false, + "name": "value", + "type": "uint256" + }, + { + "indexed": false, + "name": "amount", + "type": "uint256" + } + ], + "name": "TokensPurchased", + "type": "event" + }, + { + "constant": false, + "inputs": [ + { + "name": "beneficiary", + "type": "address" + } + ], + "name": "withdrawTokens", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "sourceMap": "", + "deployedSourceMap": "", + "source": "pragma solidity ^0.5.0;\n\nimport \"./RefundableCrowdsale.sol\";\nimport \"./PostDeliveryCrowdsale.sol\";\n\n\n/**\n * @title RefundablePostDeliveryCrowdsale\n * @dev Extension of RefundableCrowdsale contract that only delivers the tokens\n * once the crowdsale has closed and the goal met, preventing refunds to be issued\n * to token holders.\n */\ncontract RefundablePostDeliveryCrowdsale is RefundableCrowdsale, PostDeliveryCrowdsale {\n function withdrawTokens(address beneficiary) public {\n require(finalized());\n require(goalReached());\n\n super.withdrawTokens(beneficiary);\n }\n}\n", + "sourcePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/crowdsale/distribution/RefundablePostDeliveryCrowdsale.sol", + "ast": { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/crowdsale/distribution/RefundablePostDeliveryCrowdsale.sol", + "exportedSymbols": { + "RefundablePostDeliveryCrowdsale": [ + 1278 + ] + }, + "id": 1279, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 1249, + "literals": [ + "solidity", + "^", + "0.5", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "0:23:11" + }, + { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/crowdsale/distribution/RefundableCrowdsale.sol", + "file": "./RefundableCrowdsale.sol", + "id": 1250, + "nodeType": "ImportDirective", + "scope": 1279, + "sourceUnit": 1248, + "src": "25:35:11", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/crowdsale/distribution/PostDeliveryCrowdsale.sol", + "file": "./PostDeliveryCrowdsale.sol", + "id": 1251, + "nodeType": "ImportDirective", + "scope": 1279, + "sourceUnit": 1122, + "src": "61:37:11", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 1252, + "name": "RefundableCrowdsale", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 1247, + "src": "379:19:11", + "typeDescriptions": { + "typeIdentifier": "t_contract$_RefundableCrowdsale_$1247", + "typeString": "contract RefundableCrowdsale" + } + }, + "id": 1253, + "nodeType": "InheritanceSpecifier", + "src": "379:19:11" + }, + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 1254, + "name": "PostDeliveryCrowdsale", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 1121, + "src": "400:21:11", + "typeDescriptions": { + "typeIdentifier": "t_contract$_PostDeliveryCrowdsale_$1121", + "typeString": "contract PostDeliveryCrowdsale" + } + }, + "id": 1255, + "nodeType": "InheritanceSpecifier", + "src": "400:21:11" + } + ], + "contractDependencies": [ + 984, + 1042, + 1121, + 1247, + 1847, + 6830 + ], + "contractKind": "contract", + "documentation": "@title RefundablePostDeliveryCrowdsale\n@dev Extension of RefundableCrowdsale contract that only delivers the tokens\nonce the crowdsale has closed and the goal met, preventing refunds to be issued\nto token holders.", + "fullyImplemented": false, + "id": 1278, + "linearizedBaseContracts": [ + 1278, + 1121, + 1247, + 1042, + 1847, + 984, + 6830 + ], + "name": "RefundablePostDeliveryCrowdsale", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": { + "id": 1276, + "nodeType": "Block", + "src": "480:113:11", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 1261, + "name": "finalized", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1013, + "src": "498:9:11", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_bool_$", + "typeString": "function () view returns (bool)" + } + }, + "id": 1262, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "498:11:11", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 1260, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6848, + 6849 + ], + "referencedDeclaration": 6848, + "src": "490:7:11", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 1263, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "490:20:11", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1264, + "nodeType": "ExpressionStatement", + "src": "490:20:11" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 1266, + "name": "goalReached", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1201, + "src": "528:11:11", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_bool_$", + "typeString": "function () view returns (bool)" + } + }, + "id": 1267, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "528:13:11", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 1265, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6848, + 6849 + ], + "referencedDeclaration": 6848, + "src": "520:7:11", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 1268, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "520:22:11", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1269, + "nodeType": "ExpressionStatement", + "src": "520:22:11" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1273, + "name": "beneficiary", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1257, + "src": "574:11:11", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 1270, + "name": "super", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6899, + "src": "553:5:11", + "typeDescriptions": { + "typeIdentifier": "t_super$_RefundablePostDeliveryCrowdsale_$1278", + "typeString": "contract super RefundablePostDeliveryCrowdsale" + } + }, + "id": 1272, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "withdrawTokens", + "nodeType": "MemberAccess", + "referencedDeclaration": 1089, + "src": "553:20:11", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 1274, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "553:33:11", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1275, + "nodeType": "ExpressionStatement", + "src": "553:33:11" + } + ] + }, + "documentation": null, + "id": 1277, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "withdrawTokens", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1258, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1257, + "name": "beneficiary", + "nodeType": "VariableDeclaration", + "scope": 1277, + "src": "452:19:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1256, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "452:7:11", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "451:21:11" + }, + "returnParameters": { + "id": 1259, + "nodeType": "ParameterList", + "parameters": [], + "src": "480:0:11" + }, + "scope": 1278, + "src": "428:165:11", + "stateMutability": "nonpayable", + "superFunction": 1089, + "visibility": "public" + } + ], + "scope": 1279, + "src": "335:260:11" + } + ], + "src": "0:596:11" + }, + "legacyAST": { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/crowdsale/distribution/RefundablePostDeliveryCrowdsale.sol", + "exportedSymbols": { + "RefundablePostDeliveryCrowdsale": [ + 1278 + ] + }, + "id": 1279, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 1249, + "literals": [ + "solidity", + "^", + "0.5", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "0:23:11" + }, + { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/crowdsale/distribution/RefundableCrowdsale.sol", + "file": "./RefundableCrowdsale.sol", + "id": 1250, + "nodeType": "ImportDirective", + "scope": 1279, + "sourceUnit": 1248, + "src": "25:35:11", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/crowdsale/distribution/PostDeliveryCrowdsale.sol", + "file": "./PostDeliveryCrowdsale.sol", + "id": 1251, + "nodeType": "ImportDirective", + "scope": 1279, + "sourceUnit": 1122, + "src": "61:37:11", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 1252, + "name": "RefundableCrowdsale", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 1247, + "src": "379:19:11", + "typeDescriptions": { + "typeIdentifier": "t_contract$_RefundableCrowdsale_$1247", + "typeString": "contract RefundableCrowdsale" + } + }, + "id": 1253, + "nodeType": "InheritanceSpecifier", + "src": "379:19:11" + }, + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 1254, + "name": "PostDeliveryCrowdsale", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 1121, + "src": "400:21:11", + "typeDescriptions": { + "typeIdentifier": "t_contract$_PostDeliveryCrowdsale_$1121", + "typeString": "contract PostDeliveryCrowdsale" + } + }, + "id": 1255, + "nodeType": "InheritanceSpecifier", + "src": "400:21:11" + } + ], + "contractDependencies": [ + 984, + 1042, + 1121, + 1247, + 1847, + 6830 + ], + "contractKind": "contract", + "documentation": "@title RefundablePostDeliveryCrowdsale\n@dev Extension of RefundableCrowdsale contract that only delivers the tokens\nonce the crowdsale has closed and the goal met, preventing refunds to be issued\nto token holders.", + "fullyImplemented": false, + "id": 1278, + "linearizedBaseContracts": [ + 1278, + 1121, + 1247, + 1042, + 1847, + 984, + 6830 + ], + "name": "RefundablePostDeliveryCrowdsale", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": { + "id": 1276, + "nodeType": "Block", + "src": "480:113:11", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 1261, + "name": "finalized", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1013, + "src": "498:9:11", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_bool_$", + "typeString": "function () view returns (bool)" + } + }, + "id": 1262, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "498:11:11", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 1260, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6848, + 6849 + ], + "referencedDeclaration": 6848, + "src": "490:7:11", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 1263, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "490:20:11", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1264, + "nodeType": "ExpressionStatement", + "src": "490:20:11" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 1266, + "name": "goalReached", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1201, + "src": "528:11:11", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_bool_$", + "typeString": "function () view returns (bool)" + } + }, + "id": 1267, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "528:13:11", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 1265, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6848, + 6849 + ], + "referencedDeclaration": 6848, + "src": "520:7:11", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 1268, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "520:22:11", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1269, + "nodeType": "ExpressionStatement", + "src": "520:22:11" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1273, + "name": "beneficiary", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1257, + "src": "574:11:11", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 1270, + "name": "super", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6899, + "src": "553:5:11", + "typeDescriptions": { + "typeIdentifier": "t_super$_RefundablePostDeliveryCrowdsale_$1278", + "typeString": "contract super RefundablePostDeliveryCrowdsale" + } + }, + "id": 1272, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "withdrawTokens", + "nodeType": "MemberAccess", + "referencedDeclaration": 1089, + "src": "553:20:11", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 1274, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "553:33:11", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1275, + "nodeType": "ExpressionStatement", + "src": "553:33:11" + } + ] + }, + "documentation": null, + "id": 1277, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "withdrawTokens", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1258, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1257, + "name": "beneficiary", + "nodeType": "VariableDeclaration", + "scope": 1277, + "src": "452:19:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1256, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "452:7:11", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "451:21:11" + }, + "returnParameters": { + "id": 1259, + "nodeType": "ParameterList", + "parameters": [], + "src": "480:0:11" + }, + "scope": 1278, + "src": "428:165:11", + "stateMutability": "nonpayable", + "superFunction": 1089, + "visibility": "public" + } + ], + "scope": 1279, + "src": "335:260:11" + } + ], + "src": "0:596:11" + }, + "compiler": { + "name": "solc", + "version": "0.5.0+commit.1d4f565a.Emscripten.clang" + }, + "networks": {}, + "schemaVersion": "3.0.0", + "updatedAt": "2019-01-04T21:44:02.872Z", + "devdoc": { + "details": "Extension of RefundableCrowdsale contract that only delivers the tokens once the crowdsale has closed and the goal met, preventing refunds to be issued to token holders.", + "methods": { + "balanceOf(address)": { + "return": "the balance of an account." + }, + "buyTokens(address)": { + "details": "low level token purchase ***DO NOT OVERRIDE*** This function has a non-reentrancy guard, so it shouldn't be called by another `nonReentrant` function.", + "params": { + "beneficiary": "Recipient of the token purchase" + } + }, + "claimRefund(address)": { + "details": "Investors can claim refunds here if crowdsale is unsuccessful", + "params": { + "refundee": "Whose refund will be claimed." + } + }, + "closingTime()": { + "return": "the crowdsale closing time." + }, + "finalize()": { + "details": "Must be called after crowdsale ends, to do some extra finalization work. Calls the contract's finalization function." + }, + "finalized()": { + "return": "true if the crowdsale is finalized, false otherwise." + }, + "goal()": { + "return": "minimum amount of funds to be raised in wei." + }, + "goalReached()": { + "details": "Checks whether funding goal was reached.", + "return": "Whether funding goal was reached" + }, + "hasClosed()": { + "details": "Checks whether the period in which the crowdsale is open has already elapsed.", + "return": "Whether crowdsale period has elapsed" + }, + "isOpen()": { + "return": "true if the crowdsale is open, false otherwise." + }, + "openingTime()": { + "return": "the crowdsale opening time." + }, + "rate()": { + "return": "the number of token units a buyer gets per wei." + }, + "token()": { + "return": "the token being sold." + }, + "wallet()": { + "return": "the address where funds are collected." + }, + "weiRaised()": { + "return": "the amount of wei raised." + } + }, + "title": "RefundablePostDeliveryCrowdsale" + }, + "userdoc": { + "methods": {} + } +} \ No newline at end of file diff --git a/node_modules/openzeppelin-solidity/build/contracts/Roles.json b/node_modules/openzeppelin-solidity/build/contracts/Roles.json new file mode 100644 index 0000000..fb18eaa --- /dev/null +++ b/node_modules/openzeppelin-solidity/build/contracts/Roles.json @@ -0,0 +1,2571 @@ +{ + "contractName": "Roles", + "abi": [], + "bytecode": "0x604c602c600b82828239805160001a60731460008114601c57601e565bfe5b5030600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea165627a7a72305820021969cf356e9b3b2f45c08c7a355dbc76cf1a422a536f05be5bb9b9a4afb3df0029", + "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea165627a7a72305820021969cf356e9b3b2f45c08c7a355dbc76cf1a422a536f05be5bb9b9a4afb3df0029", + "sourceMap": "108:842:0:-;;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", + "deployedSourceMap": "108:842:0:-;;;;;;;;", + "source": "pragma solidity ^0.5.0;\n\n/**\n * @title Roles\n * @dev Library for managing addresses assigned to a Role.\n */\nlibrary Roles {\n struct Role {\n mapping (address => bool) bearer;\n }\n\n /**\n * @dev give an account access to this role\n */\n function add(Role storage role, address account) internal {\n require(account != address(0));\n require(!has(role, account));\n\n role.bearer[account] = true;\n }\n\n /**\n * @dev remove an account's access to this role\n */\n function remove(Role storage role, address account) internal {\n require(account != address(0));\n require(has(role, account));\n\n role.bearer[account] = false;\n }\n\n /**\n * @dev check if an account has this role\n * @return bool\n */\n function has(Role storage role, address account) internal view returns (bool) {\n require(account != address(0));\n return role.bearer[account];\n }\n}\n", + "sourcePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/access/Roles.sol", + "ast": { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/access/Roles.sol", + "exportedSymbols": { + "Roles": [ + 93 + ] + }, + "id": 94, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 1, + "literals": [ + "solidity", + "^", + "0.5", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "0:23:0" + }, + { + "baseContracts": [], + "contractDependencies": [], + "contractKind": "library", + "documentation": "@title Roles\n@dev Library for managing addresses assigned to a Role.", + "fullyImplemented": true, + "id": 93, + "linearizedBaseContracts": [ + 93 + ], + "name": "Roles", + "nodeType": "ContractDefinition", + "nodes": [ + { + "canonicalName": "Roles.Role", + "id": 6, + "members": [ + { + "constant": false, + "id": 5, + "name": "bearer", + "nodeType": "VariableDeclaration", + "scope": 6, + "src": "150:32:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + }, + "typeName": { + "id": 4, + "keyType": { + "id": 2, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "159:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "150:25:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + }, + "valueType": { + "id": 3, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "170:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + }, + "value": null, + "visibility": "internal" + } + ], + "name": "Role", + "nodeType": "StructDefinition", + "scope": 93, + "src": "128:61:0", + "visibility": "public" + }, + { + "body": { + "id": 37, + "nodeType": "Block", + "src": "317:123:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 18, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 14, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10, + "src": "335:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 16, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "354:1:0", + "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": 15, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "346:7:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 17, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "346:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "335:21:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 13, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6848, + 6849 + ], + "referencedDeclaration": 6848, + "src": "327:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 19, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "327:30:0", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 20, + "nodeType": "ExpressionStatement", + "src": "327:30:0" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 26, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "375:19:0", + "subExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 23, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8, + "src": "380:4:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$6_storage_ptr", + "typeString": "struct Roles.Role storage pointer" + } + }, + { + "argumentTypes": null, + "id": 24, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10, + "src": "386:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Role_$6_storage_ptr", + "typeString": "struct Roles.Role storage pointer" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 22, + "name": "has", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 92, + "src": "376:3:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_Role_$6_storage_ptr_$_t_address_$returns$_t_bool_$", + "typeString": "function (struct Roles.Role storage pointer,address) view returns (bool)" + } + }, + "id": 25, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "376:18:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 21, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6848, + 6849 + ], + "referencedDeclaration": 6848, + "src": "367:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 27, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "367:28:0", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 28, + "nodeType": "ExpressionStatement", + "src": "367:28:0" + }, + { + "expression": { + "argumentTypes": null, + "id": 35, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 29, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8, + "src": "406:4:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$6_storage_ptr", + "typeString": "struct Roles.Role storage pointer" + } + }, + "id": 32, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "bearer", + "nodeType": "MemberAccess", + "referencedDeclaration": 5, + "src": "406:11:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 33, + "indexExpression": { + "argumentTypes": null, + "id": 31, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10, + "src": "418:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "406:20:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 34, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "429:4:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "src": "406:27:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 36, + "nodeType": "ExpressionStatement", + "src": "406:27:0" + } + ] + }, + "documentation": "@dev give an account access to this role", + "id": 38, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "add", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 11, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8, + "name": "role", + "nodeType": "VariableDeclaration", + "scope": 38, + "src": "272:17:0", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$6_storage_ptr", + "typeString": "struct Roles.Role" + }, + "typeName": { + "contractScope": null, + "id": 7, + "name": "Role", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 6, + "src": "272:4:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$6_storage_ptr", + "typeString": "struct Roles.Role" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 10, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 38, + "src": "291:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 9, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "291:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "271:36:0" + }, + "returnParameters": { + "id": 12, + "nodeType": "ParameterList", + "parameters": [], + "src": "317:0:0" + }, + "scope": 93, + "src": "259:181:0", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 68, + "nodeType": "Block", + "src": "575:123:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 50, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 46, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 42, + "src": "593:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 48, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "612:1:0", + "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": 47, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "604:7:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 49, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "604:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "593:21:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 45, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6848, + 6849 + ], + "referencedDeclaration": 6848, + "src": "585:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 51, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "585:30:0", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 52, + "nodeType": "ExpressionStatement", + "src": "585:30:0" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 55, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 40, + "src": "637:4:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$6_storage_ptr", + "typeString": "struct Roles.Role storage pointer" + } + }, + { + "argumentTypes": null, + "id": 56, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 42, + "src": "643:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Role_$6_storage_ptr", + "typeString": "struct Roles.Role storage pointer" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 54, + "name": "has", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 92, + "src": "633:3:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_Role_$6_storage_ptr_$_t_address_$returns$_t_bool_$", + "typeString": "function (struct Roles.Role storage pointer,address) view returns (bool)" + } + }, + "id": 57, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "633:18:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 53, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6848, + 6849 + ], + "referencedDeclaration": 6848, + "src": "625:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 58, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "625:27:0", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 59, + "nodeType": "ExpressionStatement", + "src": "625:27:0" + }, + { + "expression": { + "argumentTypes": null, + "id": 66, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 60, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 40, + "src": "663:4:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$6_storage_ptr", + "typeString": "struct Roles.Role storage pointer" + } + }, + "id": 63, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "bearer", + "nodeType": "MemberAccess", + "referencedDeclaration": 5, + "src": "663:11:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 64, + "indexExpression": { + "argumentTypes": null, + "id": 62, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 42, + "src": "675:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "663:20:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "66616c7365", + "id": 65, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "686:5:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "src": "663:28:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 67, + "nodeType": "ExpressionStatement", + "src": "663:28:0" + } + ] + }, + "documentation": "@dev remove an account's access to this role", + "id": 69, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "remove", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 43, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 40, + "name": "role", + "nodeType": "VariableDeclaration", + "scope": 69, + "src": "530:17:0", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$6_storage_ptr", + "typeString": "struct Roles.Role" + }, + "typeName": { + "contractScope": null, + "id": 39, + "name": "Role", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 6, + "src": "530:4:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$6_storage_ptr", + "typeString": "struct Roles.Role" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 42, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 69, + "src": "549:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 41, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "549:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "529:36:0" + }, + "returnParameters": { + "id": 44, + "nodeType": "ParameterList", + "parameters": [], + "src": "575:0:0" + }, + "scope": 93, + "src": "514:184:0", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 91, + "nodeType": "Block", + "src": "864:84:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 83, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 79, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 73, + "src": "882:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 81, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "901:1:0", + "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": 80, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "893:7:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 82, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "893:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "882:21:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 78, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6848, + 6849 + ], + "referencedDeclaration": 6848, + "src": "874:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 84, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "874:30:0", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 85, + "nodeType": "ExpressionStatement", + "src": "874:30:0" + }, + { + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 86, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 71, + "src": "921:4:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$6_storage_ptr", + "typeString": "struct Roles.Role storage pointer" + } + }, + "id": 87, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "bearer", + "nodeType": "MemberAccess", + "referencedDeclaration": 5, + "src": "921:11:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 89, + "indexExpression": { + "argumentTypes": null, + "id": 88, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 73, + "src": "933:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "921:20:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 77, + "id": 90, + "nodeType": "Return", + "src": "914:27:0" + } + ] + }, + "documentation": "@dev check if an account has this role\n@return bool", + "id": 92, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "has", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 74, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 71, + "name": "role", + "nodeType": "VariableDeclaration", + "scope": 92, + "src": "799:17:0", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$6_storage_ptr", + "typeString": "struct Roles.Role" + }, + "typeName": { + "contractScope": null, + "id": 70, + "name": "Role", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 6, + "src": "799:4:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$6_storage_ptr", + "typeString": "struct Roles.Role" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 73, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 92, + "src": "818:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 72, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "818:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "798:36:0" + }, + "returnParameters": { + "id": 77, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 76, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 92, + "src": "858:4:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 75, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "858:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "857:6:0" + }, + "scope": 93, + "src": "786:162:0", + "stateMutability": "view", + "superFunction": null, + "visibility": "internal" + } + ], + "scope": 94, + "src": "108:842:0" + } + ], + "src": "0:951:0" + }, + "legacyAST": { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/access/Roles.sol", + "exportedSymbols": { + "Roles": [ + 93 + ] + }, + "id": 94, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 1, + "literals": [ + "solidity", + "^", + "0.5", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "0:23:0" + }, + { + "baseContracts": [], + "contractDependencies": [], + "contractKind": "library", + "documentation": "@title Roles\n@dev Library for managing addresses assigned to a Role.", + "fullyImplemented": true, + "id": 93, + "linearizedBaseContracts": [ + 93 + ], + "name": "Roles", + "nodeType": "ContractDefinition", + "nodes": [ + { + "canonicalName": "Roles.Role", + "id": 6, + "members": [ + { + "constant": false, + "id": 5, + "name": "bearer", + "nodeType": "VariableDeclaration", + "scope": 6, + "src": "150:32:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + }, + "typeName": { + "id": 4, + "keyType": { + "id": 2, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "159:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "150:25:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + }, + "valueType": { + "id": 3, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "170:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + }, + "value": null, + "visibility": "internal" + } + ], + "name": "Role", + "nodeType": "StructDefinition", + "scope": 93, + "src": "128:61:0", + "visibility": "public" + }, + { + "body": { + "id": 37, + "nodeType": "Block", + "src": "317:123:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 18, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 14, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10, + "src": "335:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 16, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "354:1:0", + "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": 15, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "346:7:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 17, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "346:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "335:21:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 13, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6848, + 6849 + ], + "referencedDeclaration": 6848, + "src": "327:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 19, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "327:30:0", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 20, + "nodeType": "ExpressionStatement", + "src": "327:30:0" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 26, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "375:19:0", + "subExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 23, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8, + "src": "380:4:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$6_storage_ptr", + "typeString": "struct Roles.Role storage pointer" + } + }, + { + "argumentTypes": null, + "id": 24, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10, + "src": "386:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Role_$6_storage_ptr", + "typeString": "struct Roles.Role storage pointer" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 22, + "name": "has", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 92, + "src": "376:3:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_Role_$6_storage_ptr_$_t_address_$returns$_t_bool_$", + "typeString": "function (struct Roles.Role storage pointer,address) view returns (bool)" + } + }, + "id": 25, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "376:18:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 21, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6848, + 6849 + ], + "referencedDeclaration": 6848, + "src": "367:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 27, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "367:28:0", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 28, + "nodeType": "ExpressionStatement", + "src": "367:28:0" + }, + { + "expression": { + "argumentTypes": null, + "id": 35, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 29, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8, + "src": "406:4:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$6_storage_ptr", + "typeString": "struct Roles.Role storage pointer" + } + }, + "id": 32, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "bearer", + "nodeType": "MemberAccess", + "referencedDeclaration": 5, + "src": "406:11:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 33, + "indexExpression": { + "argumentTypes": null, + "id": 31, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10, + "src": "418:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "406:20:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 34, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "429:4:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "src": "406:27:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 36, + "nodeType": "ExpressionStatement", + "src": "406:27:0" + } + ] + }, + "documentation": "@dev give an account access to this role", + "id": 38, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "add", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 11, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8, + "name": "role", + "nodeType": "VariableDeclaration", + "scope": 38, + "src": "272:17:0", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$6_storage_ptr", + "typeString": "struct Roles.Role" + }, + "typeName": { + "contractScope": null, + "id": 7, + "name": "Role", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 6, + "src": "272:4:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$6_storage_ptr", + "typeString": "struct Roles.Role" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 10, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 38, + "src": "291:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 9, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "291:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "271:36:0" + }, + "returnParameters": { + "id": 12, + "nodeType": "ParameterList", + "parameters": [], + "src": "317:0:0" + }, + "scope": 93, + "src": "259:181:0", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 68, + "nodeType": "Block", + "src": "575:123:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 50, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 46, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 42, + "src": "593:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 48, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "612:1:0", + "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": 47, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "604:7:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 49, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "604:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "593:21:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 45, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6848, + 6849 + ], + "referencedDeclaration": 6848, + "src": "585:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 51, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "585:30:0", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 52, + "nodeType": "ExpressionStatement", + "src": "585:30:0" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 55, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 40, + "src": "637:4:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$6_storage_ptr", + "typeString": "struct Roles.Role storage pointer" + } + }, + { + "argumentTypes": null, + "id": 56, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 42, + "src": "643:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Role_$6_storage_ptr", + "typeString": "struct Roles.Role storage pointer" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 54, + "name": "has", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 92, + "src": "633:3:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_Role_$6_storage_ptr_$_t_address_$returns$_t_bool_$", + "typeString": "function (struct Roles.Role storage pointer,address) view returns (bool)" + } + }, + "id": 57, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "633:18:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 53, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6848, + 6849 + ], + "referencedDeclaration": 6848, + "src": "625:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 58, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "625:27:0", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 59, + "nodeType": "ExpressionStatement", + "src": "625:27:0" + }, + { + "expression": { + "argumentTypes": null, + "id": 66, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 60, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 40, + "src": "663:4:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$6_storage_ptr", + "typeString": "struct Roles.Role storage pointer" + } + }, + "id": 63, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "bearer", + "nodeType": "MemberAccess", + "referencedDeclaration": 5, + "src": "663:11:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 64, + "indexExpression": { + "argumentTypes": null, + "id": 62, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 42, + "src": "675:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "663:20:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "66616c7365", + "id": 65, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "686:5:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "src": "663:28:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 67, + "nodeType": "ExpressionStatement", + "src": "663:28:0" + } + ] + }, + "documentation": "@dev remove an account's access to this role", + "id": 69, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "remove", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 43, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 40, + "name": "role", + "nodeType": "VariableDeclaration", + "scope": 69, + "src": "530:17:0", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$6_storage_ptr", + "typeString": "struct Roles.Role" + }, + "typeName": { + "contractScope": null, + "id": 39, + "name": "Role", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 6, + "src": "530:4:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$6_storage_ptr", + "typeString": "struct Roles.Role" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 42, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 69, + "src": "549:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 41, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "549:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "529:36:0" + }, + "returnParameters": { + "id": 44, + "nodeType": "ParameterList", + "parameters": [], + "src": "575:0:0" + }, + "scope": 93, + "src": "514:184:0", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 91, + "nodeType": "Block", + "src": "864:84:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 83, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 79, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 73, + "src": "882:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 81, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "901:1:0", + "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": 80, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "893:7:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 82, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "893:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "882:21:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 78, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6848, + 6849 + ], + "referencedDeclaration": 6848, + "src": "874:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 84, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "874:30:0", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 85, + "nodeType": "ExpressionStatement", + "src": "874:30:0" + }, + { + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 86, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 71, + "src": "921:4:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$6_storage_ptr", + "typeString": "struct Roles.Role storage pointer" + } + }, + "id": 87, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "bearer", + "nodeType": "MemberAccess", + "referencedDeclaration": 5, + "src": "921:11:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 89, + "indexExpression": { + "argumentTypes": null, + "id": 88, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 73, + "src": "933:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "921:20:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 77, + "id": 90, + "nodeType": "Return", + "src": "914:27:0" + } + ] + }, + "documentation": "@dev check if an account has this role\n@return bool", + "id": 92, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "has", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 74, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 71, + "name": "role", + "nodeType": "VariableDeclaration", + "scope": 92, + "src": "799:17:0", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$6_storage_ptr", + "typeString": "struct Roles.Role" + }, + "typeName": { + "contractScope": null, + "id": 70, + "name": "Role", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 6, + "src": "799:4:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$6_storage_ptr", + "typeString": "struct Roles.Role" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 73, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 92, + "src": "818:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 72, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "818:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "798:36:0" + }, + "returnParameters": { + "id": 77, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 76, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 92, + "src": "858:4:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 75, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "858:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "857:6:0" + }, + "scope": 93, + "src": "786:162:0", + "stateMutability": "view", + "superFunction": null, + "visibility": "internal" + } + ], + "scope": 94, + "src": "108:842:0" + } + ], + "src": "0:951:0" + }, + "compiler": { + "name": "solc", + "version": "0.5.0+commit.1d4f565a.Emscripten.clang" + }, + "networks": {}, + "schemaVersion": "3.0.0", + "updatedAt": "2019-01-04T21:44:02.866Z", + "devdoc": { + "details": "Library for managing addresses assigned to a Role.", + "methods": {}, + "title": "Roles" + }, + "userdoc": { + "methods": {} + } +} \ No newline at end of file diff --git a/node_modules/openzeppelin-solidity/build/contracts/SafeERC20.json b/node_modules/openzeppelin-solidity/build/contracts/SafeERC20.json new file mode 100644 index 0000000..5ac1b14 --- /dev/null +++ b/node_modules/openzeppelin-solidity/build/contracts/SafeERC20.json @@ -0,0 +1,4099 @@ +{ + "contractName": "SafeERC20", + "abi": [], + "bytecode": "0x604c602c600b82828239805160001a60731460008114601c57601e565bfe5b5030600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea165627a7a72305820247c54e3eecfe31f0d5c80431e10df630fa39a67ed633763dca75fccf275159c0029", + "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea165627a7a72305820247c54e3eecfe31f0d5c80431e10df630fa39a67ed633763dca75fccf275159c0029", + "sourceMap": "352:1245:48:-;;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", + "deployedSourceMap": "352:1245:48:-;;;;;;;;", + "source": "pragma solidity ^0.5.0;\n\nimport \"./IERC20.sol\";\nimport \"../../math/SafeMath.sol\";\n\n/**\n * @title SafeERC20\n * @dev Wrappers around ERC20 operations that throw on failure.\n * To use this library you can add a `using SafeERC20 for ERC20;` statement to your contract,\n * which allows you to call the safe operations as `token.safeTransfer(...)`, etc.\n */\nlibrary SafeERC20 {\n using SafeMath for uint256;\n\n function safeTransfer(IERC20 token, address to, uint256 value) internal {\n require(token.transfer(to, value));\n }\n\n function safeTransferFrom(IERC20 token, address from, address to, uint256 value) internal {\n require(token.transferFrom(from, to, value));\n }\n\n function safeApprove(IERC20 token, address spender, uint256 value) internal {\n // safeApprove should only be called when setting an initial allowance,\n // or when resetting it to zero. To increase and decrease it, use\n // 'safeIncreaseAllowance' and 'safeDecreaseAllowance'\n require((value == 0) || (token.allowance(msg.sender, spender) == 0));\n require(token.approve(spender, value));\n }\n\n function safeIncreaseAllowance(IERC20 token, address spender, uint256 value) internal {\n uint256 newAllowance = token.allowance(address(this), spender).add(value);\n require(token.approve(spender, newAllowance));\n }\n\n function safeDecreaseAllowance(IERC20 token, address spender, uint256 value) internal {\n uint256 newAllowance = token.allowance(address(this), spender).sub(value);\n require(token.approve(spender, newAllowance));\n }\n}\n", + "sourcePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol", + "ast": { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol", + "exportedSymbols": { + "SafeERC20": [ + 5196 + ] + }, + "id": 5197, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 5054, + "literals": [ + "solidity", + "^", + "0.5", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "0:23:48" + }, + { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/token/ERC20/IERC20.sol", + "file": "./IERC20.sol", + "id": 5055, + "nodeType": "ImportDirective", + "scope": 5197, + "sourceUnit": 5053, + "src": "25:22:48", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/math/SafeMath.sol", + "file": "../../math/SafeMath.sol", + "id": 5056, + "nodeType": "ImportDirective", + "scope": 5197, + "sourceUnit": 3483, + "src": "48:33:48", + "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": 5196, + "linearizedBaseContracts": [ + 5196 + ], + "name": "SafeERC20", + "nodeType": "ContractDefinition", + "nodes": [ + { + "id": 5059, + "libraryName": { + "contractScope": null, + "id": 5057, + "name": "SafeMath", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 3482, + "src": "382:8:48", + "typeDescriptions": { + "typeIdentifier": "t_contract$_SafeMath_$3482", + "typeString": "library SafeMath" + } + }, + "nodeType": "UsingForDirective", + "src": "376:27:48", + "typeName": { + "id": 5058, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "395:7:48", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + { + "body": { + "id": 5076, + "nodeType": "Block", + "src": "481:51:48", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 5071, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5063, + "src": "514:2:48", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 5072, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5065, + "src": "518:5:48", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 5069, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5061, + "src": "499:5:48", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$5052", + "typeString": "contract IERC20" + } + }, + "id": 5070, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "transfer", + "nodeType": "MemberAccess", + "referencedDeclaration": 4994, + "src": "499:14:48", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,uint256) external returns (bool)" + } + }, + "id": 5073, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "499:25:48", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 5068, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6848, + 6849 + ], + "referencedDeclaration": 6848, + "src": "491:7:48", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 5074, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "491:34:48", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5075, + "nodeType": "ExpressionStatement", + "src": "491:34:48" + } + ] + }, + "documentation": null, + "id": 5077, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "safeTransfer", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5066, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5061, + "name": "token", + "nodeType": "VariableDeclaration", + "scope": 5077, + "src": "431:12:48", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$5052", + "typeString": "contract IERC20" + }, + "typeName": { + "contractScope": null, + "id": 5060, + "name": "IERC20", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 5052, + "src": "431:6:48", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$5052", + "typeString": "contract IERC20" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5063, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 5077, + "src": "445:10:48", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5062, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "445:7:48", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5065, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 5077, + "src": "457:13:48", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5064, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "457:7:48", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "430:41:48" + }, + "returnParameters": { + "id": 5067, + "nodeType": "ParameterList", + "parameters": [], + "src": "481:0:48" + }, + "scope": 5196, + "src": "409:123:48", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 5097, + "nodeType": "Block", + "src": "628:61:48", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 5091, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5081, + "src": "665:4:48", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 5092, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5083, + "src": "671:2:48", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 5093, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5085, + "src": "675:5:48", + "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": 5089, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5079, + "src": "646:5:48", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$5052", + "typeString": "contract IERC20" + } + }, + "id": 5090, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "transferFrom", + "nodeType": "MemberAccess", + "referencedDeclaration": 5014, + "src": "646:18:48", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,address,uint256) external returns (bool)" + } + }, + "id": 5094, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "646:35:48", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 5088, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6848, + 6849 + ], + "referencedDeclaration": 6848, + "src": "638:7:48", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 5095, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "638:44:48", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5096, + "nodeType": "ExpressionStatement", + "src": "638:44:48" + } + ] + }, + "documentation": null, + "id": 5098, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "safeTransferFrom", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5086, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5079, + "name": "token", + "nodeType": "VariableDeclaration", + "scope": 5098, + "src": "564:12:48", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$5052", + "typeString": "contract IERC20" + }, + "typeName": { + "contractScope": null, + "id": 5078, + "name": "IERC20", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 5052, + "src": "564:6:48", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$5052", + "typeString": "contract IERC20" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5081, + "name": "from", + "nodeType": "VariableDeclaration", + "scope": 5098, + "src": "578:12:48", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5080, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "578:7:48", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5083, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 5098, + "src": "592:10:48", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5082, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "592:7:48", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5085, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 5098, + "src": "604:13:48", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5084, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "604:7:48", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "563:55:48" + }, + "returnParameters": { + "id": 5087, + "nodeType": "ParameterList", + "parameters": [], + "src": "628:0:48" + }, + "scope": 5196, + "src": "538:151:48", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 5132, + "nodeType": "Block", + "src": "771:350:48", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 5121, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 5110, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 5108, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5104, + "src": "1007:5:48", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 5109, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1016:1:48", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "1007:10:48", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "id": 5111, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "1006:12:48", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 5119, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 5114, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6845, + "src": "1039:3:48", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 5115, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "1039:10:48", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 5116, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5102, + "src": "1051:7:48", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 5112, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5100, + "src": "1023:5:48", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$5052", + "typeString": "contract IERC20" + } + }, + "id": 5113, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "allowance", + "nodeType": "MemberAccess", + "referencedDeclaration": 5035, + "src": "1023:15:48", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$", + "typeString": "function (address,address) view external returns (uint256)" + } + }, + "id": 5117, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1023:36:48", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 5118, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1063:1:48", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "1023:41:48", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "id": 5120, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "1022:43:48", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "1006:59:48", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 5107, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6848, + 6849 + ], + "referencedDeclaration": 6848, + "src": "998:7:48", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 5122, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "998:68:48", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5123, + "nodeType": "ExpressionStatement", + "src": "998:68:48" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 5127, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5102, + "src": "1098:7:48", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 5128, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5104, + "src": "1107:5:48", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 5125, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5100, + "src": "1084:5:48", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$5052", + "typeString": "contract IERC20" + } + }, + "id": 5126, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "approve", + "nodeType": "MemberAccess", + "referencedDeclaration": 5003, + "src": "1084:13:48", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,uint256) external returns (bool)" + } + }, + "id": 5129, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1084:29:48", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 5124, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6848, + 6849 + ], + "referencedDeclaration": 6848, + "src": "1076:7:48", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 5130, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1076:38:48", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5131, + "nodeType": "ExpressionStatement", + "src": "1076:38:48" + } + ] + }, + "documentation": null, + "id": 5133, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "safeApprove", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5105, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5100, + "name": "token", + "nodeType": "VariableDeclaration", + "scope": 5133, + "src": "716:12:48", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$5052", + "typeString": "contract IERC20" + }, + "typeName": { + "contractScope": null, + "id": 5099, + "name": "IERC20", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 5052, + "src": "716:6:48", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$5052", + "typeString": "contract IERC20" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5102, + "name": "spender", + "nodeType": "VariableDeclaration", + "scope": 5133, + "src": "730:15:48", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5101, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "730:7:48", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5104, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 5133, + "src": "747:13:48", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5103, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "747:7:48", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "715:46:48" + }, + "returnParameters": { + "id": 5106, + "nodeType": "ParameterList", + "parameters": [], + "src": "771:0:48" + }, + "scope": 5196, + "src": "695:426:48", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 5163, + "nodeType": "Block", + "src": "1213:145:48", + "statements": [ + { + "assignments": [ + 5143 + ], + "declarations": [ + { + "constant": false, + "id": 5143, + "name": "newAllowance", + "nodeType": "VariableDeclaration", + "scope": 5163, + "src": "1223:20:48", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5142, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1223:7:48", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 5154, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 5152, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5139, + "src": "1290:5:48", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 5147, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6876, + "src": "1270:4:48", + "typeDescriptions": { + "typeIdentifier": "t_contract$_SafeERC20_$5196", + "typeString": "library SafeERC20" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_SafeERC20_$5196", + "typeString": "library SafeERC20" + } + ], + "id": 5146, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "1262:7:48", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 5148, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1262:13:48", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 5149, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5137, + "src": "1277:7:48", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 5144, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5135, + "src": "1246:5:48", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$5052", + "typeString": "contract IERC20" + } + }, + "id": 5145, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "allowance", + "nodeType": "MemberAccess", + "referencedDeclaration": 5035, + "src": "1246:15:48", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$", + "typeString": "function (address,address) view external returns (uint256)" + } + }, + "id": 5150, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1246:39:48", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 5151, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 3461, + "src": "1246:43:48", + "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": 5153, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1246:50:48", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "1223:73:48" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 5158, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5137, + "src": "1328:7:48", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 5159, + "name": "newAllowance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5143, + "src": "1337:12:48", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 5156, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5135, + "src": "1314:5:48", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$5052", + "typeString": "contract IERC20" + } + }, + "id": 5157, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "approve", + "nodeType": "MemberAccess", + "referencedDeclaration": 5003, + "src": "1314:13:48", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,uint256) external returns (bool)" + } + }, + "id": 5160, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1314:36:48", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 5155, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6848, + 6849 + ], + "referencedDeclaration": 6848, + "src": "1306:7:48", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 5161, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1306:45:48", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5162, + "nodeType": "ExpressionStatement", + "src": "1306:45:48" + } + ] + }, + "documentation": null, + "id": 5164, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "safeIncreaseAllowance", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5140, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5135, + "name": "token", + "nodeType": "VariableDeclaration", + "scope": 5164, + "src": "1158:12:48", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$5052", + "typeString": "contract IERC20" + }, + "typeName": { + "contractScope": null, + "id": 5134, + "name": "IERC20", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 5052, + "src": "1158:6:48", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$5052", + "typeString": "contract IERC20" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5137, + "name": "spender", + "nodeType": "VariableDeclaration", + "scope": 5164, + "src": "1172:15:48", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5136, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1172:7:48", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5139, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 5164, + "src": "1189:13:48", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5138, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1189:7:48", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1157:46:48" + }, + "returnParameters": { + "id": 5141, + "nodeType": "ParameterList", + "parameters": [], + "src": "1213:0:48" + }, + "scope": 5196, + "src": "1127:231:48", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 5194, + "nodeType": "Block", + "src": "1450:145:48", + "statements": [ + { + "assignments": [ + 5174 + ], + "declarations": [ + { + "constant": false, + "id": 5174, + "name": "newAllowance", + "nodeType": "VariableDeclaration", + "scope": 5194, + "src": "1460:20:48", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5173, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1460:7:48", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 5185, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 5183, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5170, + "src": "1527:5:48", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 5178, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6876, + "src": "1507:4:48", + "typeDescriptions": { + "typeIdentifier": "t_contract$_SafeERC20_$5196", + "typeString": "library SafeERC20" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_SafeERC20_$5196", + "typeString": "library SafeERC20" + } + ], + "id": 5177, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "1499:7:48", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 5179, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1499:13:48", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 5180, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5168, + "src": "1514:7:48", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 5175, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5166, + "src": "1483:5:48", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$5052", + "typeString": "contract IERC20" + } + }, + "id": 5176, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "allowance", + "nodeType": "MemberAccess", + "referencedDeclaration": 5035, + "src": "1483:15:48", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$", + "typeString": "function (address,address) view external returns (uint256)" + } + }, + "id": 5181, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1483:39:48", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 5182, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sub", + "nodeType": "MemberAccess", + "referencedDeclaration": 3437, + "src": "1483:43:48", + "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": 5184, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1483:50:48", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "1460:73:48" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 5189, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5168, + "src": "1565:7:48", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 5190, + "name": "newAllowance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5174, + "src": "1574:12:48", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 5187, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5166, + "src": "1551:5:48", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$5052", + "typeString": "contract IERC20" + } + }, + "id": 5188, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "approve", + "nodeType": "MemberAccess", + "referencedDeclaration": 5003, + "src": "1551:13:48", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,uint256) external returns (bool)" + } + }, + "id": 5191, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1551:36:48", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 5186, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6848, + 6849 + ], + "referencedDeclaration": 6848, + "src": "1543:7:48", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 5192, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1543:45:48", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5193, + "nodeType": "ExpressionStatement", + "src": "1543:45:48" + } + ] + }, + "documentation": null, + "id": 5195, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "safeDecreaseAllowance", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5171, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5166, + "name": "token", + "nodeType": "VariableDeclaration", + "scope": 5195, + "src": "1395:12:48", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$5052", + "typeString": "contract IERC20" + }, + "typeName": { + "contractScope": null, + "id": 5165, + "name": "IERC20", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 5052, + "src": "1395:6:48", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$5052", + "typeString": "contract IERC20" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5168, + "name": "spender", + "nodeType": "VariableDeclaration", + "scope": 5195, + "src": "1409:15:48", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5167, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1409:7:48", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5170, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 5195, + "src": "1426:13:48", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5169, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1426:7:48", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1394:46:48" + }, + "returnParameters": { + "id": 5172, + "nodeType": "ParameterList", + "parameters": [], + "src": "1450:0:48" + }, + "scope": 5196, + "src": "1364:231:48", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + } + ], + "scope": 5197, + "src": "352:1245:48" + } + ], + "src": "0:1598:48" + }, + "legacyAST": { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol", + "exportedSymbols": { + "SafeERC20": [ + 5196 + ] + }, + "id": 5197, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 5054, + "literals": [ + "solidity", + "^", + "0.5", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "0:23:48" + }, + { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/token/ERC20/IERC20.sol", + "file": "./IERC20.sol", + "id": 5055, + "nodeType": "ImportDirective", + "scope": 5197, + "sourceUnit": 5053, + "src": "25:22:48", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/math/SafeMath.sol", + "file": "../../math/SafeMath.sol", + "id": 5056, + "nodeType": "ImportDirective", + "scope": 5197, + "sourceUnit": 3483, + "src": "48:33:48", + "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": 5196, + "linearizedBaseContracts": [ + 5196 + ], + "name": "SafeERC20", + "nodeType": "ContractDefinition", + "nodes": [ + { + "id": 5059, + "libraryName": { + "contractScope": null, + "id": 5057, + "name": "SafeMath", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 3482, + "src": "382:8:48", + "typeDescriptions": { + "typeIdentifier": "t_contract$_SafeMath_$3482", + "typeString": "library SafeMath" + } + }, + "nodeType": "UsingForDirective", + "src": "376:27:48", + "typeName": { + "id": 5058, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "395:7:48", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + { + "body": { + "id": 5076, + "nodeType": "Block", + "src": "481:51:48", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 5071, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5063, + "src": "514:2:48", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 5072, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5065, + "src": "518:5:48", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 5069, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5061, + "src": "499:5:48", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$5052", + "typeString": "contract IERC20" + } + }, + "id": 5070, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "transfer", + "nodeType": "MemberAccess", + "referencedDeclaration": 4994, + "src": "499:14:48", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,uint256) external returns (bool)" + } + }, + "id": 5073, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "499:25:48", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 5068, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6848, + 6849 + ], + "referencedDeclaration": 6848, + "src": "491:7:48", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 5074, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "491:34:48", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5075, + "nodeType": "ExpressionStatement", + "src": "491:34:48" + } + ] + }, + "documentation": null, + "id": 5077, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "safeTransfer", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5066, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5061, + "name": "token", + "nodeType": "VariableDeclaration", + "scope": 5077, + "src": "431:12:48", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$5052", + "typeString": "contract IERC20" + }, + "typeName": { + "contractScope": null, + "id": 5060, + "name": "IERC20", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 5052, + "src": "431:6:48", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$5052", + "typeString": "contract IERC20" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5063, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 5077, + "src": "445:10:48", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5062, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "445:7:48", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5065, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 5077, + "src": "457:13:48", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5064, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "457:7:48", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "430:41:48" + }, + "returnParameters": { + "id": 5067, + "nodeType": "ParameterList", + "parameters": [], + "src": "481:0:48" + }, + "scope": 5196, + "src": "409:123:48", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 5097, + "nodeType": "Block", + "src": "628:61:48", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 5091, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5081, + "src": "665:4:48", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 5092, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5083, + "src": "671:2:48", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 5093, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5085, + "src": "675:5:48", + "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": 5089, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5079, + "src": "646:5:48", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$5052", + "typeString": "contract IERC20" + } + }, + "id": 5090, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "transferFrom", + "nodeType": "MemberAccess", + "referencedDeclaration": 5014, + "src": "646:18:48", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,address,uint256) external returns (bool)" + } + }, + "id": 5094, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "646:35:48", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 5088, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6848, + 6849 + ], + "referencedDeclaration": 6848, + "src": "638:7:48", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 5095, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "638:44:48", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5096, + "nodeType": "ExpressionStatement", + "src": "638:44:48" + } + ] + }, + "documentation": null, + "id": 5098, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "safeTransferFrom", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5086, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5079, + "name": "token", + "nodeType": "VariableDeclaration", + "scope": 5098, + "src": "564:12:48", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$5052", + "typeString": "contract IERC20" + }, + "typeName": { + "contractScope": null, + "id": 5078, + "name": "IERC20", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 5052, + "src": "564:6:48", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$5052", + "typeString": "contract IERC20" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5081, + "name": "from", + "nodeType": "VariableDeclaration", + "scope": 5098, + "src": "578:12:48", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5080, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "578:7:48", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5083, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 5098, + "src": "592:10:48", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5082, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "592:7:48", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5085, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 5098, + "src": "604:13:48", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5084, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "604:7:48", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "563:55:48" + }, + "returnParameters": { + "id": 5087, + "nodeType": "ParameterList", + "parameters": [], + "src": "628:0:48" + }, + "scope": 5196, + "src": "538:151:48", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 5132, + "nodeType": "Block", + "src": "771:350:48", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 5121, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 5110, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 5108, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5104, + "src": "1007:5:48", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 5109, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1016:1:48", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "1007:10:48", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "id": 5111, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "1006:12:48", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 5119, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 5114, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6845, + "src": "1039:3:48", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 5115, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "1039:10:48", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 5116, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5102, + "src": "1051:7:48", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 5112, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5100, + "src": "1023:5:48", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$5052", + "typeString": "contract IERC20" + } + }, + "id": 5113, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "allowance", + "nodeType": "MemberAccess", + "referencedDeclaration": 5035, + "src": "1023:15:48", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$", + "typeString": "function (address,address) view external returns (uint256)" + } + }, + "id": 5117, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1023:36:48", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 5118, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1063:1:48", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "1023:41:48", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "id": 5120, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "1022:43:48", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "1006:59:48", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 5107, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6848, + 6849 + ], + "referencedDeclaration": 6848, + "src": "998:7:48", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 5122, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "998:68:48", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5123, + "nodeType": "ExpressionStatement", + "src": "998:68:48" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 5127, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5102, + "src": "1098:7:48", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 5128, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5104, + "src": "1107:5:48", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 5125, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5100, + "src": "1084:5:48", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$5052", + "typeString": "contract IERC20" + } + }, + "id": 5126, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "approve", + "nodeType": "MemberAccess", + "referencedDeclaration": 5003, + "src": "1084:13:48", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,uint256) external returns (bool)" + } + }, + "id": 5129, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1084:29:48", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 5124, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6848, + 6849 + ], + "referencedDeclaration": 6848, + "src": "1076:7:48", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 5130, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1076:38:48", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5131, + "nodeType": "ExpressionStatement", + "src": "1076:38:48" + } + ] + }, + "documentation": null, + "id": 5133, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "safeApprove", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5105, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5100, + "name": "token", + "nodeType": "VariableDeclaration", + "scope": 5133, + "src": "716:12:48", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$5052", + "typeString": "contract IERC20" + }, + "typeName": { + "contractScope": null, + "id": 5099, + "name": "IERC20", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 5052, + "src": "716:6:48", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$5052", + "typeString": "contract IERC20" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5102, + "name": "spender", + "nodeType": "VariableDeclaration", + "scope": 5133, + "src": "730:15:48", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5101, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "730:7:48", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5104, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 5133, + "src": "747:13:48", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5103, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "747:7:48", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "715:46:48" + }, + "returnParameters": { + "id": 5106, + "nodeType": "ParameterList", + "parameters": [], + "src": "771:0:48" + }, + "scope": 5196, + "src": "695:426:48", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 5163, + "nodeType": "Block", + "src": "1213:145:48", + "statements": [ + { + "assignments": [ + 5143 + ], + "declarations": [ + { + "constant": false, + "id": 5143, + "name": "newAllowance", + "nodeType": "VariableDeclaration", + "scope": 5163, + "src": "1223:20:48", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5142, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1223:7:48", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 5154, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 5152, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5139, + "src": "1290:5:48", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 5147, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6876, + "src": "1270:4:48", + "typeDescriptions": { + "typeIdentifier": "t_contract$_SafeERC20_$5196", + "typeString": "library SafeERC20" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_SafeERC20_$5196", + "typeString": "library SafeERC20" + } + ], + "id": 5146, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "1262:7:48", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 5148, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1262:13:48", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 5149, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5137, + "src": "1277:7:48", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 5144, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5135, + "src": "1246:5:48", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$5052", + "typeString": "contract IERC20" + } + }, + "id": 5145, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "allowance", + "nodeType": "MemberAccess", + "referencedDeclaration": 5035, + "src": "1246:15:48", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$", + "typeString": "function (address,address) view external returns (uint256)" + } + }, + "id": 5150, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1246:39:48", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 5151, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 3461, + "src": "1246:43:48", + "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": 5153, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1246:50:48", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "1223:73:48" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 5158, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5137, + "src": "1328:7:48", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 5159, + "name": "newAllowance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5143, + "src": "1337:12:48", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 5156, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5135, + "src": "1314:5:48", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$5052", + "typeString": "contract IERC20" + } + }, + "id": 5157, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "approve", + "nodeType": "MemberAccess", + "referencedDeclaration": 5003, + "src": "1314:13:48", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,uint256) external returns (bool)" + } + }, + "id": 5160, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1314:36:48", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 5155, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6848, + 6849 + ], + "referencedDeclaration": 6848, + "src": "1306:7:48", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 5161, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1306:45:48", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5162, + "nodeType": "ExpressionStatement", + "src": "1306:45:48" + } + ] + }, + "documentation": null, + "id": 5164, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "safeIncreaseAllowance", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5140, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5135, + "name": "token", + "nodeType": "VariableDeclaration", + "scope": 5164, + "src": "1158:12:48", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$5052", + "typeString": "contract IERC20" + }, + "typeName": { + "contractScope": null, + "id": 5134, + "name": "IERC20", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 5052, + "src": "1158:6:48", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$5052", + "typeString": "contract IERC20" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5137, + "name": "spender", + "nodeType": "VariableDeclaration", + "scope": 5164, + "src": "1172:15:48", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5136, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1172:7:48", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5139, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 5164, + "src": "1189:13:48", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5138, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1189:7:48", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1157:46:48" + }, + "returnParameters": { + "id": 5141, + "nodeType": "ParameterList", + "parameters": [], + "src": "1213:0:48" + }, + "scope": 5196, + "src": "1127:231:48", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 5194, + "nodeType": "Block", + "src": "1450:145:48", + "statements": [ + { + "assignments": [ + 5174 + ], + "declarations": [ + { + "constant": false, + "id": 5174, + "name": "newAllowance", + "nodeType": "VariableDeclaration", + "scope": 5194, + "src": "1460:20:48", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5173, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1460:7:48", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 5185, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 5183, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5170, + "src": "1527:5:48", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 5178, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6876, + "src": "1507:4:48", + "typeDescriptions": { + "typeIdentifier": "t_contract$_SafeERC20_$5196", + "typeString": "library SafeERC20" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_SafeERC20_$5196", + "typeString": "library SafeERC20" + } + ], + "id": 5177, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "1499:7:48", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 5179, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1499:13:48", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 5180, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5168, + "src": "1514:7:48", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 5175, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5166, + "src": "1483:5:48", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$5052", + "typeString": "contract IERC20" + } + }, + "id": 5176, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "allowance", + "nodeType": "MemberAccess", + "referencedDeclaration": 5035, + "src": "1483:15:48", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$", + "typeString": "function (address,address) view external returns (uint256)" + } + }, + "id": 5181, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1483:39:48", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 5182, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sub", + "nodeType": "MemberAccess", + "referencedDeclaration": 3437, + "src": "1483:43:48", + "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": 5184, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1483:50:48", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "1460:73:48" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 5189, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5168, + "src": "1565:7:48", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 5190, + "name": "newAllowance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5174, + "src": "1574:12:48", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 5187, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5166, + "src": "1551:5:48", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$5052", + "typeString": "contract IERC20" + } + }, + "id": 5188, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "approve", + "nodeType": "MemberAccess", + "referencedDeclaration": 5003, + "src": "1551:13:48", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,uint256) external returns (bool)" + } + }, + "id": 5191, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1551:36:48", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 5186, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6848, + 6849 + ], + "referencedDeclaration": 6848, + "src": "1543:7:48", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 5192, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1543:45:48", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5193, + "nodeType": "ExpressionStatement", + "src": "1543:45:48" + } + ] + }, + "documentation": null, + "id": 5195, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "safeDecreaseAllowance", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5171, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5166, + "name": "token", + "nodeType": "VariableDeclaration", + "scope": 5195, + "src": "1395:12:48", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$5052", + "typeString": "contract IERC20" + }, + "typeName": { + "contractScope": null, + "id": 5165, + "name": "IERC20", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 5052, + "src": "1395:6:48", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$5052", + "typeString": "contract IERC20" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5168, + "name": "spender", + "nodeType": "VariableDeclaration", + "scope": 5195, + "src": "1409:15:48", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5167, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1409:7:48", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5170, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 5195, + "src": "1426:13:48", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5169, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1426:7:48", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1394:46:48" + }, + "returnParameters": { + "id": 5172, + "nodeType": "ParameterList", + "parameters": [], + "src": "1450:0:48" + }, + "scope": 5196, + "src": "1364:231:48", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + } + ], + "scope": 5197, + "src": "352:1245:48" + } + ], + "src": "0:1598:48" + }, + "compiler": { + "name": "solc", + "version": "0.5.0+commit.1d4f565a.Emscripten.clang" + }, + "networks": {}, + "schemaVersion": "3.0.0", + "updatedAt": "2019-01-04T21:44:02.893Z", + "devdoc": { + "details": "Wrappers around ERC20 operations that throw on failure. To use this library you can add a `using SafeERC20 for ERC20;` statement to your contract, which allows you to call the safe operations as `token.safeTransfer(...)`, etc.", + "methods": {}, + "title": "SafeERC20" + }, + "userdoc": { + "methods": {} + } +} \ No newline at end of file diff --git a/node_modules/openzeppelin-solidity/build/contracts/SafeMath.json b/node_modules/openzeppelin-solidity/build/contracts/SafeMath.json new file mode 100644 index 0000000..ca9bfa3 --- /dev/null +++ b/node_modules/openzeppelin-solidity/build/contracts/SafeMath.json @@ -0,0 +1,3287 @@ +{ + "contractName": "SafeMath", + "abi": [], + "bytecode": "0x604c602c600b82828239805160001a60731460008114601c57601e565bfe5b5030600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea165627a7a72305820944628410a077818927155d75ca854a3db5f69a5714d2eaa206eb996c6055a9b0029", + "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea165627a7a72305820944628410a077818927155d75ca854a3db5f69a5714d2eaa206eb996c6055a9b0029", + "sourceMap": "125:1726:33:-;;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", + "deployedSourceMap": "125:1726:33:-;;;;;;;;", + "source": "pragma solidity ^0.5.0;\n\n/**\n * @title SafeMath\n * @dev Unsigned math operations with safety checks that revert on error\n */\nlibrary SafeMath {\n /**\n * @dev Multiplies two unsigned integers, reverts on overflow.\n */\n function mul(uint256 a, uint256 b) internal pure returns (uint256) {\n // Gas optimization: this is cheaper than requiring 'a' not being zero, but the\n // benefit is lost if 'b' is also tested.\n // See: https://github.com/OpenZeppelin/openzeppelin-solidity/pull/522\n if (a == 0) {\n return 0;\n }\n\n uint256 c = a * b;\n require(c / a == b);\n\n return c;\n }\n\n /**\n * @dev Integer division of two unsigned integers truncating the quotient, reverts on division by zero.\n */\n function div(uint256 a, uint256 b) internal pure returns (uint256) {\n // Solidity only automatically asserts when dividing by 0\n require(b > 0);\n uint256 c = a / b;\n // assert(a == b * c + a % b); // There is no case in which this doesn't hold\n\n return c;\n }\n\n /**\n * @dev Subtracts two unsigned integers, reverts on overflow (i.e. if subtrahend is greater than minuend).\n */\n function sub(uint256 a, uint256 b) internal pure returns (uint256) {\n require(b <= a);\n uint256 c = a - b;\n\n return c;\n }\n\n /**\n * @dev Adds two unsigned integers, reverts on overflow.\n */\n function add(uint256 a, uint256 b) internal pure returns (uint256) {\n uint256 c = a + b;\n require(c >= a);\n\n return c;\n }\n\n /**\n * @dev Divides two unsigned integers and returns the remainder (unsigned integer modulo),\n * reverts when dividing by zero.\n */\n function mod(uint256 a, uint256 b) internal pure returns (uint256) {\n require(b != 0);\n return a % b;\n }\n}\n", + "sourcePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/math/SafeMath.sol", + "ast": { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/math/SafeMath.sol", + "exportedSymbols": { + "SafeMath": [ + 3482 + ] + }, + "id": 3483, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 3356, + "literals": [ + "solidity", + "^", + "0.5", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "0:23:33" + }, + { + "baseContracts": [], + "contractDependencies": [], + "contractKind": "library", + "documentation": "@title SafeMath\n@dev Unsigned math operations with safety checks that revert on error", + "fullyImplemented": true, + "id": 3482, + "linearizedBaseContracts": [ + 3482 + ], + "name": "SafeMath", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": { + "id": 3388, + "nodeType": "Block", + "src": "296:354:33", + "statements": [ + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3367, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 3365, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3358, + "src": "527:1:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 3366, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "532:1:33", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "527:6:33", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 3371, + "nodeType": "IfStatement", + "src": "523:45:33", + "trueBody": { + "id": 3370, + "nodeType": "Block", + "src": "535:33:33", + "statements": [ + { + "expression": { + "argumentTypes": null, + "hexValue": "30", + "id": 3368, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "556:1:33", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "functionReturnParameters": 3364, + "id": 3369, + "nodeType": "Return", + "src": "549:8:33" + } + ] + } + }, + { + "assignments": [ + 3373 + ], + "declarations": [ + { + "constant": false, + "id": 3373, + "name": "c", + "nodeType": "VariableDeclaration", + "scope": 3388, + "src": "578:9:33", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3372, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "578:7:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 3377, + "initialValue": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3376, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 3374, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3358, + "src": "590:1:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "argumentTypes": null, + "id": 3375, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3360, + "src": "594:1:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "590:5:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "578:17:33" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3383, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3381, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 3379, + "name": "c", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3373, + "src": "613:1:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "argumentTypes": null, + "id": 3380, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3358, + "src": "617:1:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "613:5:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 3382, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3360, + "src": "622:1:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "613:10:33", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 3378, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6848, + 6849 + ], + "referencedDeclaration": 6848, + "src": "605:7:33", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 3384, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "605:19:33", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3385, + "nodeType": "ExpressionStatement", + "src": "605:19:33" + }, + { + "expression": { + "argumentTypes": null, + "id": 3386, + "name": "c", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3373, + "src": "642:1:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 3364, + "id": 3387, + "nodeType": "Return", + "src": "635:8:33" + } + ] + }, + "documentation": "@dev Multiplies two unsigned integers, reverts on overflow.", + "id": 3389, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "mul", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3361, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3358, + "name": "a", + "nodeType": "VariableDeclaration", + "scope": 3389, + "src": "242:9:33", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3357, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "242:7:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 3360, + "name": "b", + "nodeType": "VariableDeclaration", + "scope": 3389, + "src": "253:9:33", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3359, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "253:7:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "241:22:33" + }, + "returnParameters": { + "id": 3364, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3363, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 3389, + "src": "287:7:33", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3362, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "287:7:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "286:9:33" + }, + "scope": 3482, + "src": "229:421:33", + "stateMutability": "pure", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 3412, + "nodeType": "Block", + "src": "845:229:33", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3401, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 3399, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3393, + "src": "929:1:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 3400, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "933:1:33", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "929:5:33", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 3398, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6848, + 6849 + ], + "referencedDeclaration": 6848, + "src": "921:7:33", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 3402, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "921:14:33", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3403, + "nodeType": "ExpressionStatement", + "src": "921:14:33" + }, + { + "assignments": [ + 3405 + ], + "declarations": [ + { + "constant": false, + "id": 3405, + "name": "c", + "nodeType": "VariableDeclaration", + "scope": 3412, + "src": "945:9:33", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3404, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "945:7:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 3409, + "initialValue": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3408, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 3406, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3391, + "src": "957:1:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "argumentTypes": null, + "id": 3407, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3393, + "src": "961:1:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "957:5:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "945:17:33" + }, + { + "expression": { + "argumentTypes": null, + "id": 3410, + "name": "c", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3405, + "src": "1066:1:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 3397, + "id": 3411, + "nodeType": "Return", + "src": "1059:8:33" + } + ] + }, + "documentation": "@dev Integer division of two unsigned integers truncating the quotient, reverts on division by zero.", + "id": 3413, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "div", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3394, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3391, + "name": "a", + "nodeType": "VariableDeclaration", + "scope": 3413, + "src": "791:9:33", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3390, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "791:7:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 3393, + "name": "b", + "nodeType": "VariableDeclaration", + "scope": 3413, + "src": "802:9:33", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3392, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "802:7:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "790:22:33" + }, + "returnParameters": { + "id": 3397, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3396, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 3413, + "src": "836:7:33", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3395, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "836:7:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "835:9:33" + }, + "scope": 3482, + "src": "778:296:33", + "stateMutability": "pure", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 3436, + "nodeType": "Block", + "src": "1272:78:33", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3425, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 3423, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3417, + "src": "1290:1:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<=", + "rightExpression": { + "argumentTypes": null, + "id": 3424, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3415, + "src": "1295:1:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1290:6:33", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 3422, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6848, + 6849 + ], + "referencedDeclaration": 6848, + "src": "1282:7:33", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 3426, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1282:15:33", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3427, + "nodeType": "ExpressionStatement", + "src": "1282:15:33" + }, + { + "assignments": [ + 3429 + ], + "declarations": [ + { + "constant": false, + "id": 3429, + "name": "c", + "nodeType": "VariableDeclaration", + "scope": 3436, + "src": "1307:9:33", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3428, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1307:7:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 3433, + "initialValue": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3432, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 3430, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3415, + "src": "1319:1:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "argumentTypes": null, + "id": 3431, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3417, + "src": "1323:1:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1319:5:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "1307:17:33" + }, + { + "expression": { + "argumentTypes": null, + "id": 3434, + "name": "c", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3429, + "src": "1342:1:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 3421, + "id": 3435, + "nodeType": "Return", + "src": "1335:8:33" + } + ] + }, + "documentation": "@dev Subtracts two unsigned integers, reverts on overflow (i.e. if subtrahend is greater than minuend).", + "id": 3437, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "sub", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3418, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3415, + "name": "a", + "nodeType": "VariableDeclaration", + "scope": 3437, + "src": "1218:9:33", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3414, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1218:7:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 3417, + "name": "b", + "nodeType": "VariableDeclaration", + "scope": 3437, + "src": "1229:9:33", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3416, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1229:7:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1217:22:33" + }, + "returnParameters": { + "id": 3421, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3420, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 3437, + "src": "1263:7:33", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3419, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1263:7:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1262:9:33" + }, + "scope": 3482, + "src": "1205:145:33", + "stateMutability": "pure", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 3460, + "nodeType": "Block", + "src": "1498:78:33", + "statements": [ + { + "assignments": [ + 3447 + ], + "declarations": [ + { + "constant": false, + "id": 3447, + "name": "c", + "nodeType": "VariableDeclaration", + "scope": 3460, + "src": "1508:9:33", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3446, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1508:7:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 3451, + "initialValue": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3450, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 3448, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3439, + "src": "1520:1:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "argumentTypes": null, + "id": 3449, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3441, + "src": "1524:1:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1520:5:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "1508:17:33" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3455, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 3453, + "name": "c", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3447, + "src": "1543:1:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "argumentTypes": null, + "id": 3454, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3439, + "src": "1548:1:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1543:6:33", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 3452, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6848, + 6849 + ], + "referencedDeclaration": 6848, + "src": "1535:7:33", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 3456, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1535:15:33", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3457, + "nodeType": "ExpressionStatement", + "src": "1535:15:33" + }, + { + "expression": { + "argumentTypes": null, + "id": 3458, + "name": "c", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3447, + "src": "1568:1:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 3445, + "id": 3459, + "nodeType": "Return", + "src": "1561:8:33" + } + ] + }, + "documentation": "@dev Adds two unsigned integers, reverts on overflow.", + "id": 3461, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "add", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3442, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3439, + "name": "a", + "nodeType": "VariableDeclaration", + "scope": 3461, + "src": "1444:9:33", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3438, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1444:7:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 3441, + "name": "b", + "nodeType": "VariableDeclaration", + "scope": 3461, + "src": "1455:9:33", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3440, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1455:7:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1443:22:33" + }, + "returnParameters": { + "id": 3445, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3444, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 3461, + "src": "1489:7:33", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3443, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1489:7:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1488:9:33" + }, + "scope": 3482, + "src": "1431:145:33", + "stateMutability": "pure", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 3480, + "nodeType": "Block", + "src": "1795:54:33", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3473, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 3471, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3465, + "src": "1813:1:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 3472, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1818:1:33", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "1813:6:33", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 3470, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6848, + 6849 + ], + "referencedDeclaration": 6848, + "src": "1805:7:33", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 3474, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1805:15:33", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3475, + "nodeType": "ExpressionStatement", + "src": "1805:15:33" + }, + { + "expression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3478, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 3476, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3463, + "src": "1837:1:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "%", + "rightExpression": { + "argumentTypes": null, + "id": 3477, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3465, + "src": "1841:1:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1837:5:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 3469, + "id": 3479, + "nodeType": "Return", + "src": "1830:12:33" + } + ] + }, + "documentation": "@dev Divides two unsigned integers and returns the remainder (unsigned integer modulo),\nreverts when dividing by zero.", + "id": 3481, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "mod", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3466, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3463, + "name": "a", + "nodeType": "VariableDeclaration", + "scope": 3481, + "src": "1741:9:33", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3462, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1741:7:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 3465, + "name": "b", + "nodeType": "VariableDeclaration", + "scope": 3481, + "src": "1752:9:33", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3464, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1752:7:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1740:22:33" + }, + "returnParameters": { + "id": 3469, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3468, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 3481, + "src": "1786:7:33", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3467, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1786:7:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1785:9:33" + }, + "scope": 3482, + "src": "1728:121:33", + "stateMutability": "pure", + "superFunction": null, + "visibility": "internal" + } + ], + "scope": 3483, + "src": "125:1726:33" + } + ], + "src": "0:1852:33" + }, + "legacyAST": { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/math/SafeMath.sol", + "exportedSymbols": { + "SafeMath": [ + 3482 + ] + }, + "id": 3483, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 3356, + "literals": [ + "solidity", + "^", + "0.5", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "0:23:33" + }, + { + "baseContracts": [], + "contractDependencies": [], + "contractKind": "library", + "documentation": "@title SafeMath\n@dev Unsigned math operations with safety checks that revert on error", + "fullyImplemented": true, + "id": 3482, + "linearizedBaseContracts": [ + 3482 + ], + "name": "SafeMath", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": { + "id": 3388, + "nodeType": "Block", + "src": "296:354:33", + "statements": [ + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3367, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 3365, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3358, + "src": "527:1:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 3366, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "532:1:33", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "527:6:33", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 3371, + "nodeType": "IfStatement", + "src": "523:45:33", + "trueBody": { + "id": 3370, + "nodeType": "Block", + "src": "535:33:33", + "statements": [ + { + "expression": { + "argumentTypes": null, + "hexValue": "30", + "id": 3368, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "556:1:33", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "functionReturnParameters": 3364, + "id": 3369, + "nodeType": "Return", + "src": "549:8:33" + } + ] + } + }, + { + "assignments": [ + 3373 + ], + "declarations": [ + { + "constant": false, + "id": 3373, + "name": "c", + "nodeType": "VariableDeclaration", + "scope": 3388, + "src": "578:9:33", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3372, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "578:7:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 3377, + "initialValue": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3376, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 3374, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3358, + "src": "590:1:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "argumentTypes": null, + "id": 3375, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3360, + "src": "594:1:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "590:5:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "578:17:33" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3383, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3381, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 3379, + "name": "c", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3373, + "src": "613:1:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "argumentTypes": null, + "id": 3380, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3358, + "src": "617:1:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "613:5:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 3382, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3360, + "src": "622:1:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "613:10:33", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 3378, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6848, + 6849 + ], + "referencedDeclaration": 6848, + "src": "605:7:33", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 3384, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "605:19:33", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3385, + "nodeType": "ExpressionStatement", + "src": "605:19:33" + }, + { + "expression": { + "argumentTypes": null, + "id": 3386, + "name": "c", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3373, + "src": "642:1:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 3364, + "id": 3387, + "nodeType": "Return", + "src": "635:8:33" + } + ] + }, + "documentation": "@dev Multiplies two unsigned integers, reverts on overflow.", + "id": 3389, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "mul", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3361, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3358, + "name": "a", + "nodeType": "VariableDeclaration", + "scope": 3389, + "src": "242:9:33", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3357, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "242:7:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 3360, + "name": "b", + "nodeType": "VariableDeclaration", + "scope": 3389, + "src": "253:9:33", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3359, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "253:7:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "241:22:33" + }, + "returnParameters": { + "id": 3364, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3363, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 3389, + "src": "287:7:33", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3362, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "287:7:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "286:9:33" + }, + "scope": 3482, + "src": "229:421:33", + "stateMutability": "pure", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 3412, + "nodeType": "Block", + "src": "845:229:33", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3401, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 3399, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3393, + "src": "929:1:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 3400, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "933:1:33", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "929:5:33", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 3398, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6848, + 6849 + ], + "referencedDeclaration": 6848, + "src": "921:7:33", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 3402, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "921:14:33", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3403, + "nodeType": "ExpressionStatement", + "src": "921:14:33" + }, + { + "assignments": [ + 3405 + ], + "declarations": [ + { + "constant": false, + "id": 3405, + "name": "c", + "nodeType": "VariableDeclaration", + "scope": 3412, + "src": "945:9:33", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3404, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "945:7:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 3409, + "initialValue": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3408, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 3406, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3391, + "src": "957:1:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "argumentTypes": null, + "id": 3407, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3393, + "src": "961:1:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "957:5:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "945:17:33" + }, + { + "expression": { + "argumentTypes": null, + "id": 3410, + "name": "c", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3405, + "src": "1066:1:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 3397, + "id": 3411, + "nodeType": "Return", + "src": "1059:8:33" + } + ] + }, + "documentation": "@dev Integer division of two unsigned integers truncating the quotient, reverts on division by zero.", + "id": 3413, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "div", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3394, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3391, + "name": "a", + "nodeType": "VariableDeclaration", + "scope": 3413, + "src": "791:9:33", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3390, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "791:7:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 3393, + "name": "b", + "nodeType": "VariableDeclaration", + "scope": 3413, + "src": "802:9:33", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3392, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "802:7:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "790:22:33" + }, + "returnParameters": { + "id": 3397, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3396, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 3413, + "src": "836:7:33", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3395, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "836:7:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "835:9:33" + }, + "scope": 3482, + "src": "778:296:33", + "stateMutability": "pure", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 3436, + "nodeType": "Block", + "src": "1272:78:33", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3425, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 3423, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3417, + "src": "1290:1:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<=", + "rightExpression": { + "argumentTypes": null, + "id": 3424, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3415, + "src": "1295:1:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1290:6:33", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 3422, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6848, + 6849 + ], + "referencedDeclaration": 6848, + "src": "1282:7:33", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 3426, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1282:15:33", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3427, + "nodeType": "ExpressionStatement", + "src": "1282:15:33" + }, + { + "assignments": [ + 3429 + ], + "declarations": [ + { + "constant": false, + "id": 3429, + "name": "c", + "nodeType": "VariableDeclaration", + "scope": 3436, + "src": "1307:9:33", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3428, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1307:7:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 3433, + "initialValue": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3432, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 3430, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3415, + "src": "1319:1:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "argumentTypes": null, + "id": 3431, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3417, + "src": "1323:1:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1319:5:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "1307:17:33" + }, + { + "expression": { + "argumentTypes": null, + "id": 3434, + "name": "c", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3429, + "src": "1342:1:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 3421, + "id": 3435, + "nodeType": "Return", + "src": "1335:8:33" + } + ] + }, + "documentation": "@dev Subtracts two unsigned integers, reverts on overflow (i.e. if subtrahend is greater than minuend).", + "id": 3437, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "sub", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3418, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3415, + "name": "a", + "nodeType": "VariableDeclaration", + "scope": 3437, + "src": "1218:9:33", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3414, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1218:7:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 3417, + "name": "b", + "nodeType": "VariableDeclaration", + "scope": 3437, + "src": "1229:9:33", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3416, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1229:7:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1217:22:33" + }, + "returnParameters": { + "id": 3421, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3420, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 3437, + "src": "1263:7:33", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3419, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1263:7:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1262:9:33" + }, + "scope": 3482, + "src": "1205:145:33", + "stateMutability": "pure", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 3460, + "nodeType": "Block", + "src": "1498:78:33", + "statements": [ + { + "assignments": [ + 3447 + ], + "declarations": [ + { + "constant": false, + "id": 3447, + "name": "c", + "nodeType": "VariableDeclaration", + "scope": 3460, + "src": "1508:9:33", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3446, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1508:7:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 3451, + "initialValue": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3450, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 3448, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3439, + "src": "1520:1:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "argumentTypes": null, + "id": 3449, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3441, + "src": "1524:1:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1520:5:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "1508:17:33" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3455, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 3453, + "name": "c", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3447, + "src": "1543:1:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "argumentTypes": null, + "id": 3454, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3439, + "src": "1548:1:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1543:6:33", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 3452, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6848, + 6849 + ], + "referencedDeclaration": 6848, + "src": "1535:7:33", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 3456, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1535:15:33", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3457, + "nodeType": "ExpressionStatement", + "src": "1535:15:33" + }, + { + "expression": { + "argumentTypes": null, + "id": 3458, + "name": "c", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3447, + "src": "1568:1:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 3445, + "id": 3459, + "nodeType": "Return", + "src": "1561:8:33" + } + ] + }, + "documentation": "@dev Adds two unsigned integers, reverts on overflow.", + "id": 3461, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "add", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3442, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3439, + "name": "a", + "nodeType": "VariableDeclaration", + "scope": 3461, + "src": "1444:9:33", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3438, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1444:7:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 3441, + "name": "b", + "nodeType": "VariableDeclaration", + "scope": 3461, + "src": "1455:9:33", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3440, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1455:7:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1443:22:33" + }, + "returnParameters": { + "id": 3445, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3444, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 3461, + "src": "1489:7:33", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3443, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1489:7:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1488:9:33" + }, + "scope": 3482, + "src": "1431:145:33", + "stateMutability": "pure", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 3480, + "nodeType": "Block", + "src": "1795:54:33", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3473, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 3471, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3465, + "src": "1813:1:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 3472, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1818:1:33", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "1813:6:33", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 3470, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6848, + 6849 + ], + "referencedDeclaration": 6848, + "src": "1805:7:33", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 3474, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1805:15:33", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3475, + "nodeType": "ExpressionStatement", + "src": "1805:15:33" + }, + { + "expression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3478, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 3476, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3463, + "src": "1837:1:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "%", + "rightExpression": { + "argumentTypes": null, + "id": 3477, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3465, + "src": "1841:1:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1837:5:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 3469, + "id": 3479, + "nodeType": "Return", + "src": "1830:12:33" + } + ] + }, + "documentation": "@dev Divides two unsigned integers and returns the remainder (unsigned integer modulo),\nreverts when dividing by zero.", + "id": 3481, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "mod", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3466, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3463, + "name": "a", + "nodeType": "VariableDeclaration", + "scope": 3481, + "src": "1741:9:33", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3462, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1741:7:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 3465, + "name": "b", + "nodeType": "VariableDeclaration", + "scope": 3481, + "src": "1752:9:33", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3464, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1752:7:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1740:22:33" + }, + "returnParameters": { + "id": 3469, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3468, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 3481, + "src": "1786:7:33", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3467, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1786:7:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1785:9:33" + }, + "scope": 3482, + "src": "1728:121:33", + "stateMutability": "pure", + "superFunction": null, + "visibility": "internal" + } + ], + "scope": 3483, + "src": "125:1726:33" + } + ], + "src": "0:1852:33" + }, + "compiler": { + "name": "solc", + "version": "0.5.0+commit.1d4f565a.Emscripten.clang" + }, + "networks": {}, + "schemaVersion": "3.0.0", + "updatedAt": "2019-01-04T21:44:02.886Z", + "devdoc": { + "details": "Unsigned math operations with safety checks that revert on error", + "methods": {}, + "title": "SafeMath" + }, + "userdoc": { + "methods": {} + } +} \ No newline at end of file diff --git a/node_modules/openzeppelin-solidity/build/contracts/Secondary.json b/node_modules/openzeppelin-solidity/build/contracts/Secondary.json new file mode 100644 index 0000000..9d9b388 --- /dev/null +++ b/node_modules/openzeppelin-solidity/build/contracts/Secondary.json @@ -0,0 +1,1653 @@ +{ + "contractName": "Secondary", + "abi": [ + { + "inputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "name": "recipient", + "type": "address" + } + ], + "name": "PrimaryTransferred", + "type": "event" + }, + { + "constant": true, + "inputs": [], + "name": "primary", + "outputs": [ + { + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "recipient", + "type": "address" + } + ], + "name": "transferPrimary", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "sourceMap": "", + "deployedSourceMap": "", + "source": "pragma solidity ^0.5.0;\n\n/**\n * @title Secondary\n * @dev A Secondary contract can only be used by its primary account (the one that created it)\n */\ncontract Secondary {\n address private _primary;\n\n event PrimaryTransferred(\n address recipient\n );\n\n /**\n * @dev Sets the primary account to the one that is creating the Secondary contract.\n */\n constructor () internal {\n _primary = msg.sender;\n emit PrimaryTransferred(_primary);\n }\n\n /**\n * @dev Reverts if called from any account other than the primary.\n */\n modifier onlyPrimary() {\n require(msg.sender == _primary);\n _;\n }\n\n /**\n * @return the address of the primary.\n */\n function primary() public view returns (address) {\n return _primary;\n }\n\n /**\n * @dev Transfers contract to a new primary.\n * @param recipient The address of new primary.\n */\n function transferPrimary(address recipient) public onlyPrimary {\n require(recipient != address(0));\n _primary = recipient;\n emit PrimaryTransferred(_primary);\n }\n}\n", + "sourcePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/ownership/Secondary.sol", + "ast": { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/ownership/Secondary.sol", + "exportedSymbols": { + "Secondary": [ + 3656 + ] + }, + "id": 3657, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 3593, + "literals": [ + "solidity", + "^", + "0.5", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "0:23:35" + }, + { + "baseContracts": [], + "contractDependencies": [], + "contractKind": "contract", + "documentation": "@title Secondary\n@dev A Secondary contract can only be used by its primary account (the one that created it)", + "fullyImplemented": true, + "id": 3656, + "linearizedBaseContracts": [ + 3656 + ], + "name": "Secondary", + "nodeType": "ContractDefinition", + "nodes": [ + { + "constant": false, + "id": 3595, + "name": "_primary", + "nodeType": "VariableDeclaration", + "scope": 3656, + "src": "173:24:35", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3594, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "173:7:35", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "private" + }, + { + "anonymous": false, + "documentation": null, + "id": 3599, + "name": "PrimaryTransferred", + "nodeType": "EventDefinition", + "parameters": { + "id": 3598, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3597, + "indexed": false, + "name": "recipient", + "nodeType": "VariableDeclaration", + "scope": 3599, + "src": "238:17:35", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3596, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "238:7:35", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "228:33:35" + }, + "src": "204:58:35" + }, + { + "body": { + "id": 3611, + "nodeType": "Block", + "src": "397:81:35", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 3605, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 3602, + "name": "_primary", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3595, + "src": "407:8:35", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 3603, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6845, + "src": "418:3:35", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 3604, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "418:10:35", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "407:21:35", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 3606, + "nodeType": "ExpressionStatement", + "src": "407:21:35" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 3608, + "name": "_primary", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3595, + "src": "462:8:35", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 3607, + "name": "PrimaryTransferred", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3599, + "src": "443:18:35", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 3609, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "443:28:35", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3610, + "nodeType": "EmitStatement", + "src": "438:33:35" + } + ] + }, + "documentation": "@dev Sets the primary account to the one that is creating the Secondary contract.", + "id": 3612, + "implemented": true, + "kind": "constructor", + "modifiers": [], + "name": "", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3600, + "nodeType": "ParameterList", + "parameters": [], + "src": "385:2:35" + }, + "returnParameters": { + "id": 3601, + "nodeType": "ParameterList", + "parameters": [], + "src": "397:0:35" + }, + "scope": 3656, + "src": "373:105:35", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 3622, + "nodeType": "Block", + "src": "594:59:35", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 3618, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 3615, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6845, + "src": "612:3:35", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 3616, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "612:10:35", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 3617, + "name": "_primary", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3595, + "src": "626:8:35", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "612:22:35", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 3614, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6848, + 6849 + ], + "referencedDeclaration": 6848, + "src": "604:7:35", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 3619, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "604:31:35", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3620, + "nodeType": "ExpressionStatement", + "src": "604:31:35" + }, + { + "id": 3621, + "nodeType": "PlaceholderStatement", + "src": "645:1:35" + } + ] + }, + "documentation": "@dev Reverts if called from any account other than the primary.", + "id": 3623, + "name": "onlyPrimary", + "nodeType": "ModifierDefinition", + "parameters": { + "id": 3613, + "nodeType": "ParameterList", + "parameters": [], + "src": "591:2:35" + }, + "src": "571:82:35", + "visibility": "internal" + }, + { + "body": { + "id": 3630, + "nodeType": "Block", + "src": "767:32:35", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 3628, + "name": "_primary", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3595, + "src": "784:8:35", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "functionReturnParameters": 3627, + "id": 3629, + "nodeType": "Return", + "src": "777:15:35" + } + ] + }, + "documentation": "@return the address of the primary.", + "id": 3631, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "primary", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3624, + "nodeType": "ParameterList", + "parameters": [], + "src": "734:2:35" + }, + "returnParameters": { + "id": 3627, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3626, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 3631, + "src": "758:7:35", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3625, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "758:7:35", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "757:9:35" + }, + "scope": 3656, + "src": "718:81:35", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 3654, + "nodeType": "Block", + "src": "985:122:35", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 3643, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 3639, + "name": "recipient", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3633, + "src": "1003:9:35", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 3641, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1024:1:35", + "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": 3640, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "1016:7:35", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 3642, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1016:10:35", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "1003:23:35", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 3638, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6848, + 6849 + ], + "referencedDeclaration": 6848, + "src": "995:7:35", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 3644, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "995:32:35", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3645, + "nodeType": "ExpressionStatement", + "src": "995:32:35" + }, + { + "expression": { + "argumentTypes": null, + "id": 3648, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 3646, + "name": "_primary", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3595, + "src": "1037:8:35", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 3647, + "name": "recipient", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3633, + "src": "1048:9:35", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "1037:20:35", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 3649, + "nodeType": "ExpressionStatement", + "src": "1037:20:35" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 3651, + "name": "_primary", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3595, + "src": "1091:8:35", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 3650, + "name": "PrimaryTransferred", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3599, + "src": "1072:18:35", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 3652, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1072:28:35", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3653, + "nodeType": "EmitStatement", + "src": "1067:33:35" + } + ] + }, + "documentation": "@dev Transfers contract to a new primary.\n@param recipient The address of new primary.", + "id": 3655, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": null, + "id": 3636, + "modifierName": { + "argumentTypes": null, + "id": 3635, + "name": "onlyPrimary", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3623, + "src": "973:11:35", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "973:11:35" + } + ], + "name": "transferPrimary", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3634, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3633, + "name": "recipient", + "nodeType": "VariableDeclaration", + "scope": 3655, + "src": "947:17:35", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3632, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "947:7:35", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "946:19:35" + }, + "returnParameters": { + "id": 3637, + "nodeType": "ParameterList", + "parameters": [], + "src": "985:0:35" + }, + "scope": 3656, + "src": "922:185:35", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + } + ], + "scope": 3657, + "src": "148:961:35" + } + ], + "src": "0:1110:35" + }, + "legacyAST": { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/ownership/Secondary.sol", + "exportedSymbols": { + "Secondary": [ + 3656 + ] + }, + "id": 3657, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 3593, + "literals": [ + "solidity", + "^", + "0.5", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "0:23:35" + }, + { + "baseContracts": [], + "contractDependencies": [], + "contractKind": "contract", + "documentation": "@title Secondary\n@dev A Secondary contract can only be used by its primary account (the one that created it)", + "fullyImplemented": true, + "id": 3656, + "linearizedBaseContracts": [ + 3656 + ], + "name": "Secondary", + "nodeType": "ContractDefinition", + "nodes": [ + { + "constant": false, + "id": 3595, + "name": "_primary", + "nodeType": "VariableDeclaration", + "scope": 3656, + "src": "173:24:35", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3594, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "173:7:35", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "private" + }, + { + "anonymous": false, + "documentation": null, + "id": 3599, + "name": "PrimaryTransferred", + "nodeType": "EventDefinition", + "parameters": { + "id": 3598, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3597, + "indexed": false, + "name": "recipient", + "nodeType": "VariableDeclaration", + "scope": 3599, + "src": "238:17:35", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3596, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "238:7:35", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "228:33:35" + }, + "src": "204:58:35" + }, + { + "body": { + "id": 3611, + "nodeType": "Block", + "src": "397:81:35", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 3605, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 3602, + "name": "_primary", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3595, + "src": "407:8:35", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 3603, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6845, + "src": "418:3:35", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 3604, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "418:10:35", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "407:21:35", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 3606, + "nodeType": "ExpressionStatement", + "src": "407:21:35" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 3608, + "name": "_primary", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3595, + "src": "462:8:35", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 3607, + "name": "PrimaryTransferred", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3599, + "src": "443:18:35", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 3609, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "443:28:35", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3610, + "nodeType": "EmitStatement", + "src": "438:33:35" + } + ] + }, + "documentation": "@dev Sets the primary account to the one that is creating the Secondary contract.", + "id": 3612, + "implemented": true, + "kind": "constructor", + "modifiers": [], + "name": "", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3600, + "nodeType": "ParameterList", + "parameters": [], + "src": "385:2:35" + }, + "returnParameters": { + "id": 3601, + "nodeType": "ParameterList", + "parameters": [], + "src": "397:0:35" + }, + "scope": 3656, + "src": "373:105:35", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 3622, + "nodeType": "Block", + "src": "594:59:35", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 3618, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 3615, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6845, + "src": "612:3:35", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 3616, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "612:10:35", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 3617, + "name": "_primary", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3595, + "src": "626:8:35", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "612:22:35", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 3614, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6848, + 6849 + ], + "referencedDeclaration": 6848, + "src": "604:7:35", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 3619, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "604:31:35", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3620, + "nodeType": "ExpressionStatement", + "src": "604:31:35" + }, + { + "id": 3621, + "nodeType": "PlaceholderStatement", + "src": "645:1:35" + } + ] + }, + "documentation": "@dev Reverts if called from any account other than the primary.", + "id": 3623, + "name": "onlyPrimary", + "nodeType": "ModifierDefinition", + "parameters": { + "id": 3613, + "nodeType": "ParameterList", + "parameters": [], + "src": "591:2:35" + }, + "src": "571:82:35", + "visibility": "internal" + }, + { + "body": { + "id": 3630, + "nodeType": "Block", + "src": "767:32:35", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 3628, + "name": "_primary", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3595, + "src": "784:8:35", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "functionReturnParameters": 3627, + "id": 3629, + "nodeType": "Return", + "src": "777:15:35" + } + ] + }, + "documentation": "@return the address of the primary.", + "id": 3631, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "primary", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3624, + "nodeType": "ParameterList", + "parameters": [], + "src": "734:2:35" + }, + "returnParameters": { + "id": 3627, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3626, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 3631, + "src": "758:7:35", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3625, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "758:7:35", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "757:9:35" + }, + "scope": 3656, + "src": "718:81:35", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 3654, + "nodeType": "Block", + "src": "985:122:35", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 3643, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 3639, + "name": "recipient", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3633, + "src": "1003:9:35", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 3641, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1024:1:35", + "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": 3640, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "1016:7:35", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 3642, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1016:10:35", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "1003:23:35", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 3638, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6848, + 6849 + ], + "referencedDeclaration": 6848, + "src": "995:7:35", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 3644, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "995:32:35", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3645, + "nodeType": "ExpressionStatement", + "src": "995:32:35" + }, + { + "expression": { + "argumentTypes": null, + "id": 3648, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 3646, + "name": "_primary", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3595, + "src": "1037:8:35", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 3647, + "name": "recipient", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3633, + "src": "1048:9:35", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "1037:20:35", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 3649, + "nodeType": "ExpressionStatement", + "src": "1037:20:35" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 3651, + "name": "_primary", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3595, + "src": "1091:8:35", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 3650, + "name": "PrimaryTransferred", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3599, + "src": "1072:18:35", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 3652, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1072:28:35", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3653, + "nodeType": "EmitStatement", + "src": "1067:33:35" + } + ] + }, + "documentation": "@dev Transfers contract to a new primary.\n@param recipient The address of new primary.", + "id": 3655, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": null, + "id": 3636, + "modifierName": { + "argumentTypes": null, + "id": 3635, + "name": "onlyPrimary", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3623, + "src": "973:11:35", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "973:11:35" + } + ], + "name": "transferPrimary", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3634, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3633, + "name": "recipient", + "nodeType": "VariableDeclaration", + "scope": 3655, + "src": "947:17:35", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3632, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "947:7:35", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "946:19:35" + }, + "returnParameters": { + "id": 3637, + "nodeType": "ParameterList", + "parameters": [], + "src": "985:0:35" + }, + "scope": 3656, + "src": "922:185:35", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + } + ], + "scope": 3657, + "src": "148:961:35" + } + ], + "src": "0:1110:35" + }, + "compiler": { + "name": "solc", + "version": "0.5.0+commit.1d4f565a.Emscripten.clang" + }, + "networks": {}, + "schemaVersion": "3.0.0", + "updatedAt": "2019-01-04T21:44:02.887Z", + "devdoc": { + "details": "A Secondary contract can only be used by its primary account (the one that created it)", + "methods": { + "constructor": { + "details": "Sets the primary account to the one that is creating the Secondary contract." + }, + "primary()": { + "return": "the address of the primary." + }, + "transferPrimary(address)": { + "details": "Transfers contract to a new primary.", + "params": { + "recipient": "The address of new primary." + } + } + }, + "title": "Secondary" + }, + "userdoc": { + "methods": {} + } +} \ No newline at end of file diff --git a/node_modules/openzeppelin-solidity/build/contracts/SignatureBouncer.json b/node_modules/openzeppelin-solidity/build/contracts/SignatureBouncer.json new file mode 100644 index 0000000..2ca50aa --- /dev/null +++ b/node_modules/openzeppelin-solidity/build/contracts/SignatureBouncer.json @@ -0,0 +1,6358 @@ +{ + "contractName": "SignatureBouncer", + "abi": [ + { + "constant": true, + "inputs": [ + { + "name": "account", + "type": "address" + } + ], + "name": "isSigner", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [], + "name": "renounceSigner", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "account", + "type": "address" + } + ], + "name": "addSigner", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "account", + "type": "address" + } + ], + "name": "SignerAdded", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "account", + "type": "address" + } + ], + "name": "SignerRemoved", + "type": "event" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "sourceMap": "", + "deployedSourceMap": "", + "source": "pragma solidity ^0.5.0;\n\nimport \"../access/roles/SignerRole.sol\";\nimport \"../cryptography/ECDSA.sol\";\n\n/**\n * @title SignatureBouncer\n * @author PhABC, Shrugs and aflesher\n * @dev SignatureBouncer allows users to submit a signature as a permission to\n * do an action.\n * If the signature is from one of the authorized signer addresses, the\n * signature is valid.\n * Note that SignatureBouncer offers no protection against replay attacks, users\n * must add this themselves!\n *\n * Signer addresses can be individual servers signing grants or different\n * users within a decentralized club that have permission to invite other\n * members. This technique is useful for whitelists and airdrops; instead of\n * putting all valid addresses on-chain, simply sign a grant of the form\n * keccak256(abi.encodePacked(`:contractAddress` + `:granteeAddress`)) using a\n * valid signer address.\n * Then restrict access to your crowdsale/whitelist/airdrop using the\n * `onlyValidSignature` modifier (or implement your own using _isValidSignature).\n * In addition to `onlyValidSignature`, `onlyValidSignatureAndMethod` and\n * `onlyValidSignatureAndData` can be used to restrict access to only a given\n * method or a given method with given parameters respectively.\n * See the tests in SignatureBouncer.test.js for specific usage examples.\n *\n * @notice A method that uses the `onlyValidSignatureAndData` modifier must make\n * the _signature parameter the \"last\" parameter. You cannot sign a message that\n * has its own signature in it so the last 128 bytes of msg.data (which\n * represents the length of the _signature data and the _signaature data itself)\n * is ignored when validating. Also non fixed sized parameters make constructing\n * the data in the signature much more complex.\n * See https://ethereum.stackexchange.com/a/50616 for more details.\n */\ncontract SignatureBouncer is SignerRole {\n using ECDSA for bytes32;\n\n // Function selectors are 4 bytes long, as documented in\n // https://solidity.readthedocs.io/en/v0.4.24/abi-spec.html#function-selector\n uint256 private constant _METHOD_ID_SIZE = 4;\n // Signature size is 65 bytes (tightly packed v + r + s), but gets padded to 96 bytes\n uint256 private constant _SIGNATURE_SIZE = 96;\n\n constructor () internal {\n // solhint-disable-previous-line no-empty-blocks\n }\n\n /**\n * @dev requires that a valid signature of a signer was provided\n */\n modifier onlyValidSignature(bytes memory signature) {\n require(_isValidSignature(msg.sender, signature));\n _;\n }\n\n /**\n * @dev requires that a valid signature with a specifed method of a signer was provided\n */\n modifier onlyValidSignatureAndMethod(bytes memory signature) {\n require(_isValidSignatureAndMethod(msg.sender, signature));\n _;\n }\n\n /**\n * @dev requires that a valid signature with a specifed method and params of a signer was provided\n */\n modifier onlyValidSignatureAndData(bytes memory signature) {\n require(_isValidSignatureAndData(msg.sender, signature));\n _;\n }\n\n /**\n * @dev is the signature of `this + sender` from a signer?\n * @return bool\n */\n function _isValidSignature(address account, bytes memory signature) internal view returns (bool) {\n return _isValidDataHash(keccak256(abi.encodePacked(address(this), account)), signature);\n }\n\n /**\n * @dev is the signature of `this + sender + methodId` from a signer?\n * @return bool\n */\n function _isValidSignatureAndMethod(address account, bytes memory signature) internal view returns (bool) {\n bytes memory data = new bytes(_METHOD_ID_SIZE);\n for (uint i = 0; i < data.length; i++) {\n data[i] = msg.data[i];\n }\n return _isValidDataHash(keccak256(abi.encodePacked(address(this), account, data)), signature);\n }\n\n /**\n * @dev is the signature of `this + sender + methodId + params(s)` from a signer?\n * @notice the signature parameter of the method being validated must be the \"last\" parameter\n * @return bool\n */\n function _isValidSignatureAndData(address account, bytes memory signature) internal view returns (bool) {\n require(msg.data.length > _SIGNATURE_SIZE);\n\n bytes memory data = new bytes(msg.data.length - _SIGNATURE_SIZE);\n for (uint i = 0; i < data.length; i++) {\n data[i] = msg.data[i];\n }\n\n return _isValidDataHash(keccak256(abi.encodePacked(address(this), account, data)), signature);\n }\n\n /**\n * @dev internal function to convert a hash to an eth signed message\n * and then recover the signature and check it against the signer role\n * @return bool\n */\n function _isValidDataHash(bytes32 hash, bytes memory signature) internal view returns (bool) {\n address signer = hash.toEthSignedMessageHash().recover(signature);\n\n return signer != address(0) && isSigner(signer);\n }\n}\n", + "sourcePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/drafts/SignatureBouncer.sol", + "ast": { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/drafts/SignatureBouncer.sol", + "exportedSymbols": { + "SignatureBouncer": [ + 2466 + ] + }, + "id": 2467, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 2236, + "literals": [ + "solidity", + "^", + "0.5", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "0:23:25" + }, + { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/access/roles/SignerRole.sol", + "file": "../access/roles/SignerRole.sol", + "id": 2237, + "nodeType": "ImportDirective", + "scope": 2467, + "sourceUnit": 506, + "src": "25:40:25", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/cryptography/ECDSA.sol", + "file": "../cryptography/ECDSA.sol", + "id": 2238, + "nodeType": "ImportDirective", + "scope": 2467, + "sourceUnit": 1959, + "src": "66:35:25", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 2239, + "name": "SignerRole", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 505, + "src": "1868:10:25", + "typeDescriptions": { + "typeIdentifier": "t_contract$_SignerRole_$505", + "typeString": "contract SignerRole" + } + }, + "id": 2240, + "nodeType": "InheritanceSpecifier", + "src": "1868:10:25" + } + ], + "contractDependencies": [ + 505 + ], + "contractKind": "contract", + "documentation": "@title SignatureBouncer\n@author PhABC, Shrugs and aflesher\n@dev SignatureBouncer allows users to submit a signature as a permission to\ndo an action.\nIf the signature is from one of the authorized signer addresses, the\nsignature is valid.\nNote that SignatureBouncer offers no protection against replay attacks, users\nmust add this themselves!\n * Signer addresses can be individual servers signing grants or different\nusers within a decentralized club that have permission to invite other\nmembers. This technique is useful for whitelists and airdrops; instead of\nputting all valid addresses on-chain, simply sign a grant of the form\nkeccak256(abi.encodePacked(`:contractAddress` + `:granteeAddress`)) using a\nvalid signer address.\nThen restrict access to your crowdsale/whitelist/airdrop using the\n`onlyValidSignature` modifier (or implement your own using _isValidSignature).\nIn addition to `onlyValidSignature`, `onlyValidSignatureAndMethod` and\n`onlyValidSignatureAndData` can be used to restrict access to only a given\nmethod or a given method with given parameters respectively.\nSee the tests in SignatureBouncer.test.js for specific usage examples.\n * @notice A method that uses the `onlyValidSignatureAndData` modifier must make\nthe _signature parameter the \"last\" parameter. You cannot sign a message that\nhas its own signature in it so the last 128 bytes of msg.data (which\nrepresents the length of the _signature data and the _signaature data itself)\nis ignored when validating. Also non fixed sized parameters make constructing\nthe data in the signature much more complex.\nSee https://ethereum.stackexchange.com/a/50616 for more details.", + "fullyImplemented": true, + "id": 2466, + "linearizedBaseContracts": [ + 2466, + 505 + ], + "name": "SignatureBouncer", + "nodeType": "ContractDefinition", + "nodes": [ + { + "id": 2243, + "libraryName": { + "contractScope": null, + "id": 2241, + "name": "ECDSA", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 1958, + "src": "1891:5:25", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ECDSA_$1958", + "typeString": "library ECDSA" + } + }, + "nodeType": "UsingForDirective", + "src": "1885:24:25", + "typeName": { + "id": 2242, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1901:7:25", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + }, + { + "constant": true, + "id": 2246, + "name": "_METHOD_ID_SIZE", + "nodeType": "VariableDeclaration", + "scope": 2466, + "src": "2058:44:25", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2244, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2058:7:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "argumentTypes": null, + "hexValue": "34", + "id": 2245, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2101:1:25", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_4_by_1", + "typeString": "int_const 4" + }, + "value": "4" + }, + "visibility": "private" + }, + { + "constant": true, + "id": 2249, + "name": "_SIGNATURE_SIZE", + "nodeType": "VariableDeclaration", + "scope": 2466, + "src": "2198:45:25", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2247, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2198:7:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "argumentTypes": null, + "hexValue": "3936", + "id": 2248, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2241:2:25", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_96_by_1", + "typeString": "int_const 96" + }, + "value": "96" + }, + "visibility": "private" + }, + { + "body": { + "id": 2252, + "nodeType": "Block", + "src": "2274:64:25", + "statements": [] + }, + "documentation": null, + "id": 2253, + "implemented": true, + "kind": "constructor", + "modifiers": [], + "name": "", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2250, + "nodeType": "ParameterList", + "parameters": [], + "src": "2262:2:25" + }, + "returnParameters": { + "id": 2251, + "nodeType": "ParameterList", + "parameters": [], + "src": "2274:0:25" + }, + "scope": 2466, + "src": "2250:88:25", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 2266, + "nodeType": "Block", + "src": "2481:77:25", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 2259, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6845, + "src": "2517:3:25", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 2260, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2517:10:25", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 2261, + "name": "signature", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2255, + "src": "2529:9:25", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 2258, + "name": "_isValidSignature", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2318, + "src": "2499:17:25", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$_t_bytes_memory_ptr_$returns$_t_bool_$", + "typeString": "function (address,bytes memory) view returns (bool)" + } + }, + "id": 2262, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2499:40:25", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 2257, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6848, + 6849 + ], + "referencedDeclaration": 6848, + "src": "2491:7:25", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 2263, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2491:49:25", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2264, + "nodeType": "ExpressionStatement", + "src": "2491:49:25" + }, + { + "id": 2265, + "nodeType": "PlaceholderStatement", + "src": "2550:1:25" + } + ] + }, + "documentation": "@dev requires that a valid signature of a signer was provided", + "id": 2267, + "name": "onlyValidSignature", + "nodeType": "ModifierDefinition", + "parameters": { + "id": 2256, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2255, + "name": "signature", + "nodeType": "VariableDeclaration", + "scope": 2267, + "src": "2457:22:25", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 2254, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "2457:5:25", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2456:24:25" + }, + "src": "2429:129:25", + "visibility": "internal" + }, + { + "body": { + "id": 2280, + "nodeType": "Block", + "src": "2733:86:25", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 2273, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6845, + "src": "2778:3:25", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 2274, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2778:10:25", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 2275, + "name": "signature", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2269, + "src": "2790:9:25", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 2272, + "name": "_isValidSignatureAndMethod", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2371, + "src": "2751:26:25", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$_t_bytes_memory_ptr_$returns$_t_bool_$", + "typeString": "function (address,bytes memory) view returns (bool)" + } + }, + "id": 2276, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2751:49:25", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 2271, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6848, + 6849 + ], + "referencedDeclaration": 6848, + "src": "2743:7:25", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 2277, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2743:58:25", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2278, + "nodeType": "ExpressionStatement", + "src": "2743:58:25" + }, + { + "id": 2279, + "nodeType": "PlaceholderStatement", + "src": "2811:1:25" + } + ] + }, + "documentation": "@dev requires that a valid signature with a specifed method of a signer was provided", + "id": 2281, + "name": "onlyValidSignatureAndMethod", + "nodeType": "ModifierDefinition", + "parameters": { + "id": 2270, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2269, + "name": "signature", + "nodeType": "VariableDeclaration", + "scope": 2281, + "src": "2709:22:25", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 2268, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "2709:5:25", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2708:24:25" + }, + "src": "2672:147:25", + "visibility": "internal" + }, + { + "body": { + "id": 2294, + "nodeType": "Block", + "src": "3003:84:25", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 2287, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6845, + "src": "3046:3:25", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 2288, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "3046:10:25", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 2289, + "name": "signature", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2283, + "src": "3058:9:25", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 2286, + "name": "_isValidSignatureAndData", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2436, + "src": "3021:24:25", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$_t_bytes_memory_ptr_$returns$_t_bool_$", + "typeString": "function (address,bytes memory) view returns (bool)" + } + }, + "id": 2290, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3021:47:25", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 2285, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6848, + 6849 + ], + "referencedDeclaration": 6848, + "src": "3013:7:25", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 2291, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3013:56:25", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2292, + "nodeType": "ExpressionStatement", + "src": "3013:56:25" + }, + { + "id": 2293, + "nodeType": "PlaceholderStatement", + "src": "3079:1:25" + } + ] + }, + "documentation": "@dev requires that a valid signature with a specifed method and params of a signer was provided", + "id": 2295, + "name": "onlyValidSignatureAndData", + "nodeType": "ModifierDefinition", + "parameters": { + "id": 2284, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2283, + "name": "signature", + "nodeType": "VariableDeclaration", + "scope": 2295, + "src": "2979:22:25", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 2282, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "2979:5:25", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2978:24:25" + }, + "src": "2944:143:25", + "visibility": "internal" + }, + { + "body": { + "id": 2317, + "nodeType": "Block", + "src": "3289:104:25", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2309, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6934, + "src": "3358:4:25", + "typeDescriptions": { + "typeIdentifier": "t_contract$_SignatureBouncer_$2466", + "typeString": "contract SignatureBouncer" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_SignatureBouncer_$2466", + "typeString": "contract SignatureBouncer" + } + ], + "id": 2308, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "3350:7:25", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 2310, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3350:13:25", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 2311, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2297, + "src": "3365:7:25", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 2306, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6832, + "src": "3333:3:25", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 2307, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "encodePacked", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "3333:16:25", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$", + "typeString": "function () pure returns (bytes memory)" + } + }, + "id": 2312, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3333:40:25", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 2305, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6839, + "src": "3323:9:25", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 2313, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3323:51:25", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "id": 2314, + "name": "signature", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2299, + "src": "3376:9:25", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 2304, + "name": "_isValidDataHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2465, + "src": "3306:16:25", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_bytes_memory_ptr_$returns$_t_bool_$", + "typeString": "function (bytes32,bytes memory) view returns (bool)" + } + }, + "id": 2315, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3306:80:25", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 2303, + "id": 2316, + "nodeType": "Return", + "src": "3299:87:25" + } + ] + }, + "documentation": "@dev is the signature of `this + sender` from a signer?\n@return bool", + "id": 2318, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_isValidSignature", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2300, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2297, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 2318, + "src": "3219:15:25", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2296, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3219:7:25", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2299, + "name": "signature", + "nodeType": "VariableDeclaration", + "scope": 2318, + "src": "3236:22:25", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 2298, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "3236:5:25", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3218:41:25" + }, + "returnParameters": { + "id": 2303, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2302, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 2318, + "src": "3283:4:25", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 2301, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "3283:4:25", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3282:6:25" + }, + "scope": 2466, + "src": "3192:201:25", + "stateMutability": "view", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 2370, + "nodeType": "Block", + "src": "3615:260:25", + "statements": [ + { + "assignments": [ + 2328 + ], + "declarations": [ + { + "constant": false, + "id": 2328, + "name": "data", + "nodeType": "VariableDeclaration", + "scope": 2370, + "src": "3625:17:25", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 2327, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "3625:5:25", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 2333, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2331, + "name": "_METHOD_ID_SIZE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2246, + "src": "3655:15:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 2330, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "NewExpression", + "src": "3645:9:25", + "typeDescriptions": { + "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_$", + "typeString": "function (uint256) pure returns (bytes memory)" + }, + "typeName": { + "id": 2329, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "3649:5:25", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + } + }, + "id": 2332, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3645:26:25", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory", + "typeString": "bytes memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "3625:46:25" + }, + { + "body": { + "id": 2354, + "nodeType": "Block", + "src": "3720:46:25", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 2352, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2345, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2328, + "src": "3734:4:25", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 2347, + "indexExpression": { + "argumentTypes": null, + "id": 2346, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2335, + "src": "3739:1:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "3734:7:25", + "typeDescriptions": { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 2348, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6845, + "src": "3744:3:25", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 2349, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "data", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "3744:8:25", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + }, + "id": 2351, + "indexExpression": { + "argumentTypes": null, + "id": 2350, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2335, + "src": "3753:1:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3744:11:25", + "typeDescriptions": { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + } + }, + "src": "3734:21:25", + "typeDescriptions": { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + } + }, + "id": 2353, + "nodeType": "ExpressionStatement", + "src": "3734:21:25" + } + ] + }, + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2341, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2338, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2335, + "src": "3698:1:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 2339, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2328, + "src": "3702:4:25", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 2340, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "3702:11:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3698:15:25", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2355, + "initializationExpression": { + "assignments": [ + 2335 + ], + "declarations": [ + { + "constant": false, + "id": 2335, + "name": "i", + "nodeType": "VariableDeclaration", + "scope": 2355, + "src": "3686:6:25", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2334, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "3686:4:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 2337, + "initialValue": { + "argumentTypes": null, + "hexValue": "30", + "id": 2336, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3695:1:25", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "3686:10:25" + }, + "loopExpression": { + "expression": { + "argumentTypes": null, + "id": 2343, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "3715:3:25", + "subExpression": { + "argumentTypes": null, + "id": 2342, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2335, + "src": "3715:1:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2344, + "nodeType": "ExpressionStatement", + "src": "3715:3:25" + }, + "nodeType": "ForStatement", + "src": "3681:85:25" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2361, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6934, + "src": "3834:4:25", + "typeDescriptions": { + "typeIdentifier": "t_contract$_SignatureBouncer_$2466", + "typeString": "contract SignatureBouncer" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_SignatureBouncer_$2466", + "typeString": "contract SignatureBouncer" + } + ], + "id": 2360, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "3826:7:25", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 2362, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3826:13:25", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 2363, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2320, + "src": "3841:7:25", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 2364, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2328, + "src": "3850:4:25", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "expression": { + "argumentTypes": null, + "id": 2358, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6832, + "src": "3809:3:25", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 2359, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "encodePacked", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "3809:16:25", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$", + "typeString": "function () pure returns (bytes memory)" + } + }, + "id": 2365, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3809:46:25", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 2357, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6839, + "src": "3799:9:25", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 2366, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3799:57:25", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "id": 2367, + "name": "signature", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2322, + "src": "3858:9:25", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 2356, + "name": "_isValidDataHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2465, + "src": "3782:16:25", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_bytes_memory_ptr_$returns$_t_bool_$", + "typeString": "function (bytes32,bytes memory) view returns (bool)" + } + }, + "id": 2368, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3782:86:25", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 2326, + "id": 2369, + "nodeType": "Return", + "src": "3775:93:25" + } + ] + }, + "documentation": "@dev is the signature of `this + sender + methodId` from a signer?\n@return bool", + "id": 2371, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_isValidSignatureAndMethod", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2323, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2320, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 2371, + "src": "3545:15:25", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2319, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3545:7:25", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2322, + "name": "signature", + "nodeType": "VariableDeclaration", + "scope": 2371, + "src": "3562:22:25", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 2321, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "3562:5:25", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3544:41:25" + }, + "returnParameters": { + "id": 2326, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2325, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 2371, + "src": "3609:4:25", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 2324, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "3609:4:25", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3608:6:25" + }, + "scope": 2466, + "src": "3509:366:25", + "stateMutability": "view", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 2435, + "nodeType": "Block", + "src": "4217:332:25", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2385, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 2381, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6845, + "src": "4235:3:25", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 2382, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "data", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "4235:8:25", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + }, + "id": 2383, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "4235:15:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "id": 2384, + "name": "_SIGNATURE_SIZE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2249, + "src": "4253:15:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4235:33:25", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 2380, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6848, + 6849 + ], + "referencedDeclaration": 6848, + "src": "4227:7:25", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 2386, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4227:42:25", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2387, + "nodeType": "ExpressionStatement", + "src": "4227:42:25" + }, + { + "assignments": [ + 2389 + ], + "declarations": [ + { + "constant": false, + "id": 2389, + "name": "data", + "nodeType": "VariableDeclaration", + "scope": 2435, + "src": "4280:17:25", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 2388, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "4280:5:25", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 2398, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2396, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 2392, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6845, + "src": "4310:3:25", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 2393, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "data", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "4310:8:25", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + }, + "id": 2394, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "4310:15:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "argumentTypes": null, + "id": 2395, + "name": "_SIGNATURE_SIZE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2249, + "src": "4328:15:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4310:33:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 2391, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "NewExpression", + "src": "4300:9:25", + "typeDescriptions": { + "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_$", + "typeString": "function (uint256) pure returns (bytes memory)" + }, + "typeName": { + "id": 2390, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "4304:5:25", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + } + }, + "id": 2397, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4300:44:25", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory", + "typeString": "bytes memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "4280:64:25" + }, + { + "body": { + "id": 2419, + "nodeType": "Block", + "src": "4393:46:25", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 2417, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2410, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2389, + "src": "4407:4:25", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 2412, + "indexExpression": { + "argumentTypes": null, + "id": 2411, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2400, + "src": "4412:1:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "4407:7:25", + "typeDescriptions": { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 2413, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6845, + "src": "4417:3:25", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 2414, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "data", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "4417:8:25", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + }, + "id": 2416, + "indexExpression": { + "argumentTypes": null, + "id": 2415, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2400, + "src": "4426:1:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "4417:11:25", + "typeDescriptions": { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + } + }, + "src": "4407:21:25", + "typeDescriptions": { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + } + }, + "id": 2418, + "nodeType": "ExpressionStatement", + "src": "4407:21:25" + } + ] + }, + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2406, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2403, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2400, + "src": "4371:1:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 2404, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2389, + "src": "4375:4:25", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 2405, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "4375:11:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4371:15:25", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2420, + "initializationExpression": { + "assignments": [ + 2400 + ], + "declarations": [ + { + "constant": false, + "id": 2400, + "name": "i", + "nodeType": "VariableDeclaration", + "scope": 2420, + "src": "4359:6:25", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2399, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "4359:4:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 2402, + "initialValue": { + "argumentTypes": null, + "hexValue": "30", + "id": 2401, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4368:1:25", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "4359:10:25" + }, + "loopExpression": { + "expression": { + "argumentTypes": null, + "id": 2408, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "4388:3:25", + "subExpression": { + "argumentTypes": null, + "id": 2407, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2400, + "src": "4388:1:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2409, + "nodeType": "ExpressionStatement", + "src": "4388:3:25" + }, + "nodeType": "ForStatement", + "src": "4354:85:25" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2426, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6934, + "src": "4508:4:25", + "typeDescriptions": { + "typeIdentifier": "t_contract$_SignatureBouncer_$2466", + "typeString": "contract SignatureBouncer" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_SignatureBouncer_$2466", + "typeString": "contract SignatureBouncer" + } + ], + "id": 2425, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "4500:7:25", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 2427, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4500:13:25", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 2428, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2373, + "src": "4515:7:25", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 2429, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2389, + "src": "4524:4:25", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "expression": { + "argumentTypes": null, + "id": 2423, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6832, + "src": "4483:3:25", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 2424, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "encodePacked", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "4483:16:25", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$", + "typeString": "function () pure returns (bytes memory)" + } + }, + "id": 2430, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4483:46:25", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 2422, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6839, + "src": "4473:9:25", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 2431, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4473:57:25", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "id": 2432, + "name": "signature", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2375, + "src": "4532:9:25", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 2421, + "name": "_isValidDataHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2465, + "src": "4456:16:25", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_bytes_memory_ptr_$returns$_t_bool_$", + "typeString": "function (bytes32,bytes memory) view returns (bool)" + } + }, + "id": 2433, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4456:86:25", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 2379, + "id": 2434, + "nodeType": "Return", + "src": "4449:93:25" + } + ] + }, + "documentation": "@dev is the signature of `this + sender + methodId + params(s)` from a signer?\n@notice the signature parameter of the method being validated must be the \"last\" parameter\n@return bool", + "id": 2436, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_isValidSignatureAndData", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2376, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2373, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 2436, + "src": "4147:15:25", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2372, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4147:7:25", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2375, + "name": "signature", + "nodeType": "VariableDeclaration", + "scope": 2436, + "src": "4164:22:25", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 2374, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "4164:5:25", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4146:41:25" + }, + "returnParameters": { + "id": 2379, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2378, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 2436, + "src": "4211:4:25", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 2377, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "4211:4:25", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4210:6:25" + }, + "scope": 2466, + "src": "4113:436:25", + "stateMutability": "view", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 2464, + "nodeType": "Block", + "src": "4832:140:25", + "statements": [ + { + "assignments": [ + 2446 + ], + "declarations": [ + { + "constant": false, + "id": 2446, + "name": "signer", + "nodeType": "VariableDeclaration", + "scope": 2464, + "src": "4842:14:25", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2445, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4842:7:25", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 2453, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2451, + "name": "signature", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2440, + "src": "4897:9:25", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "argumentTypes": null, + "id": 2447, + "name": "hash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2438, + "src": "4859:4:25", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 2448, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "toEthSignedMessageHash", + "nodeType": "MemberAccess", + "referencedDeclaration": 1957, + "src": "4859:27:25", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_bytes32_$bound_to$_t_bytes32_$", + "typeString": "function (bytes32) pure returns (bytes32)" + } + }, + "id": 2449, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4859:29:25", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 2450, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "recover", + "nodeType": "MemberAccess", + "referencedDeclaration": 1941, + "src": "4859:37:25", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_bytes_memory_ptr_$returns$_t_address_$bound_to$_t_bytes32_$", + "typeString": "function (bytes32,bytes memory) pure returns (address)" + } + }, + "id": 2452, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4859:48:25", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "4842:65:25" + }, + { + "expression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 2462, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 2458, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2454, + "name": "signer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2446, + "src": "4925:6:25", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 2456, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4943:1:25", + "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": 2455, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "4935:7:25", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 2457, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4935:10:25", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "4925:20:25", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2460, + "name": "signer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2446, + "src": "4958:6:25", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 2459, + "name": "isSigner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 451, + "src": "4949:8:25", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$", + "typeString": "function (address) view returns (bool)" + } + }, + "id": 2461, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4949:16:25", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "4925:40:25", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 2444, + "id": 2463, + "nodeType": "Return", + "src": "4918:47:25" + } + ] + }, + "documentation": "@dev internal function to convert a hash to an eth signed message\nand then recover the signature and check it against the signer role\n@return bool", + "id": 2465, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_isValidDataHash", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2441, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2438, + "name": "hash", + "nodeType": "VariableDeclaration", + "scope": 2465, + "src": "4765:12:25", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 2437, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "4765:7:25", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2440, + "name": "signature", + "nodeType": "VariableDeclaration", + "scope": 2465, + "src": "4779:22:25", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 2439, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "4779:5:25", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4764:38:25" + }, + "returnParameters": { + "id": 2444, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2443, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 2465, + "src": "4826:4:25", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 2442, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "4826:4:25", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4825:6:25" + }, + "scope": 2466, + "src": "4739:233:25", + "stateMutability": "view", + "superFunction": null, + "visibility": "internal" + } + ], + "scope": 2467, + "src": "1839:3135:25" + } + ], + "src": "0:4975:25" + }, + "legacyAST": { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/drafts/SignatureBouncer.sol", + "exportedSymbols": { + "SignatureBouncer": [ + 2466 + ] + }, + "id": 2467, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 2236, + "literals": [ + "solidity", + "^", + "0.5", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "0:23:25" + }, + { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/access/roles/SignerRole.sol", + "file": "../access/roles/SignerRole.sol", + "id": 2237, + "nodeType": "ImportDirective", + "scope": 2467, + "sourceUnit": 506, + "src": "25:40:25", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/cryptography/ECDSA.sol", + "file": "../cryptography/ECDSA.sol", + "id": 2238, + "nodeType": "ImportDirective", + "scope": 2467, + "sourceUnit": 1959, + "src": "66:35:25", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 2239, + "name": "SignerRole", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 505, + "src": "1868:10:25", + "typeDescriptions": { + "typeIdentifier": "t_contract$_SignerRole_$505", + "typeString": "contract SignerRole" + } + }, + "id": 2240, + "nodeType": "InheritanceSpecifier", + "src": "1868:10:25" + } + ], + "contractDependencies": [ + 505 + ], + "contractKind": "contract", + "documentation": "@title SignatureBouncer\n@author PhABC, Shrugs and aflesher\n@dev SignatureBouncer allows users to submit a signature as a permission to\ndo an action.\nIf the signature is from one of the authorized signer addresses, the\nsignature is valid.\nNote that SignatureBouncer offers no protection against replay attacks, users\nmust add this themselves!\n * Signer addresses can be individual servers signing grants or different\nusers within a decentralized club that have permission to invite other\nmembers. This technique is useful for whitelists and airdrops; instead of\nputting all valid addresses on-chain, simply sign a grant of the form\nkeccak256(abi.encodePacked(`:contractAddress` + `:granteeAddress`)) using a\nvalid signer address.\nThen restrict access to your crowdsale/whitelist/airdrop using the\n`onlyValidSignature` modifier (or implement your own using _isValidSignature).\nIn addition to `onlyValidSignature`, `onlyValidSignatureAndMethod` and\n`onlyValidSignatureAndData` can be used to restrict access to only a given\nmethod or a given method with given parameters respectively.\nSee the tests in SignatureBouncer.test.js for specific usage examples.\n * @notice A method that uses the `onlyValidSignatureAndData` modifier must make\nthe _signature parameter the \"last\" parameter. You cannot sign a message that\nhas its own signature in it so the last 128 bytes of msg.data (which\nrepresents the length of the _signature data and the _signaature data itself)\nis ignored when validating. Also non fixed sized parameters make constructing\nthe data in the signature much more complex.\nSee https://ethereum.stackexchange.com/a/50616 for more details.", + "fullyImplemented": true, + "id": 2466, + "linearizedBaseContracts": [ + 2466, + 505 + ], + "name": "SignatureBouncer", + "nodeType": "ContractDefinition", + "nodes": [ + { + "id": 2243, + "libraryName": { + "contractScope": null, + "id": 2241, + "name": "ECDSA", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 1958, + "src": "1891:5:25", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ECDSA_$1958", + "typeString": "library ECDSA" + } + }, + "nodeType": "UsingForDirective", + "src": "1885:24:25", + "typeName": { + "id": 2242, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1901:7:25", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + }, + { + "constant": true, + "id": 2246, + "name": "_METHOD_ID_SIZE", + "nodeType": "VariableDeclaration", + "scope": 2466, + "src": "2058:44:25", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2244, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2058:7:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "argumentTypes": null, + "hexValue": "34", + "id": 2245, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2101:1:25", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_4_by_1", + "typeString": "int_const 4" + }, + "value": "4" + }, + "visibility": "private" + }, + { + "constant": true, + "id": 2249, + "name": "_SIGNATURE_SIZE", + "nodeType": "VariableDeclaration", + "scope": 2466, + "src": "2198:45:25", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2247, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2198:7:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "argumentTypes": null, + "hexValue": "3936", + "id": 2248, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2241:2:25", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_96_by_1", + "typeString": "int_const 96" + }, + "value": "96" + }, + "visibility": "private" + }, + { + "body": { + "id": 2252, + "nodeType": "Block", + "src": "2274:64:25", + "statements": [] + }, + "documentation": null, + "id": 2253, + "implemented": true, + "kind": "constructor", + "modifiers": [], + "name": "", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2250, + "nodeType": "ParameterList", + "parameters": [], + "src": "2262:2:25" + }, + "returnParameters": { + "id": 2251, + "nodeType": "ParameterList", + "parameters": [], + "src": "2274:0:25" + }, + "scope": 2466, + "src": "2250:88:25", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 2266, + "nodeType": "Block", + "src": "2481:77:25", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 2259, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6845, + "src": "2517:3:25", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 2260, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2517:10:25", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 2261, + "name": "signature", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2255, + "src": "2529:9:25", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 2258, + "name": "_isValidSignature", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2318, + "src": "2499:17:25", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$_t_bytes_memory_ptr_$returns$_t_bool_$", + "typeString": "function (address,bytes memory) view returns (bool)" + } + }, + "id": 2262, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2499:40:25", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 2257, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6848, + 6849 + ], + "referencedDeclaration": 6848, + "src": "2491:7:25", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 2263, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2491:49:25", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2264, + "nodeType": "ExpressionStatement", + "src": "2491:49:25" + }, + { + "id": 2265, + "nodeType": "PlaceholderStatement", + "src": "2550:1:25" + } + ] + }, + "documentation": "@dev requires that a valid signature of a signer was provided", + "id": 2267, + "name": "onlyValidSignature", + "nodeType": "ModifierDefinition", + "parameters": { + "id": 2256, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2255, + "name": "signature", + "nodeType": "VariableDeclaration", + "scope": 2267, + "src": "2457:22:25", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 2254, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "2457:5:25", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2456:24:25" + }, + "src": "2429:129:25", + "visibility": "internal" + }, + { + "body": { + "id": 2280, + "nodeType": "Block", + "src": "2733:86:25", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 2273, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6845, + "src": "2778:3:25", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 2274, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2778:10:25", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 2275, + "name": "signature", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2269, + "src": "2790:9:25", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 2272, + "name": "_isValidSignatureAndMethod", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2371, + "src": "2751:26:25", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$_t_bytes_memory_ptr_$returns$_t_bool_$", + "typeString": "function (address,bytes memory) view returns (bool)" + } + }, + "id": 2276, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2751:49:25", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 2271, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6848, + 6849 + ], + "referencedDeclaration": 6848, + "src": "2743:7:25", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 2277, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2743:58:25", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2278, + "nodeType": "ExpressionStatement", + "src": "2743:58:25" + }, + { + "id": 2279, + "nodeType": "PlaceholderStatement", + "src": "2811:1:25" + } + ] + }, + "documentation": "@dev requires that a valid signature with a specifed method of a signer was provided", + "id": 2281, + "name": "onlyValidSignatureAndMethod", + "nodeType": "ModifierDefinition", + "parameters": { + "id": 2270, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2269, + "name": "signature", + "nodeType": "VariableDeclaration", + "scope": 2281, + "src": "2709:22:25", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 2268, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "2709:5:25", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2708:24:25" + }, + "src": "2672:147:25", + "visibility": "internal" + }, + { + "body": { + "id": 2294, + "nodeType": "Block", + "src": "3003:84:25", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 2287, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6845, + "src": "3046:3:25", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 2288, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "3046:10:25", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 2289, + "name": "signature", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2283, + "src": "3058:9:25", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 2286, + "name": "_isValidSignatureAndData", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2436, + "src": "3021:24:25", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$_t_bytes_memory_ptr_$returns$_t_bool_$", + "typeString": "function (address,bytes memory) view returns (bool)" + } + }, + "id": 2290, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3021:47:25", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 2285, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6848, + 6849 + ], + "referencedDeclaration": 6848, + "src": "3013:7:25", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 2291, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3013:56:25", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2292, + "nodeType": "ExpressionStatement", + "src": "3013:56:25" + }, + { + "id": 2293, + "nodeType": "PlaceholderStatement", + "src": "3079:1:25" + } + ] + }, + "documentation": "@dev requires that a valid signature with a specifed method and params of a signer was provided", + "id": 2295, + "name": "onlyValidSignatureAndData", + "nodeType": "ModifierDefinition", + "parameters": { + "id": 2284, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2283, + "name": "signature", + "nodeType": "VariableDeclaration", + "scope": 2295, + "src": "2979:22:25", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 2282, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "2979:5:25", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2978:24:25" + }, + "src": "2944:143:25", + "visibility": "internal" + }, + { + "body": { + "id": 2317, + "nodeType": "Block", + "src": "3289:104:25", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2309, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6934, + "src": "3358:4:25", + "typeDescriptions": { + "typeIdentifier": "t_contract$_SignatureBouncer_$2466", + "typeString": "contract SignatureBouncer" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_SignatureBouncer_$2466", + "typeString": "contract SignatureBouncer" + } + ], + "id": 2308, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "3350:7:25", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 2310, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3350:13:25", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 2311, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2297, + "src": "3365:7:25", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 2306, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6832, + "src": "3333:3:25", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 2307, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "encodePacked", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "3333:16:25", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$", + "typeString": "function () pure returns (bytes memory)" + } + }, + "id": 2312, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3333:40:25", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 2305, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6839, + "src": "3323:9:25", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 2313, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3323:51:25", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "id": 2314, + "name": "signature", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2299, + "src": "3376:9:25", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 2304, + "name": "_isValidDataHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2465, + "src": "3306:16:25", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_bytes_memory_ptr_$returns$_t_bool_$", + "typeString": "function (bytes32,bytes memory) view returns (bool)" + } + }, + "id": 2315, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3306:80:25", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 2303, + "id": 2316, + "nodeType": "Return", + "src": "3299:87:25" + } + ] + }, + "documentation": "@dev is the signature of `this + sender` from a signer?\n@return bool", + "id": 2318, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_isValidSignature", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2300, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2297, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 2318, + "src": "3219:15:25", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2296, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3219:7:25", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2299, + "name": "signature", + "nodeType": "VariableDeclaration", + "scope": 2318, + "src": "3236:22:25", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 2298, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "3236:5:25", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3218:41:25" + }, + "returnParameters": { + "id": 2303, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2302, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 2318, + "src": "3283:4:25", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 2301, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "3283:4:25", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3282:6:25" + }, + "scope": 2466, + "src": "3192:201:25", + "stateMutability": "view", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 2370, + "nodeType": "Block", + "src": "3615:260:25", + "statements": [ + { + "assignments": [ + 2328 + ], + "declarations": [ + { + "constant": false, + "id": 2328, + "name": "data", + "nodeType": "VariableDeclaration", + "scope": 2370, + "src": "3625:17:25", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 2327, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "3625:5:25", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 2333, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2331, + "name": "_METHOD_ID_SIZE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2246, + "src": "3655:15:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 2330, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "NewExpression", + "src": "3645:9:25", + "typeDescriptions": { + "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_$", + "typeString": "function (uint256) pure returns (bytes memory)" + }, + "typeName": { + "id": 2329, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "3649:5:25", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + } + }, + "id": 2332, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3645:26:25", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory", + "typeString": "bytes memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "3625:46:25" + }, + { + "body": { + "id": 2354, + "nodeType": "Block", + "src": "3720:46:25", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 2352, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2345, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2328, + "src": "3734:4:25", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 2347, + "indexExpression": { + "argumentTypes": null, + "id": 2346, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2335, + "src": "3739:1:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "3734:7:25", + "typeDescriptions": { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 2348, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6845, + "src": "3744:3:25", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 2349, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "data", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "3744:8:25", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + }, + "id": 2351, + "indexExpression": { + "argumentTypes": null, + "id": 2350, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2335, + "src": "3753:1:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3744:11:25", + "typeDescriptions": { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + } + }, + "src": "3734:21:25", + "typeDescriptions": { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + } + }, + "id": 2353, + "nodeType": "ExpressionStatement", + "src": "3734:21:25" + } + ] + }, + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2341, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2338, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2335, + "src": "3698:1:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 2339, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2328, + "src": "3702:4:25", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 2340, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "3702:11:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3698:15:25", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2355, + "initializationExpression": { + "assignments": [ + 2335 + ], + "declarations": [ + { + "constant": false, + "id": 2335, + "name": "i", + "nodeType": "VariableDeclaration", + "scope": 2355, + "src": "3686:6:25", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2334, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "3686:4:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 2337, + "initialValue": { + "argumentTypes": null, + "hexValue": "30", + "id": 2336, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3695:1:25", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "3686:10:25" + }, + "loopExpression": { + "expression": { + "argumentTypes": null, + "id": 2343, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "3715:3:25", + "subExpression": { + "argumentTypes": null, + "id": 2342, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2335, + "src": "3715:1:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2344, + "nodeType": "ExpressionStatement", + "src": "3715:3:25" + }, + "nodeType": "ForStatement", + "src": "3681:85:25" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2361, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6934, + "src": "3834:4:25", + "typeDescriptions": { + "typeIdentifier": "t_contract$_SignatureBouncer_$2466", + "typeString": "contract SignatureBouncer" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_SignatureBouncer_$2466", + "typeString": "contract SignatureBouncer" + } + ], + "id": 2360, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "3826:7:25", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 2362, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3826:13:25", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 2363, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2320, + "src": "3841:7:25", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 2364, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2328, + "src": "3850:4:25", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "expression": { + "argumentTypes": null, + "id": 2358, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6832, + "src": "3809:3:25", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 2359, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "encodePacked", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "3809:16:25", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$", + "typeString": "function () pure returns (bytes memory)" + } + }, + "id": 2365, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3809:46:25", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 2357, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6839, + "src": "3799:9:25", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 2366, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3799:57:25", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "id": 2367, + "name": "signature", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2322, + "src": "3858:9:25", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 2356, + "name": "_isValidDataHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2465, + "src": "3782:16:25", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_bytes_memory_ptr_$returns$_t_bool_$", + "typeString": "function (bytes32,bytes memory) view returns (bool)" + } + }, + "id": 2368, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3782:86:25", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 2326, + "id": 2369, + "nodeType": "Return", + "src": "3775:93:25" + } + ] + }, + "documentation": "@dev is the signature of `this + sender + methodId` from a signer?\n@return bool", + "id": 2371, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_isValidSignatureAndMethod", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2323, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2320, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 2371, + "src": "3545:15:25", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2319, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3545:7:25", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2322, + "name": "signature", + "nodeType": "VariableDeclaration", + "scope": 2371, + "src": "3562:22:25", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 2321, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "3562:5:25", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3544:41:25" + }, + "returnParameters": { + "id": 2326, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2325, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 2371, + "src": "3609:4:25", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 2324, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "3609:4:25", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3608:6:25" + }, + "scope": 2466, + "src": "3509:366:25", + "stateMutability": "view", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 2435, + "nodeType": "Block", + "src": "4217:332:25", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2385, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 2381, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6845, + "src": "4235:3:25", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 2382, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "data", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "4235:8:25", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + }, + "id": 2383, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "4235:15:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "id": 2384, + "name": "_SIGNATURE_SIZE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2249, + "src": "4253:15:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4235:33:25", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 2380, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6848, + 6849 + ], + "referencedDeclaration": 6848, + "src": "4227:7:25", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 2386, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4227:42:25", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2387, + "nodeType": "ExpressionStatement", + "src": "4227:42:25" + }, + { + "assignments": [ + 2389 + ], + "declarations": [ + { + "constant": false, + "id": 2389, + "name": "data", + "nodeType": "VariableDeclaration", + "scope": 2435, + "src": "4280:17:25", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 2388, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "4280:5:25", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 2398, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2396, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 2392, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6845, + "src": "4310:3:25", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 2393, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "data", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "4310:8:25", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + }, + "id": 2394, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "4310:15:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "argumentTypes": null, + "id": 2395, + "name": "_SIGNATURE_SIZE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2249, + "src": "4328:15:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4310:33:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 2391, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "NewExpression", + "src": "4300:9:25", + "typeDescriptions": { + "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_$", + "typeString": "function (uint256) pure returns (bytes memory)" + }, + "typeName": { + "id": 2390, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "4304:5:25", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + } + }, + "id": 2397, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4300:44:25", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory", + "typeString": "bytes memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "4280:64:25" + }, + { + "body": { + "id": 2419, + "nodeType": "Block", + "src": "4393:46:25", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 2417, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2410, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2389, + "src": "4407:4:25", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 2412, + "indexExpression": { + "argumentTypes": null, + "id": 2411, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2400, + "src": "4412:1:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "4407:7:25", + "typeDescriptions": { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 2413, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6845, + "src": "4417:3:25", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 2414, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "data", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "4417:8:25", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + }, + "id": 2416, + "indexExpression": { + "argumentTypes": null, + "id": 2415, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2400, + "src": "4426:1:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "4417:11:25", + "typeDescriptions": { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + } + }, + "src": "4407:21:25", + "typeDescriptions": { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + } + }, + "id": 2418, + "nodeType": "ExpressionStatement", + "src": "4407:21:25" + } + ] + }, + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2406, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2403, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2400, + "src": "4371:1:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 2404, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2389, + "src": "4375:4:25", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 2405, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "4375:11:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4371:15:25", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2420, + "initializationExpression": { + "assignments": [ + 2400 + ], + "declarations": [ + { + "constant": false, + "id": 2400, + "name": "i", + "nodeType": "VariableDeclaration", + "scope": 2420, + "src": "4359:6:25", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2399, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "4359:4:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 2402, + "initialValue": { + "argumentTypes": null, + "hexValue": "30", + "id": 2401, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4368:1:25", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "4359:10:25" + }, + "loopExpression": { + "expression": { + "argumentTypes": null, + "id": 2408, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "4388:3:25", + "subExpression": { + "argumentTypes": null, + "id": 2407, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2400, + "src": "4388:1:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2409, + "nodeType": "ExpressionStatement", + "src": "4388:3:25" + }, + "nodeType": "ForStatement", + "src": "4354:85:25" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2426, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6934, + "src": "4508:4:25", + "typeDescriptions": { + "typeIdentifier": "t_contract$_SignatureBouncer_$2466", + "typeString": "contract SignatureBouncer" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_SignatureBouncer_$2466", + "typeString": "contract SignatureBouncer" + } + ], + "id": 2425, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "4500:7:25", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 2427, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4500:13:25", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 2428, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2373, + "src": "4515:7:25", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 2429, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2389, + "src": "4524:4:25", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "expression": { + "argumentTypes": null, + "id": 2423, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6832, + "src": "4483:3:25", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 2424, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "encodePacked", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "4483:16:25", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$", + "typeString": "function () pure returns (bytes memory)" + } + }, + "id": 2430, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4483:46:25", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 2422, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6839, + "src": "4473:9:25", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 2431, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4473:57:25", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "id": 2432, + "name": "signature", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2375, + "src": "4532:9:25", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 2421, + "name": "_isValidDataHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2465, + "src": "4456:16:25", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_bytes_memory_ptr_$returns$_t_bool_$", + "typeString": "function (bytes32,bytes memory) view returns (bool)" + } + }, + "id": 2433, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4456:86:25", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 2379, + "id": 2434, + "nodeType": "Return", + "src": "4449:93:25" + } + ] + }, + "documentation": "@dev is the signature of `this + sender + methodId + params(s)` from a signer?\n@notice the signature parameter of the method being validated must be the \"last\" parameter\n@return bool", + "id": 2436, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_isValidSignatureAndData", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2376, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2373, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 2436, + "src": "4147:15:25", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2372, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4147:7:25", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2375, + "name": "signature", + "nodeType": "VariableDeclaration", + "scope": 2436, + "src": "4164:22:25", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 2374, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "4164:5:25", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4146:41:25" + }, + "returnParameters": { + "id": 2379, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2378, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 2436, + "src": "4211:4:25", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 2377, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "4211:4:25", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4210:6:25" + }, + "scope": 2466, + "src": "4113:436:25", + "stateMutability": "view", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 2464, + "nodeType": "Block", + "src": "4832:140:25", + "statements": [ + { + "assignments": [ + 2446 + ], + "declarations": [ + { + "constant": false, + "id": 2446, + "name": "signer", + "nodeType": "VariableDeclaration", + "scope": 2464, + "src": "4842:14:25", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2445, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4842:7:25", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 2453, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2451, + "name": "signature", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2440, + "src": "4897:9:25", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "argumentTypes": null, + "id": 2447, + "name": "hash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2438, + "src": "4859:4:25", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 2448, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "toEthSignedMessageHash", + "nodeType": "MemberAccess", + "referencedDeclaration": 1957, + "src": "4859:27:25", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_bytes32_$bound_to$_t_bytes32_$", + "typeString": "function (bytes32) pure returns (bytes32)" + } + }, + "id": 2449, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4859:29:25", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 2450, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "recover", + "nodeType": "MemberAccess", + "referencedDeclaration": 1941, + "src": "4859:37:25", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_bytes_memory_ptr_$returns$_t_address_$bound_to$_t_bytes32_$", + "typeString": "function (bytes32,bytes memory) pure returns (address)" + } + }, + "id": 2452, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4859:48:25", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "4842:65:25" + }, + { + "expression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 2462, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 2458, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2454, + "name": "signer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2446, + "src": "4925:6:25", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 2456, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4943:1:25", + "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": 2455, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "4935:7:25", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 2457, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4935:10:25", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "4925:20:25", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2460, + "name": "signer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2446, + "src": "4958:6:25", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 2459, + "name": "isSigner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 451, + "src": "4949:8:25", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$", + "typeString": "function (address) view returns (bool)" + } + }, + "id": 2461, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4949:16:25", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "4925:40:25", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 2444, + "id": 2463, + "nodeType": "Return", + "src": "4918:47:25" + } + ] + }, + "documentation": "@dev internal function to convert a hash to an eth signed message\nand then recover the signature and check it against the signer role\n@return bool", + "id": 2465, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_isValidDataHash", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2441, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2438, + "name": "hash", + "nodeType": "VariableDeclaration", + "scope": 2465, + "src": "4765:12:25", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 2437, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "4765:7:25", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2440, + "name": "signature", + "nodeType": "VariableDeclaration", + "scope": 2465, + "src": "4779:22:25", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 2439, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "4779:5:25", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4764:38:25" + }, + "returnParameters": { + "id": 2444, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2443, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 2465, + "src": "4826:4:25", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 2442, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "4826:4:25", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4825:6:25" + }, + "scope": 2466, + "src": "4739:233:25", + "stateMutability": "view", + "superFunction": null, + "visibility": "internal" + } + ], + "scope": 2467, + "src": "1839:3135:25" + } + ], + "src": "0:4975:25" + }, + "compiler": { + "name": "solc", + "version": "0.5.0+commit.1d4f565a.Emscripten.clang" + }, + "networks": {}, + "schemaVersion": "3.0.0", + "updatedAt": "2019-01-04T21:44:02.877Z", + "devdoc": { + "author": "PhABC, Shrugs and aflesher", + "details": "SignatureBouncer allows users to submit a signature as a permission to do an action. If the signature is from one of the authorized signer addresses, the signature is valid. Note that SignatureBouncer offers no protection against replay attacks, users must add this themselves! * Signer addresses can be individual servers signing grants or different users within a decentralized club that have permission to invite other members. This technique is useful for whitelists and airdrops; instead of putting all valid addresses on-chain, simply sign a grant of the form keccak256(abi.encodePacked(`:contractAddress` + `:granteeAddress`)) using a valid signer address. Then restrict access to your crowdsale/whitelist/airdrop using the `onlyValidSignature` modifier (or implement your own using _isValidSignature). In addition to `onlyValidSignature`, `onlyValidSignatureAndMethod` and `onlyValidSignatureAndData` can be used to restrict access to only a given method or a given method with given parameters respectively. See the tests in SignatureBouncer.test.js for specific usage examples.", + "methods": {}, + "title": "SignatureBouncer" + }, + "userdoc": { + "methods": {}, + "notice": "A method that uses the `onlyValidSignatureAndData` modifier must make the _signature parameter the \"last\" parameter. You cannot sign a message that has its own signature in it so the last 128 bytes of msg.data (which represents the length of the _signature data and the _signaature data itself) is ignored when validating. Also non fixed sized parameters make constructing the data in the signature much more complex. See https://ethereum.stackexchange.com/a/50616 for more details." + } +} \ No newline at end of file diff --git a/node_modules/openzeppelin-solidity/build/contracts/SignedSafeMath.json b/node_modules/openzeppelin-solidity/build/contracts/SignedSafeMath.json new file mode 100644 index 0000000..41497b9 --- /dev/null +++ b/node_modules/openzeppelin-solidity/build/contracts/SignedSafeMath.json @@ -0,0 +1,4735 @@ +{ + "contractName": "SignedSafeMath", + "abi": [], + "bytecode": "0x604c602c600b82828239805160001a60731460008114601c57601e565bfe5b5030600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea165627a7a7230582080ebf993e6672a54a81646ee373ddc45c718355730f5ed6cafeff4d4d372ab3f0029", + "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea165627a7a7230582080ebf993e6672a54a81646ee373ddc45c718355730f5ed6cafeff4d4d372ab3f0029", + "sourceMap": "129:1616:26:-;;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", + "deployedSourceMap": "129:1616:26:-;;;;;;;;", + "source": "pragma solidity ^0.5.0;\n\n/**\n * @title SignedSafeMath\n * @dev Signed math operations with safety checks that revert on error\n */\nlibrary SignedSafeMath {\n int256 constant private INT256_MIN = -2**255;\n\n /**\n * @dev Multiplies two signed integers, reverts on overflow.\n */\n function mul(int256 a, int256 b) internal pure returns (int256) {\n // Gas optimization: this is cheaper than requiring 'a' not being zero, but the\n // benefit is lost if 'b' is also tested.\n // See: https://github.com/OpenZeppelin/openzeppelin-solidity/pull/522\n if (a == 0) {\n return 0;\n }\n\n require(!(a == -1 && b == INT256_MIN)); // This is the only case of overflow not detected by the check below\n\n int256 c = a * b;\n require(c / a == b);\n\n return c;\n }\n\n /**\n * @dev Integer division of two signed integers truncating the quotient, reverts on division by zero.\n */\n function div(int256 a, int256 b) internal pure returns (int256) {\n require(b != 0); // Solidity only automatically asserts when dividing by 0\n require(!(b == -1 && a == INT256_MIN)); // This is the only case of overflow\n\n int256 c = a / b;\n\n return c;\n }\n\n /**\n * @dev Subtracts two signed integers, reverts on overflow.\n */\n function sub(int256 a, int256 b) internal pure returns (int256) {\n int256 c = a - b;\n require((b >= 0 && c <= a) || (b < 0 && c > a));\n\n return c;\n }\n\n /**\n * @dev Adds two signed integers, reverts on overflow.\n */\n function add(int256 a, int256 b) internal pure returns (int256) {\n int256 c = a + b;\n require((b >= 0 && c >= a) || (b < 0 && c < a));\n\n return c;\n }\n}\n", + "sourcePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/drafts/SignedSafeMath.sol", + "ast": { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/drafts/SignedSafeMath.sol", + "exportedSymbols": { + "SignedSafeMath": [ + 2634 + ] + }, + "id": 2635, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 2468, + "literals": [ + "solidity", + "^", + "0.5", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "0:23:26" + }, + { + "baseContracts": [], + "contractDependencies": [], + "contractKind": "library", + "documentation": "@title SignedSafeMath\n@dev Signed math operations with safety checks that revert on error", + "fullyImplemented": true, + "id": 2634, + "linearizedBaseContracts": [ + 2634 + ], + "name": "SignedSafeMath", + "nodeType": "ContractDefinition", + "nodes": [ + { + "constant": true, + "id": 2474, + "name": "INT256_MIN", + "nodeType": "VariableDeclaration", + "scope": 2634, + "src": "158:44:26", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "typeName": { + "id": 2469, + "name": "int256", + "nodeType": "ElementaryTypeName", + "src": "158:6:26", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "value": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_rational_minus_57896044618658097711785492504343953926634992332820282019728792003956564819968_by_1", + "typeString": "int_const -578...(70 digits omitted)...9968" + }, + "id": 2473, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2471, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "-", + "prefix": true, + "src": "195:2:26", + "subExpression": { + "argumentTypes": null, + "hexValue": "32", + "id": 2470, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "196:1:26", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + }, + "typeDescriptions": { + "typeIdentifier": "t_rational_minus_2_by_1", + "typeString": "int_const -2" + } + }, + "nodeType": "BinaryOperation", + "operator": "**", + "rightExpression": { + "argumentTypes": null, + "hexValue": "323535", + "id": 2472, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "199:3:26", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_255_by_1", + "typeString": "int_const 255" + }, + "value": "255" + }, + "src": "195:7:26", + "typeDescriptions": { + "typeIdentifier": "t_rational_minus_57896044618658097711785492504343953926634992332820282019728792003956564819968_by_1", + "typeString": "int_const -578...(70 digits omitted)...9968" + } + }, + "visibility": "private" + }, + { + "body": { + "id": 2519, + "nodeType": "Block", + "src": "352:471:26", + "statements": [ + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "id": 2485, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2483, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2476, + "src": "583:1:26", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 2484, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "588:1:26", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "583:6:26", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 2489, + "nodeType": "IfStatement", + "src": "579:45:26", + "trueBody": { + "id": 2488, + "nodeType": "Block", + "src": "591:33:26", + "statements": [ + { + "expression": { + "argumentTypes": null, + "hexValue": "30", + "id": 2486, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "612:1:26", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "functionReturnParameters": 2482, + "id": 2487, + "nodeType": "Return", + "src": "605:8:26" + } + ] + } + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2500, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "642:29:26", + "subExpression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 2498, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "id": 2494, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2491, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2476, + "src": "644:1:26", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 2493, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "-", + "prefix": true, + "src": "649:2:26", + "subExpression": { + "argumentTypes": null, + "hexValue": "31", + "id": 2492, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "650:1:26", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "typeDescriptions": { + "typeIdentifier": "t_rational_minus_1_by_1", + "typeString": "int_const -1" + } + }, + "src": "644:7:26", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "id": 2497, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2495, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2478, + "src": "655:1:26", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 2496, + "name": "INT256_MIN", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2474, + "src": "660:10:26", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "src": "655:15:26", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "644:26:26", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "id": 2499, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "643:28:26", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 2490, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6848, + 6849 + ], + "referencedDeclaration": 6848, + "src": "634:7:26", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 2501, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "634:38:26", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2502, + "nodeType": "ExpressionStatement", + "src": "634:38:26" + }, + { + "assignments": [ + 2504 + ], + "declarations": [ + { + "constant": false, + "id": 2504, + "name": "c", + "nodeType": "VariableDeclaration", + "scope": 2519, + "src": "752:8:26", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "typeName": { + "id": 2503, + "name": "int256", + "nodeType": "ElementaryTypeName", + "src": "752:6:26", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 2508, + "initialValue": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "id": 2507, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2505, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2476, + "src": "763:1:26", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "argumentTypes": null, + "id": 2506, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2478, + "src": "767:1:26", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "src": "763:5:26", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "752:16:26" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "id": 2514, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "id": 2512, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2510, + "name": "c", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2504, + "src": "786:1:26", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "argumentTypes": null, + "id": 2511, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2476, + "src": "790:1:26", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "src": "786:5:26", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 2513, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2478, + "src": "795:1:26", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "src": "786:10:26", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 2509, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6848, + 6849 + ], + "referencedDeclaration": 6848, + "src": "778:7:26", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 2515, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "778:19:26", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2516, + "nodeType": "ExpressionStatement", + "src": "778:19:26" + }, + { + "expression": { + "argumentTypes": null, + "id": 2517, + "name": "c", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2504, + "src": "815:1:26", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "functionReturnParameters": 2482, + "id": 2518, + "nodeType": "Return", + "src": "808:8:26" + } + ] + }, + "documentation": "@dev Multiplies two signed integers, reverts on overflow.", + "id": 2520, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "mul", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2479, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2476, + "name": "a", + "nodeType": "VariableDeclaration", + "scope": 2520, + "src": "301:8:26", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "typeName": { + "id": 2475, + "name": "int256", + "nodeType": "ElementaryTypeName", + "src": "301:6:26", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2478, + "name": "b", + "nodeType": "VariableDeclaration", + "scope": 2520, + "src": "311:8:26", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "typeName": { + "id": 2477, + "name": "int256", + "nodeType": "ElementaryTypeName", + "src": "311:6:26", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "300:20:26" + }, + "returnParameters": { + "id": 2482, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2481, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 2520, + "src": "344:6:26", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "typeName": { + "id": 2480, + "name": "int256", + "nodeType": "ElementaryTypeName", + "src": "344:6:26", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "343:8:26" + }, + "scope": 2634, + "src": "288:535:26", + "stateMutability": "pure", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 2556, + "nodeType": "Block", + "src": "1013:221:26", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "id": 2532, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2530, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2524, + "src": "1031:1:26", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 2531, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1036:1:26", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "1031:6:26", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 2529, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6848, + 6849 + ], + "referencedDeclaration": 6848, + "src": "1023:7:26", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 2533, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1023:15:26", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2534, + "nodeType": "ExpressionStatement", + "src": "1023:15:26" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2545, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "1114:29:26", + "subExpression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 2543, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "id": 2539, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2536, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2524, + "src": "1116:1:26", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 2538, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "-", + "prefix": true, + "src": "1121:2:26", + "subExpression": { + "argumentTypes": null, + "hexValue": "31", + "id": 2537, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1122:1:26", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "typeDescriptions": { + "typeIdentifier": "t_rational_minus_1_by_1", + "typeString": "int_const -1" + } + }, + "src": "1116:7:26", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "id": 2542, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2540, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2522, + "src": "1127:1:26", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 2541, + "name": "INT256_MIN", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2474, + "src": "1132:10:26", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "src": "1127:15:26", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "1116:26:26", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "id": 2544, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "1115:28:26", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 2535, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6848, + 6849 + ], + "referencedDeclaration": 6848, + "src": "1106:7:26", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 2546, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1106:38:26", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2547, + "nodeType": "ExpressionStatement", + "src": "1106:38:26" + }, + { + "assignments": [ + 2549 + ], + "declarations": [ + { + "constant": false, + "id": 2549, + "name": "c", + "nodeType": "VariableDeclaration", + "scope": 2556, + "src": "1192:8:26", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "typeName": { + "id": 2548, + "name": "int256", + "nodeType": "ElementaryTypeName", + "src": "1192:6:26", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 2553, + "initialValue": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "id": 2552, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2550, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2522, + "src": "1203:1:26", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "argumentTypes": null, + "id": 2551, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2524, + "src": "1207:1:26", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "src": "1203:5:26", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "1192:16:26" + }, + { + "expression": { + "argumentTypes": null, + "id": 2554, + "name": "c", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2549, + "src": "1226:1:26", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "functionReturnParameters": 2528, + "id": 2555, + "nodeType": "Return", + "src": "1219:8:26" + } + ] + }, + "documentation": "@dev Integer division of two signed integers truncating the quotient, reverts on division by zero.", + "id": 2557, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "div", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2525, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2522, + "name": "a", + "nodeType": "VariableDeclaration", + "scope": 2557, + "src": "962:8:26", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "typeName": { + "id": 2521, + "name": "int256", + "nodeType": "ElementaryTypeName", + "src": "962:6:26", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2524, + "name": "b", + "nodeType": "VariableDeclaration", + "scope": 2557, + "src": "972:8:26", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "typeName": { + "id": 2523, + "name": "int256", + "nodeType": "ElementaryTypeName", + "src": "972:6:26", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "961:20:26" + }, + "returnParameters": { + "id": 2528, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2527, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 2557, + "src": "1005:6:26", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "typeName": { + "id": 2526, + "name": "int256", + "nodeType": "ElementaryTypeName", + "src": "1005:6:26", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1004:8:26" + }, + "scope": 2634, + "src": "949:285:26", + "stateMutability": "pure", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 2594, + "nodeType": "Block", + "src": "1382:109:26", + "statements": [ + { + "assignments": [ + 2567 + ], + "declarations": [ + { + "constant": false, + "id": 2567, + "name": "c", + "nodeType": "VariableDeclaration", + "scope": 2594, + "src": "1392:8:26", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "typeName": { + "id": 2566, + "name": "int256", + "nodeType": "ElementaryTypeName", + "src": "1392:6:26", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 2571, + "initialValue": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "id": 2570, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2568, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2559, + "src": "1403:1:26", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "argumentTypes": null, + "id": 2569, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2561, + "src": "1407:1:26", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "src": "1403:5:26", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "1392:16:26" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 2589, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 2579, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "id": 2575, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2573, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2561, + "src": "1427:1:26", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 2574, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1432:1:26", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "1427:6:26", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "id": 2578, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2576, + "name": "c", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2567, + "src": "1437:1:26", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<=", + "rightExpression": { + "argumentTypes": null, + "id": 2577, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2559, + "src": "1442:1:26", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "src": "1437:6:26", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "1427:16:26", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "id": 2580, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "1426:18:26", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 2587, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "id": 2583, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2581, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2561, + "src": "1449:1:26", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 2582, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1453:1:26", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "1449:5:26", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "id": 2586, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2584, + "name": "c", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2567, + "src": "1458:1:26", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "id": 2585, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2559, + "src": "1462:1:26", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "src": "1458:5:26", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "1449:14:26", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "id": 2588, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "1448:16:26", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "1426:38:26", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 2572, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6848, + 6849 + ], + "referencedDeclaration": 6848, + "src": "1418:7:26", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 2590, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1418:47:26", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2591, + "nodeType": "ExpressionStatement", + "src": "1418:47:26" + }, + { + "expression": { + "argumentTypes": null, + "id": 2592, + "name": "c", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2567, + "src": "1483:1:26", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "functionReturnParameters": 2565, + "id": 2593, + "nodeType": "Return", + "src": "1476:8:26" + } + ] + }, + "documentation": "@dev Subtracts two signed integers, reverts on overflow.", + "id": 2595, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "sub", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2562, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2559, + "name": "a", + "nodeType": "VariableDeclaration", + "scope": 2595, + "src": "1331:8:26", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "typeName": { + "id": 2558, + "name": "int256", + "nodeType": "ElementaryTypeName", + "src": "1331:6:26", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2561, + "name": "b", + "nodeType": "VariableDeclaration", + "scope": 2595, + "src": "1341:8:26", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "typeName": { + "id": 2560, + "name": "int256", + "nodeType": "ElementaryTypeName", + "src": "1341:6:26", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1330:20:26" + }, + "returnParameters": { + "id": 2565, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2564, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 2595, + "src": "1374:6:26", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "typeName": { + "id": 2563, + "name": "int256", + "nodeType": "ElementaryTypeName", + "src": "1374:6:26", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1373:8:26" + }, + "scope": 2634, + "src": "1318:173:26", + "stateMutability": "pure", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 2632, + "nodeType": "Block", + "src": "1634:109:26", + "statements": [ + { + "assignments": [ + 2605 + ], + "declarations": [ + { + "constant": false, + "id": 2605, + "name": "c", + "nodeType": "VariableDeclaration", + "scope": 2632, + "src": "1644:8:26", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "typeName": { + "id": 2604, + "name": "int256", + "nodeType": "ElementaryTypeName", + "src": "1644:6:26", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 2609, + "initialValue": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "id": 2608, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2606, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2597, + "src": "1655:1:26", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "argumentTypes": null, + "id": 2607, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2599, + "src": "1659:1:26", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "src": "1655:5:26", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "1644:16:26" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 2627, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 2617, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "id": 2613, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2611, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2599, + "src": "1679:1:26", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 2612, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1684:1:26", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "1679:6:26", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "id": 2616, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2614, + "name": "c", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2605, + "src": "1689:1:26", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "argumentTypes": null, + "id": 2615, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2597, + "src": "1694:1:26", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "src": "1689:6:26", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "1679:16:26", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "id": 2618, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "1678:18:26", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 2625, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "id": 2621, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2619, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2599, + "src": "1701:1:26", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 2620, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1705:1:26", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "1701:5:26", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "id": 2624, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2622, + "name": "c", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2605, + "src": "1710:1:26", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "argumentTypes": null, + "id": 2623, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2597, + "src": "1714:1:26", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "src": "1710:5:26", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "1701:14:26", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "id": 2626, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "1700:16:26", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "1678:38:26", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 2610, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6848, + 6849 + ], + "referencedDeclaration": 6848, + "src": "1670:7:26", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 2628, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1670:47:26", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2629, + "nodeType": "ExpressionStatement", + "src": "1670:47:26" + }, + { + "expression": { + "argumentTypes": null, + "id": 2630, + "name": "c", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2605, + "src": "1735:1:26", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "functionReturnParameters": 2603, + "id": 2631, + "nodeType": "Return", + "src": "1728:8:26" + } + ] + }, + "documentation": "@dev Adds two signed integers, reverts on overflow.", + "id": 2633, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "add", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2600, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2597, + "name": "a", + "nodeType": "VariableDeclaration", + "scope": 2633, + "src": "1583:8:26", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "typeName": { + "id": 2596, + "name": "int256", + "nodeType": "ElementaryTypeName", + "src": "1583:6:26", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2599, + "name": "b", + "nodeType": "VariableDeclaration", + "scope": 2633, + "src": "1593:8:26", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "typeName": { + "id": 2598, + "name": "int256", + "nodeType": "ElementaryTypeName", + "src": "1593:6:26", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1582:20:26" + }, + "returnParameters": { + "id": 2603, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2602, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 2633, + "src": "1626:6:26", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "typeName": { + "id": 2601, + "name": "int256", + "nodeType": "ElementaryTypeName", + "src": "1626:6:26", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1625:8:26" + }, + "scope": 2634, + "src": "1570:173:26", + "stateMutability": "pure", + "superFunction": null, + "visibility": "internal" + } + ], + "scope": 2635, + "src": "129:1616:26" + } + ], + "src": "0:1746:26" + }, + "legacyAST": { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/drafts/SignedSafeMath.sol", + "exportedSymbols": { + "SignedSafeMath": [ + 2634 + ] + }, + "id": 2635, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 2468, + "literals": [ + "solidity", + "^", + "0.5", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "0:23:26" + }, + { + "baseContracts": [], + "contractDependencies": [], + "contractKind": "library", + "documentation": "@title SignedSafeMath\n@dev Signed math operations with safety checks that revert on error", + "fullyImplemented": true, + "id": 2634, + "linearizedBaseContracts": [ + 2634 + ], + "name": "SignedSafeMath", + "nodeType": "ContractDefinition", + "nodes": [ + { + "constant": true, + "id": 2474, + "name": "INT256_MIN", + "nodeType": "VariableDeclaration", + "scope": 2634, + "src": "158:44:26", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "typeName": { + "id": 2469, + "name": "int256", + "nodeType": "ElementaryTypeName", + "src": "158:6:26", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "value": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_rational_minus_57896044618658097711785492504343953926634992332820282019728792003956564819968_by_1", + "typeString": "int_const -578...(70 digits omitted)...9968" + }, + "id": 2473, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2471, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "-", + "prefix": true, + "src": "195:2:26", + "subExpression": { + "argumentTypes": null, + "hexValue": "32", + "id": 2470, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "196:1:26", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + }, + "typeDescriptions": { + "typeIdentifier": "t_rational_minus_2_by_1", + "typeString": "int_const -2" + } + }, + "nodeType": "BinaryOperation", + "operator": "**", + "rightExpression": { + "argumentTypes": null, + "hexValue": "323535", + "id": 2472, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "199:3:26", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_255_by_1", + "typeString": "int_const 255" + }, + "value": "255" + }, + "src": "195:7:26", + "typeDescriptions": { + "typeIdentifier": "t_rational_minus_57896044618658097711785492504343953926634992332820282019728792003956564819968_by_1", + "typeString": "int_const -578...(70 digits omitted)...9968" + } + }, + "visibility": "private" + }, + { + "body": { + "id": 2519, + "nodeType": "Block", + "src": "352:471:26", + "statements": [ + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "id": 2485, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2483, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2476, + "src": "583:1:26", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 2484, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "588:1:26", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "583:6:26", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 2489, + "nodeType": "IfStatement", + "src": "579:45:26", + "trueBody": { + "id": 2488, + "nodeType": "Block", + "src": "591:33:26", + "statements": [ + { + "expression": { + "argumentTypes": null, + "hexValue": "30", + "id": 2486, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "612:1:26", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "functionReturnParameters": 2482, + "id": 2487, + "nodeType": "Return", + "src": "605:8:26" + } + ] + } + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2500, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "642:29:26", + "subExpression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 2498, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "id": 2494, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2491, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2476, + "src": "644:1:26", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 2493, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "-", + "prefix": true, + "src": "649:2:26", + "subExpression": { + "argumentTypes": null, + "hexValue": "31", + "id": 2492, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "650:1:26", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "typeDescriptions": { + "typeIdentifier": "t_rational_minus_1_by_1", + "typeString": "int_const -1" + } + }, + "src": "644:7:26", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "id": 2497, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2495, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2478, + "src": "655:1:26", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 2496, + "name": "INT256_MIN", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2474, + "src": "660:10:26", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "src": "655:15:26", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "644:26:26", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "id": 2499, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "643:28:26", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 2490, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6848, + 6849 + ], + "referencedDeclaration": 6848, + "src": "634:7:26", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 2501, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "634:38:26", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2502, + "nodeType": "ExpressionStatement", + "src": "634:38:26" + }, + { + "assignments": [ + 2504 + ], + "declarations": [ + { + "constant": false, + "id": 2504, + "name": "c", + "nodeType": "VariableDeclaration", + "scope": 2519, + "src": "752:8:26", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "typeName": { + "id": 2503, + "name": "int256", + "nodeType": "ElementaryTypeName", + "src": "752:6:26", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 2508, + "initialValue": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "id": 2507, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2505, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2476, + "src": "763:1:26", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "argumentTypes": null, + "id": 2506, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2478, + "src": "767:1:26", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "src": "763:5:26", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "752:16:26" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "id": 2514, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "id": 2512, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2510, + "name": "c", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2504, + "src": "786:1:26", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "argumentTypes": null, + "id": 2511, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2476, + "src": "790:1:26", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "src": "786:5:26", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 2513, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2478, + "src": "795:1:26", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "src": "786:10:26", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 2509, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6848, + 6849 + ], + "referencedDeclaration": 6848, + "src": "778:7:26", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 2515, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "778:19:26", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2516, + "nodeType": "ExpressionStatement", + "src": "778:19:26" + }, + { + "expression": { + "argumentTypes": null, + "id": 2517, + "name": "c", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2504, + "src": "815:1:26", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "functionReturnParameters": 2482, + "id": 2518, + "nodeType": "Return", + "src": "808:8:26" + } + ] + }, + "documentation": "@dev Multiplies two signed integers, reverts on overflow.", + "id": 2520, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "mul", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2479, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2476, + "name": "a", + "nodeType": "VariableDeclaration", + "scope": 2520, + "src": "301:8:26", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "typeName": { + "id": 2475, + "name": "int256", + "nodeType": "ElementaryTypeName", + "src": "301:6:26", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2478, + "name": "b", + "nodeType": "VariableDeclaration", + "scope": 2520, + "src": "311:8:26", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "typeName": { + "id": 2477, + "name": "int256", + "nodeType": "ElementaryTypeName", + "src": "311:6:26", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "300:20:26" + }, + "returnParameters": { + "id": 2482, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2481, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 2520, + "src": "344:6:26", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "typeName": { + "id": 2480, + "name": "int256", + "nodeType": "ElementaryTypeName", + "src": "344:6:26", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "343:8:26" + }, + "scope": 2634, + "src": "288:535:26", + "stateMutability": "pure", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 2556, + "nodeType": "Block", + "src": "1013:221:26", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "id": 2532, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2530, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2524, + "src": "1031:1:26", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 2531, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1036:1:26", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "1031:6:26", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 2529, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6848, + 6849 + ], + "referencedDeclaration": 6848, + "src": "1023:7:26", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 2533, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1023:15:26", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2534, + "nodeType": "ExpressionStatement", + "src": "1023:15:26" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2545, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "1114:29:26", + "subExpression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 2543, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "id": 2539, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2536, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2524, + "src": "1116:1:26", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 2538, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "-", + "prefix": true, + "src": "1121:2:26", + "subExpression": { + "argumentTypes": null, + "hexValue": "31", + "id": 2537, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1122:1:26", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "typeDescriptions": { + "typeIdentifier": "t_rational_minus_1_by_1", + "typeString": "int_const -1" + } + }, + "src": "1116:7:26", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "id": 2542, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2540, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2522, + "src": "1127:1:26", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 2541, + "name": "INT256_MIN", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2474, + "src": "1132:10:26", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "src": "1127:15:26", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "1116:26:26", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "id": 2544, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "1115:28:26", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 2535, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6848, + 6849 + ], + "referencedDeclaration": 6848, + "src": "1106:7:26", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 2546, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1106:38:26", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2547, + "nodeType": "ExpressionStatement", + "src": "1106:38:26" + }, + { + "assignments": [ + 2549 + ], + "declarations": [ + { + "constant": false, + "id": 2549, + "name": "c", + "nodeType": "VariableDeclaration", + "scope": 2556, + "src": "1192:8:26", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "typeName": { + "id": 2548, + "name": "int256", + "nodeType": "ElementaryTypeName", + "src": "1192:6:26", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 2553, + "initialValue": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "id": 2552, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2550, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2522, + "src": "1203:1:26", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "argumentTypes": null, + "id": 2551, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2524, + "src": "1207:1:26", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "src": "1203:5:26", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "1192:16:26" + }, + { + "expression": { + "argumentTypes": null, + "id": 2554, + "name": "c", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2549, + "src": "1226:1:26", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "functionReturnParameters": 2528, + "id": 2555, + "nodeType": "Return", + "src": "1219:8:26" + } + ] + }, + "documentation": "@dev Integer division of two signed integers truncating the quotient, reverts on division by zero.", + "id": 2557, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "div", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2525, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2522, + "name": "a", + "nodeType": "VariableDeclaration", + "scope": 2557, + "src": "962:8:26", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "typeName": { + "id": 2521, + "name": "int256", + "nodeType": "ElementaryTypeName", + "src": "962:6:26", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2524, + "name": "b", + "nodeType": "VariableDeclaration", + "scope": 2557, + "src": "972:8:26", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "typeName": { + "id": 2523, + "name": "int256", + "nodeType": "ElementaryTypeName", + "src": "972:6:26", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "961:20:26" + }, + "returnParameters": { + "id": 2528, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2527, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 2557, + "src": "1005:6:26", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "typeName": { + "id": 2526, + "name": "int256", + "nodeType": "ElementaryTypeName", + "src": "1005:6:26", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1004:8:26" + }, + "scope": 2634, + "src": "949:285:26", + "stateMutability": "pure", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 2594, + "nodeType": "Block", + "src": "1382:109:26", + "statements": [ + { + "assignments": [ + 2567 + ], + "declarations": [ + { + "constant": false, + "id": 2567, + "name": "c", + "nodeType": "VariableDeclaration", + "scope": 2594, + "src": "1392:8:26", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "typeName": { + "id": 2566, + "name": "int256", + "nodeType": "ElementaryTypeName", + "src": "1392:6:26", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 2571, + "initialValue": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "id": 2570, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2568, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2559, + "src": "1403:1:26", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "argumentTypes": null, + "id": 2569, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2561, + "src": "1407:1:26", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "src": "1403:5:26", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "1392:16:26" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 2589, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 2579, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "id": 2575, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2573, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2561, + "src": "1427:1:26", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 2574, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1432:1:26", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "1427:6:26", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "id": 2578, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2576, + "name": "c", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2567, + "src": "1437:1:26", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<=", + "rightExpression": { + "argumentTypes": null, + "id": 2577, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2559, + "src": "1442:1:26", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "src": "1437:6:26", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "1427:16:26", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "id": 2580, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "1426:18:26", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 2587, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "id": 2583, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2581, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2561, + "src": "1449:1:26", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 2582, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1453:1:26", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "1449:5:26", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "id": 2586, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2584, + "name": "c", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2567, + "src": "1458:1:26", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "id": 2585, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2559, + "src": "1462:1:26", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "src": "1458:5:26", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "1449:14:26", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "id": 2588, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "1448:16:26", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "1426:38:26", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 2572, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6848, + 6849 + ], + "referencedDeclaration": 6848, + "src": "1418:7:26", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 2590, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1418:47:26", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2591, + "nodeType": "ExpressionStatement", + "src": "1418:47:26" + }, + { + "expression": { + "argumentTypes": null, + "id": 2592, + "name": "c", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2567, + "src": "1483:1:26", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "functionReturnParameters": 2565, + "id": 2593, + "nodeType": "Return", + "src": "1476:8:26" + } + ] + }, + "documentation": "@dev Subtracts two signed integers, reverts on overflow.", + "id": 2595, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "sub", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2562, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2559, + "name": "a", + "nodeType": "VariableDeclaration", + "scope": 2595, + "src": "1331:8:26", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "typeName": { + "id": 2558, + "name": "int256", + "nodeType": "ElementaryTypeName", + "src": "1331:6:26", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2561, + "name": "b", + "nodeType": "VariableDeclaration", + "scope": 2595, + "src": "1341:8:26", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "typeName": { + "id": 2560, + "name": "int256", + "nodeType": "ElementaryTypeName", + "src": "1341:6:26", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1330:20:26" + }, + "returnParameters": { + "id": 2565, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2564, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 2595, + "src": "1374:6:26", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "typeName": { + "id": 2563, + "name": "int256", + "nodeType": "ElementaryTypeName", + "src": "1374:6:26", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1373:8:26" + }, + "scope": 2634, + "src": "1318:173:26", + "stateMutability": "pure", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 2632, + "nodeType": "Block", + "src": "1634:109:26", + "statements": [ + { + "assignments": [ + 2605 + ], + "declarations": [ + { + "constant": false, + "id": 2605, + "name": "c", + "nodeType": "VariableDeclaration", + "scope": 2632, + "src": "1644:8:26", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "typeName": { + "id": 2604, + "name": "int256", + "nodeType": "ElementaryTypeName", + "src": "1644:6:26", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 2609, + "initialValue": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "id": 2608, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2606, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2597, + "src": "1655:1:26", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "argumentTypes": null, + "id": 2607, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2599, + "src": "1659:1:26", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "src": "1655:5:26", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "1644:16:26" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 2627, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 2617, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "id": 2613, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2611, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2599, + "src": "1679:1:26", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 2612, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1684:1:26", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "1679:6:26", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "id": 2616, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2614, + "name": "c", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2605, + "src": "1689:1:26", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "argumentTypes": null, + "id": 2615, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2597, + "src": "1694:1:26", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "src": "1689:6:26", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "1679:16:26", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "id": 2618, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "1678:18:26", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 2625, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "id": 2621, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2619, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2599, + "src": "1701:1:26", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 2620, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1705:1:26", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "1701:5:26", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "id": 2624, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2622, + "name": "c", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2605, + "src": "1710:1:26", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "argumentTypes": null, + "id": 2623, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2597, + "src": "1714:1:26", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "src": "1710:5:26", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "1701:14:26", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "id": 2626, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "1700:16:26", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "1678:38:26", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 2610, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6848, + 6849 + ], + "referencedDeclaration": 6848, + "src": "1670:7:26", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 2628, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1670:47:26", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2629, + "nodeType": "ExpressionStatement", + "src": "1670:47:26" + }, + { + "expression": { + "argumentTypes": null, + "id": 2630, + "name": "c", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2605, + "src": "1735:1:26", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "functionReturnParameters": 2603, + "id": 2631, + "nodeType": "Return", + "src": "1728:8:26" + } + ] + }, + "documentation": "@dev Adds two signed integers, reverts on overflow.", + "id": 2633, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "add", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2600, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2597, + "name": "a", + "nodeType": "VariableDeclaration", + "scope": 2633, + "src": "1583:8:26", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "typeName": { + "id": 2596, + "name": "int256", + "nodeType": "ElementaryTypeName", + "src": "1583:6:26", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2599, + "name": "b", + "nodeType": "VariableDeclaration", + "scope": 2633, + "src": "1593:8:26", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "typeName": { + "id": 2598, + "name": "int256", + "nodeType": "ElementaryTypeName", + "src": "1593:6:26", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1582:20:26" + }, + "returnParameters": { + "id": 2603, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2602, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 2633, + "src": "1626:6:26", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "typeName": { + "id": 2601, + "name": "int256", + "nodeType": "ElementaryTypeName", + "src": "1626:6:26", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1625:8:26" + }, + "scope": 2634, + "src": "1570:173:26", + "stateMutability": "pure", + "superFunction": null, + "visibility": "internal" + } + ], + "scope": 2635, + "src": "129:1616:26" + } + ], + "src": "0:1746:26" + }, + "compiler": { + "name": "solc", + "version": "0.5.0+commit.1d4f565a.Emscripten.clang" + }, + "networks": {}, + "schemaVersion": "3.0.0", + "updatedAt": "2019-01-04T21:44:02.878Z", + "devdoc": { + "details": "Signed math operations with safety checks that revert on error", + "methods": {}, + "title": "SignedSafeMath" + }, + "userdoc": { + "methods": {} + } +} \ No newline at end of file diff --git a/node_modules/openzeppelin-solidity/build/contracts/SignerRole.json b/node_modules/openzeppelin-solidity/build/contracts/SignerRole.json new file mode 100644 index 0000000..c8337b9 --- /dev/null +++ b/node_modules/openzeppelin-solidity/build/contracts/SignerRole.json @@ -0,0 +1,2496 @@ +{ + "contractName": "SignerRole", + "abi": [ + { + "inputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "account", + "type": "address" + } + ], + "name": "SignerAdded", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "account", + "type": "address" + } + ], + "name": "SignerRemoved", + "type": "event" + }, + { + "constant": true, + "inputs": [ + { + "name": "account", + "type": "address" + } + ], + "name": "isSigner", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "account", + "type": "address" + } + ], + "name": "addSigner", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [], + "name": "renounceSigner", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "sourceMap": "", + "deployedSourceMap": "", + "source": "pragma solidity ^0.5.0;\n\nimport \"../Roles.sol\";\n\ncontract SignerRole {\n using Roles for Roles.Role;\n\n event SignerAdded(address indexed account);\n event SignerRemoved(address indexed account);\n\n Roles.Role private _signers;\n\n constructor () internal {\n _addSigner(msg.sender);\n }\n\n modifier onlySigner() {\n require(isSigner(msg.sender));\n _;\n }\n\n function isSigner(address account) public view returns (bool) {\n return _signers.has(account);\n }\n\n function addSigner(address account) public onlySigner {\n _addSigner(account);\n }\n\n function renounceSigner() public {\n _removeSigner(msg.sender);\n }\n\n function _addSigner(address account) internal {\n _signers.add(account);\n emit SignerAdded(account);\n }\n\n function _removeSigner(address account) internal {\n _signers.remove(account);\n emit SignerRemoved(account);\n }\n}\n", + "sourcePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/access/roles/SignerRole.sol", + "ast": { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/access/roles/SignerRole.sol", + "exportedSymbols": { + "SignerRole": [ + 505 + ] + }, + "id": 506, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 404, + "literals": [ + "solidity", + "^", + "0.5", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "0:23:4" + }, + { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/access/Roles.sol", + "file": "../Roles.sol", + "id": 405, + "nodeType": "ImportDirective", + "scope": 506, + "sourceUnit": 94, + "src": "25:22:4", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [], + "contractDependencies": [], + "contractKind": "contract", + "documentation": null, + "fullyImplemented": true, + "id": 505, + "linearizedBaseContracts": [ + 505 + ], + "name": "SignerRole", + "nodeType": "ContractDefinition", + "nodes": [ + { + "id": 408, + "libraryName": { + "contractScope": null, + "id": 406, + "name": "Roles", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 93, + "src": "81:5:4", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Roles_$93", + "typeString": "library Roles" + } + }, + "nodeType": "UsingForDirective", + "src": "75:27:4", + "typeName": { + "contractScope": null, + "id": 407, + "name": "Roles.Role", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 6, + "src": "91:10:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$6_storage_ptr", + "typeString": "struct Roles.Role" + } + } + }, + { + "anonymous": false, + "documentation": null, + "id": 412, + "name": "SignerAdded", + "nodeType": "EventDefinition", + "parameters": { + "id": 411, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 410, + "indexed": true, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 412, + "src": "126:23:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 409, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "126:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "125:25:4" + }, + "src": "108:43:4" + }, + { + "anonymous": false, + "documentation": null, + "id": 416, + "name": "SignerRemoved", + "nodeType": "EventDefinition", + "parameters": { + "id": 415, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 414, + "indexed": true, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 416, + "src": "176:23:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 413, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "176:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "175:25:4" + }, + "src": "156:45:4" + }, + { + "constant": false, + "id": 418, + "name": "_signers", + "nodeType": "VariableDeclaration", + "scope": 505, + "src": "207:27:4", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$6_storage", + "typeString": "struct Roles.Role" + }, + "typeName": { + "contractScope": null, + "id": 417, + "name": "Roles.Role", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 6, + "src": "207:10:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$6_storage_ptr", + "typeString": "struct Roles.Role" + } + }, + "value": null, + "visibility": "private" + }, + { + "body": { + "id": 426, + "nodeType": "Block", + "src": "265:39:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 422, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6845, + "src": "286:3:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 423, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "286:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "id": 421, + "name": "_addSigner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 488, + "src": "275:10:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 424, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "275:22:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 425, + "nodeType": "ExpressionStatement", + "src": "275:22:4" + } + ] + }, + "documentation": null, + "id": 427, + "implemented": true, + "kind": "constructor", + "modifiers": [], + "name": "", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 419, + "nodeType": "ParameterList", + "parameters": [], + "src": "253:2:4" + }, + "returnParameters": { + "id": 420, + "nodeType": "ParameterList", + "parameters": [], + "src": "265:0:4" + }, + "scope": 505, + "src": "241:63:4", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 437, + "nodeType": "Block", + "src": "332:57:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 431, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6845, + "src": "359:3:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 432, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "359:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "id": 430, + "name": "isSigner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 451, + "src": "350:8:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$", + "typeString": "function (address) view returns (bool)" + } + }, + "id": 433, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "350:20:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 429, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6848, + 6849 + ], + "referencedDeclaration": 6848, + "src": "342:7:4", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 434, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "342:29:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 435, + "nodeType": "ExpressionStatement", + "src": "342:29:4" + }, + { + "id": 436, + "nodeType": "PlaceholderStatement", + "src": "381:1:4" + } + ] + }, + "documentation": null, + "id": 438, + "name": "onlySigner", + "nodeType": "ModifierDefinition", + "parameters": { + "id": 428, + "nodeType": "ParameterList", + "parameters": [], + "src": "329:2:4" + }, + "src": "310:79:4", + "visibility": "internal" + }, + { + "body": { + "id": 450, + "nodeType": "Block", + "src": "457:45:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 447, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 440, + "src": "487:7:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 445, + "name": "_signers", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 418, + "src": "474:8:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$6_storage", + "typeString": "struct Roles.Role storage ref" + } + }, + "id": 446, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "has", + "nodeType": "MemberAccess", + "referencedDeclaration": 92, + "src": "474:12:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_Role_$6_storage_ptr_$_t_address_$returns$_t_bool_$bound_to$_t_struct$_Role_$6_storage_ptr_$", + "typeString": "function (struct Roles.Role storage pointer,address) view returns (bool)" + } + }, + "id": 448, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "474:21:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 444, + "id": 449, + "nodeType": "Return", + "src": "467:28:4" + } + ] + }, + "documentation": null, + "id": 451, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "isSigner", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 441, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 440, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 451, + "src": "413:15:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 439, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "413:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "412:17:4" + }, + "returnParameters": { + "id": 444, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 443, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 451, + "src": "451:4:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 442, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "451:4:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "450:6:4" + }, + "scope": 505, + "src": "395:107:4", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 462, + "nodeType": "Block", + "src": "562:36:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 459, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 453, + "src": "583:7:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 458, + "name": "_addSigner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 488, + "src": "572:10:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 460, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "572:19:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 461, + "nodeType": "ExpressionStatement", + "src": "572:19:4" + } + ] + }, + "documentation": null, + "id": 463, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": null, + "id": 456, + "modifierName": { + "argumentTypes": null, + "id": 455, + "name": "onlySigner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 438, + "src": "551:10:4", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "551:10:4" + } + ], + "name": "addSigner", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 454, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 453, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 463, + "src": "527:15:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 452, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "527:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "526:17:4" + }, + "returnParameters": { + "id": 457, + "nodeType": "ParameterList", + "parameters": [], + "src": "562:0:4" + }, + "scope": 505, + "src": "508:90:4", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 471, + "nodeType": "Block", + "src": "637:42:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 467, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6845, + "src": "661:3:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 468, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "661:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "id": 466, + "name": "_removeSigner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 504, + "src": "647:13:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 469, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "647:25:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 470, + "nodeType": "ExpressionStatement", + "src": "647:25:4" + } + ] + }, + "documentation": null, + "id": 472, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "renounceSigner", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 464, + "nodeType": "ParameterList", + "parameters": [], + "src": "627:2:4" + }, + "returnParameters": { + "id": 465, + "nodeType": "ParameterList", + "parameters": [], + "src": "637:0:4" + }, + "scope": 505, + "src": "604:75:4", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 487, + "nodeType": "Block", + "src": "731:73:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 480, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 474, + "src": "754:7:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 477, + "name": "_signers", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 418, + "src": "741:8:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$6_storage", + "typeString": "struct Roles.Role storage ref" + } + }, + "id": 479, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 38, + "src": "741:12:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Role_$6_storage_ptr_$_t_address_$returns$__$bound_to$_t_struct$_Role_$6_storage_ptr_$", + "typeString": "function (struct Roles.Role storage pointer,address)" + } + }, + "id": 481, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "741:21:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 482, + "nodeType": "ExpressionStatement", + "src": "741:21:4" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 484, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 474, + "src": "789:7:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 483, + "name": "SignerAdded", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 412, + "src": "777:11:4", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 485, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "777:20:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 486, + "nodeType": "EmitStatement", + "src": "772:25:4" + } + ] + }, + "documentation": null, + "id": 488, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_addSigner", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 475, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 474, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 488, + "src": "705:15:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 473, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "705:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "704:17:4" + }, + "returnParameters": { + "id": 476, + "nodeType": "ParameterList", + "parameters": [], + "src": "731:0:4" + }, + "scope": 505, + "src": "685:119:4", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 503, + "nodeType": "Block", + "src": "859:78:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 496, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 490, + "src": "885:7:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 493, + "name": "_signers", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 418, + "src": "869:8:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$6_storage", + "typeString": "struct Roles.Role storage ref" + } + }, + "id": 495, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "remove", + "nodeType": "MemberAccess", + "referencedDeclaration": 69, + "src": "869:15:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Role_$6_storage_ptr_$_t_address_$returns$__$bound_to$_t_struct$_Role_$6_storage_ptr_$", + "typeString": "function (struct Roles.Role storage pointer,address)" + } + }, + "id": 497, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "869:24:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 498, + "nodeType": "ExpressionStatement", + "src": "869:24:4" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 500, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 490, + "src": "922:7:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 499, + "name": "SignerRemoved", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 416, + "src": "908:13:4", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 501, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "908:22:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 502, + "nodeType": "EmitStatement", + "src": "903:27:4" + } + ] + }, + "documentation": null, + "id": 504, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_removeSigner", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 491, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 490, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 504, + "src": "833:15:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 489, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "833:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "832:17:4" + }, + "returnParameters": { + "id": 492, + "nodeType": "ParameterList", + "parameters": [], + "src": "859:0:4" + }, + "scope": 505, + "src": "810:127:4", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + } + ], + "scope": 506, + "src": "49:890:4" + } + ], + "src": "0:940:4" + }, + "legacyAST": { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/access/roles/SignerRole.sol", + "exportedSymbols": { + "SignerRole": [ + 505 + ] + }, + "id": 506, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 404, + "literals": [ + "solidity", + "^", + "0.5", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "0:23:4" + }, + { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/access/Roles.sol", + "file": "../Roles.sol", + "id": 405, + "nodeType": "ImportDirective", + "scope": 506, + "sourceUnit": 94, + "src": "25:22:4", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [], + "contractDependencies": [], + "contractKind": "contract", + "documentation": null, + "fullyImplemented": true, + "id": 505, + "linearizedBaseContracts": [ + 505 + ], + "name": "SignerRole", + "nodeType": "ContractDefinition", + "nodes": [ + { + "id": 408, + "libraryName": { + "contractScope": null, + "id": 406, + "name": "Roles", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 93, + "src": "81:5:4", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Roles_$93", + "typeString": "library Roles" + } + }, + "nodeType": "UsingForDirective", + "src": "75:27:4", + "typeName": { + "contractScope": null, + "id": 407, + "name": "Roles.Role", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 6, + "src": "91:10:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$6_storage_ptr", + "typeString": "struct Roles.Role" + } + } + }, + { + "anonymous": false, + "documentation": null, + "id": 412, + "name": "SignerAdded", + "nodeType": "EventDefinition", + "parameters": { + "id": 411, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 410, + "indexed": true, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 412, + "src": "126:23:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 409, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "126:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "125:25:4" + }, + "src": "108:43:4" + }, + { + "anonymous": false, + "documentation": null, + "id": 416, + "name": "SignerRemoved", + "nodeType": "EventDefinition", + "parameters": { + "id": 415, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 414, + "indexed": true, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 416, + "src": "176:23:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 413, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "176:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "175:25:4" + }, + "src": "156:45:4" + }, + { + "constant": false, + "id": 418, + "name": "_signers", + "nodeType": "VariableDeclaration", + "scope": 505, + "src": "207:27:4", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$6_storage", + "typeString": "struct Roles.Role" + }, + "typeName": { + "contractScope": null, + "id": 417, + "name": "Roles.Role", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 6, + "src": "207:10:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$6_storage_ptr", + "typeString": "struct Roles.Role" + } + }, + "value": null, + "visibility": "private" + }, + { + "body": { + "id": 426, + "nodeType": "Block", + "src": "265:39:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 422, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6845, + "src": "286:3:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 423, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "286:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "id": 421, + "name": "_addSigner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 488, + "src": "275:10:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 424, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "275:22:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 425, + "nodeType": "ExpressionStatement", + "src": "275:22:4" + } + ] + }, + "documentation": null, + "id": 427, + "implemented": true, + "kind": "constructor", + "modifiers": [], + "name": "", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 419, + "nodeType": "ParameterList", + "parameters": [], + "src": "253:2:4" + }, + "returnParameters": { + "id": 420, + "nodeType": "ParameterList", + "parameters": [], + "src": "265:0:4" + }, + "scope": 505, + "src": "241:63:4", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 437, + "nodeType": "Block", + "src": "332:57:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 431, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6845, + "src": "359:3:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 432, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "359:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "id": 430, + "name": "isSigner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 451, + "src": "350:8:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$", + "typeString": "function (address) view returns (bool)" + } + }, + "id": 433, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "350:20:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 429, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6848, + 6849 + ], + "referencedDeclaration": 6848, + "src": "342:7:4", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 434, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "342:29:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 435, + "nodeType": "ExpressionStatement", + "src": "342:29:4" + }, + { + "id": 436, + "nodeType": "PlaceholderStatement", + "src": "381:1:4" + } + ] + }, + "documentation": null, + "id": 438, + "name": "onlySigner", + "nodeType": "ModifierDefinition", + "parameters": { + "id": 428, + "nodeType": "ParameterList", + "parameters": [], + "src": "329:2:4" + }, + "src": "310:79:4", + "visibility": "internal" + }, + { + "body": { + "id": 450, + "nodeType": "Block", + "src": "457:45:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 447, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 440, + "src": "487:7:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 445, + "name": "_signers", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 418, + "src": "474:8:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$6_storage", + "typeString": "struct Roles.Role storage ref" + } + }, + "id": 446, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "has", + "nodeType": "MemberAccess", + "referencedDeclaration": 92, + "src": "474:12:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_Role_$6_storage_ptr_$_t_address_$returns$_t_bool_$bound_to$_t_struct$_Role_$6_storage_ptr_$", + "typeString": "function (struct Roles.Role storage pointer,address) view returns (bool)" + } + }, + "id": 448, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "474:21:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 444, + "id": 449, + "nodeType": "Return", + "src": "467:28:4" + } + ] + }, + "documentation": null, + "id": 451, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "isSigner", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 441, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 440, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 451, + "src": "413:15:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 439, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "413:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "412:17:4" + }, + "returnParameters": { + "id": 444, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 443, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 451, + "src": "451:4:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 442, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "451:4:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "450:6:4" + }, + "scope": 505, + "src": "395:107:4", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 462, + "nodeType": "Block", + "src": "562:36:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 459, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 453, + "src": "583:7:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 458, + "name": "_addSigner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 488, + "src": "572:10:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 460, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "572:19:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 461, + "nodeType": "ExpressionStatement", + "src": "572:19:4" + } + ] + }, + "documentation": null, + "id": 463, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": null, + "id": 456, + "modifierName": { + "argumentTypes": null, + "id": 455, + "name": "onlySigner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 438, + "src": "551:10:4", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "551:10:4" + } + ], + "name": "addSigner", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 454, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 453, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 463, + "src": "527:15:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 452, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "527:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "526:17:4" + }, + "returnParameters": { + "id": 457, + "nodeType": "ParameterList", + "parameters": [], + "src": "562:0:4" + }, + "scope": 505, + "src": "508:90:4", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 471, + "nodeType": "Block", + "src": "637:42:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 467, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6845, + "src": "661:3:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 468, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "661:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "id": 466, + "name": "_removeSigner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 504, + "src": "647:13:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 469, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "647:25:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 470, + "nodeType": "ExpressionStatement", + "src": "647:25:4" + } + ] + }, + "documentation": null, + "id": 472, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "renounceSigner", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 464, + "nodeType": "ParameterList", + "parameters": [], + "src": "627:2:4" + }, + "returnParameters": { + "id": 465, + "nodeType": "ParameterList", + "parameters": [], + "src": "637:0:4" + }, + "scope": 505, + "src": "604:75:4", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 487, + "nodeType": "Block", + "src": "731:73:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 480, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 474, + "src": "754:7:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 477, + "name": "_signers", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 418, + "src": "741:8:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$6_storage", + "typeString": "struct Roles.Role storage ref" + } + }, + "id": 479, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 38, + "src": "741:12:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Role_$6_storage_ptr_$_t_address_$returns$__$bound_to$_t_struct$_Role_$6_storage_ptr_$", + "typeString": "function (struct Roles.Role storage pointer,address)" + } + }, + "id": 481, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "741:21:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 482, + "nodeType": "ExpressionStatement", + "src": "741:21:4" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 484, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 474, + "src": "789:7:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 483, + "name": "SignerAdded", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 412, + "src": "777:11:4", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 485, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "777:20:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 486, + "nodeType": "EmitStatement", + "src": "772:25:4" + } + ] + }, + "documentation": null, + "id": 488, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_addSigner", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 475, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 474, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 488, + "src": "705:15:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 473, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "705:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "704:17:4" + }, + "returnParameters": { + "id": 476, + "nodeType": "ParameterList", + "parameters": [], + "src": "731:0:4" + }, + "scope": 505, + "src": "685:119:4", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 503, + "nodeType": "Block", + "src": "859:78:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 496, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 490, + "src": "885:7:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 493, + "name": "_signers", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 418, + "src": "869:8:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$6_storage", + "typeString": "struct Roles.Role storage ref" + } + }, + "id": 495, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "remove", + "nodeType": "MemberAccess", + "referencedDeclaration": 69, + "src": "869:15:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Role_$6_storage_ptr_$_t_address_$returns$__$bound_to$_t_struct$_Role_$6_storage_ptr_$", + "typeString": "function (struct Roles.Role storage pointer,address)" + } + }, + "id": 497, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "869:24:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 498, + "nodeType": "ExpressionStatement", + "src": "869:24:4" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 500, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 490, + "src": "922:7:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 499, + "name": "SignerRemoved", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 416, + "src": "908:13:4", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 501, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "908:22:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 502, + "nodeType": "EmitStatement", + "src": "903:27:4" + } + ] + }, + "documentation": null, + "id": 504, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_removeSigner", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 491, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 490, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 504, + "src": "833:15:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 489, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "833:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "832:17:4" + }, + "returnParameters": { + "id": 492, + "nodeType": "ParameterList", + "parameters": [], + "src": "859:0:4" + }, + "scope": 505, + "src": "810:127:4", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + } + ], + "scope": 506, + "src": "49:890:4" + } + ], + "src": "0:940:4" + }, + "compiler": { + "name": "solc", + "version": "0.5.0+commit.1d4f565a.Emscripten.clang" + }, + "networks": {}, + "schemaVersion": "3.0.0", + "updatedAt": "2019-01-04T21:44:02.868Z", + "devdoc": { + "methods": {} + }, + "userdoc": { + "methods": {} + } +} \ No newline at end of file diff --git a/node_modules/openzeppelin-solidity/build/contracts/TimedCrowdsale.json b/node_modules/openzeppelin-solidity/build/contracts/TimedCrowdsale.json new file mode 100644 index 0000000..edf18fd --- /dev/null +++ b/node_modules/openzeppelin-solidity/build/contracts/TimedCrowdsale.json @@ -0,0 +1,2886 @@ +{ + "contractName": "TimedCrowdsale", + "abi": [ + { + "constant": true, + "inputs": [], + "name": "rate", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "weiRaised", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "wallet", + "outputs": [ + { + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "beneficiary", + "type": "address" + } + ], + "name": "buyTokens", + "outputs": [], + "payable": true, + "stateMutability": "payable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "token", + "outputs": [ + { + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "name": "openingTime", + "type": "uint256" + }, + { + "name": "closingTime", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "payable": true, + "stateMutability": "payable", + "type": "fallback" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "purchaser", + "type": "address" + }, + { + "indexed": true, + "name": "beneficiary", + "type": "address" + }, + { + "indexed": false, + "name": "value", + "type": "uint256" + }, + { + "indexed": false, + "name": "amount", + "type": "uint256" + } + ], + "name": "TokensPurchased", + "type": "event" + }, + { + "constant": true, + "inputs": [], + "name": "openingTime", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "closingTime", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "isOpen", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "hasClosed", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "sourceMap": "", + "deployedSourceMap": "", + "source": "pragma solidity ^0.5.0;\n\nimport \"../../math/SafeMath.sol\";\nimport \"../Crowdsale.sol\";\n\n/**\n * @title TimedCrowdsale\n * @dev Crowdsale accepting contributions only within a time frame.\n */\ncontract TimedCrowdsale is Crowdsale {\n using SafeMath for uint256;\n\n uint256 private _openingTime;\n uint256 private _closingTime;\n\n /**\n * @dev Reverts if not in crowdsale time range.\n */\n modifier onlyWhileOpen {\n require(isOpen());\n _;\n }\n\n /**\n * @dev Constructor, takes crowdsale opening and closing times.\n * @param openingTime Crowdsale opening time\n * @param closingTime Crowdsale closing time\n */\n constructor (uint256 openingTime, uint256 closingTime) public {\n // solhint-disable-next-line not-rely-on-time\n require(openingTime >= block.timestamp);\n require(closingTime > openingTime);\n\n _openingTime = openingTime;\n _closingTime = closingTime;\n }\n\n /**\n * @return the crowdsale opening time.\n */\n function openingTime() public view returns (uint256) {\n return _openingTime;\n }\n\n /**\n * @return the crowdsale closing time.\n */\n function closingTime() public view returns (uint256) {\n return _closingTime;\n }\n\n /**\n * @return true if the crowdsale is open, false otherwise.\n */\n function isOpen() public view returns (bool) {\n // solhint-disable-next-line not-rely-on-time\n return block.timestamp >= _openingTime && block.timestamp <= _closingTime;\n }\n\n /**\n * @dev Checks whether the period in which the crowdsale is open has already elapsed.\n * @return Whether crowdsale period has elapsed\n */\n function hasClosed() public view returns (bool) {\n // solhint-disable-next-line not-rely-on-time\n return block.timestamp > _closingTime;\n }\n\n /**\n * @dev Extend parent behavior requiring to be within contributing period\n * @param beneficiary Token purchaser\n * @param weiAmount Amount of wei contributed\n */\n function _preValidatePurchase(address beneficiary, uint256 weiAmount) internal onlyWhileOpen view {\n super._preValidatePurchase(beneficiary, weiAmount);\n }\n}\n", + "sourcePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/crowdsale/validation/TimedCrowdsale.sol", + "ast": { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/crowdsale/validation/TimedCrowdsale.sol", + "exportedSymbols": { + "TimedCrowdsale": [ + 1847 + ] + }, + "id": 1848, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 1737, + "literals": [ + "solidity", + "^", + "0.5", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "0:23:18" + }, + { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/math/SafeMath.sol", + "file": "../../math/SafeMath.sol", + "id": 1738, + "nodeType": "ImportDirective", + "scope": 1848, + "sourceUnit": 3483, + "src": "25:33:18", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/crowdsale/Crowdsale.sol", + "file": "../Crowdsale.sol", + "id": 1739, + "nodeType": "ImportDirective", + "scope": 1848, + "sourceUnit": 985, + "src": "59:26:18", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 1740, + "name": "Crowdsale", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 984, + "src": "215:9:18", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Crowdsale_$984", + "typeString": "contract Crowdsale" + } + }, + "id": 1741, + "nodeType": "InheritanceSpecifier", + "src": "215:9:18" + } + ], + "contractDependencies": [ + 984, + 6830 + ], + "contractKind": "contract", + "documentation": "@title TimedCrowdsale\n@dev Crowdsale accepting contributions only within a time frame.", + "fullyImplemented": false, + "id": 1847, + "linearizedBaseContracts": [ + 1847, + 984, + 6830 + ], + "name": "TimedCrowdsale", + "nodeType": "ContractDefinition", + "nodes": [ + { + "id": 1744, + "libraryName": { + "contractScope": null, + "id": 1742, + "name": "SafeMath", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 3482, + "src": "237:8:18", + "typeDescriptions": { + "typeIdentifier": "t_contract$_SafeMath_$3482", + "typeString": "library SafeMath" + } + }, + "nodeType": "UsingForDirective", + "src": "231:27:18", + "typeName": { + "id": 1743, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "250:7:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + { + "constant": false, + "id": 1746, + "name": "_openingTime", + "nodeType": "VariableDeclaration", + "scope": 1847, + "src": "264:28:18", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1745, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "264:7:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "private" + }, + { + "constant": false, + "id": 1748, + "name": "_closingTime", + "nodeType": "VariableDeclaration", + "scope": 1847, + "src": "298:28:18", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1747, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "298:7:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "private" + }, + { + "body": { + "id": 1756, + "nodeType": "Block", + "src": "424:45:18", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 1751, + "name": "isOpen", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1818, + "src": "442:6:18", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_bool_$", + "typeString": "function () view returns (bool)" + } + }, + "id": 1752, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "442:8:18", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 1750, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6848, + 6849 + ], + "referencedDeclaration": 6848, + "src": "434:7:18", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 1753, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "434:17:18", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1754, + "nodeType": "ExpressionStatement", + "src": "434:17:18" + }, + { + "id": 1755, + "nodeType": "PlaceholderStatement", + "src": "461:1:18" + } + ] + }, + "documentation": "@dev Reverts if not in crowdsale time range.", + "id": 1757, + "name": "onlyWhileOpen", + "nodeType": "ModifierDefinition", + "parameters": { + "id": 1749, + "nodeType": "ParameterList", + "parameters": [], + "src": "424:0:18" + }, + "src": "401:68:18", + "visibility": "internal" + }, + { + "body": { + "id": 1785, + "nodeType": "Block", + "src": "719:227:18", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1768, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1765, + "name": "openingTime", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1759, + "src": "791:11:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1766, + "name": "block", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6835, + "src": "806:5:18", + "typeDescriptions": { + "typeIdentifier": "t_magic_block", + "typeString": "block" + } + }, + "id": 1767, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "timestamp", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "806:15:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "791:30:18", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 1764, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6848, + 6849 + ], + "referencedDeclaration": 6848, + "src": "783:7:18", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 1769, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "783:39:18", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1770, + "nodeType": "ExpressionStatement", + "src": "783:39:18" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1774, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1772, + "name": "closingTime", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1761, + "src": "840:11:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "id": 1773, + "name": "openingTime", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1759, + "src": "854:11:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "840:25:18", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 1771, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6848, + 6849 + ], + "referencedDeclaration": 6848, + "src": "832:7:18", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 1775, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "832:34:18", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1776, + "nodeType": "ExpressionStatement", + "src": "832:34:18" + }, + { + "expression": { + "argumentTypes": null, + "id": 1779, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 1777, + "name": "_openingTime", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1746, + "src": "877:12:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 1778, + "name": "openingTime", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1759, + "src": "892:11:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "877:26:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1780, + "nodeType": "ExpressionStatement", + "src": "877:26:18" + }, + { + "expression": { + "argumentTypes": null, + "id": 1783, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 1781, + "name": "_closingTime", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1748, + "src": "913:12:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 1782, + "name": "closingTime", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1761, + "src": "928:11:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "913:26:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1784, + "nodeType": "ExpressionStatement", + "src": "913:26:18" + } + ] + }, + "documentation": "@dev Constructor, takes crowdsale opening and closing times.\n@param openingTime Crowdsale opening time\n@param closingTime Crowdsale closing time", + "id": 1786, + "implemented": true, + "kind": "constructor", + "modifiers": [], + "name": "", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1762, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1759, + "name": "openingTime", + "nodeType": "VariableDeclaration", + "scope": 1786, + "src": "670:19:18", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1758, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "670:7:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1761, + "name": "closingTime", + "nodeType": "VariableDeclaration", + "scope": 1786, + "src": "691:19:18", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1760, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "691:7:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "669:42:18" + }, + "returnParameters": { + "id": 1763, + "nodeType": "ParameterList", + "parameters": [], + "src": "719:0:18" + }, + "scope": 1847, + "src": "657:289:18", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 1793, + "nodeType": "Block", + "src": "1064:36:18", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 1791, + "name": "_openingTime", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1746, + "src": "1081:12:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 1790, + "id": 1792, + "nodeType": "Return", + "src": "1074:19:18" + } + ] + }, + "documentation": "@return the crowdsale opening time.", + "id": 1794, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "openingTime", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1787, + "nodeType": "ParameterList", + "parameters": [], + "src": "1031:2:18" + }, + "returnParameters": { + "id": 1790, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1789, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 1794, + "src": "1055:7:18", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1788, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1055:7:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1054:9:18" + }, + "scope": 1847, + "src": "1011:89:18", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 1801, + "nodeType": "Block", + "src": "1218:36:18", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 1799, + "name": "_closingTime", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1748, + "src": "1235:12:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 1798, + "id": 1800, + "nodeType": "Return", + "src": "1228:19:18" + } + ] + }, + "documentation": "@return the crowdsale closing time.", + "id": 1802, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "closingTime", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1795, + "nodeType": "ParameterList", + "parameters": [], + "src": "1185:2:18" + }, + "returnParameters": { + "id": 1798, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1797, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 1802, + "src": "1209:7:18", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1796, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1209:7:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1208:9:18" + }, + "scope": 1847, + "src": "1165:89:18", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 1817, + "nodeType": "Block", + "src": "1384:144:18", + "statements": [ + { + "expression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 1815, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1810, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1807, + "name": "block", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6835, + "src": "1455:5:18", + "typeDescriptions": { + "typeIdentifier": "t_magic_block", + "typeString": "block" + } + }, + "id": 1808, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "timestamp", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "1455:15:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "argumentTypes": null, + "id": 1809, + "name": "_openingTime", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1746, + "src": "1474:12:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1455:31:18", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1814, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1811, + "name": "block", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6835, + "src": "1490:5:18", + "typeDescriptions": { + "typeIdentifier": "t_magic_block", + "typeString": "block" + } + }, + "id": 1812, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "timestamp", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "1490:15:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<=", + "rightExpression": { + "argumentTypes": null, + "id": 1813, + "name": "_closingTime", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1748, + "src": "1509:12:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1490:31:18", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "1455:66:18", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 1806, + "id": 1816, + "nodeType": "Return", + "src": "1448:73:18" + } + ] + }, + "documentation": "@return true if the crowdsale is open, false otherwise.", + "id": 1818, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "isOpen", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1803, + "nodeType": "ParameterList", + "parameters": [], + "src": "1354:2:18" + }, + "returnParameters": { + "id": 1806, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1805, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 1818, + "src": "1378:4:18", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 1804, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1378:4:18", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1377:6:18" + }, + "scope": 1847, + "src": "1339:189:18", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 1828, + "nodeType": "Block", + "src": "1740:108:18", + "statements": [ + { + "expression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1826, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1823, + "name": "block", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6835, + "src": "1811:5:18", + "typeDescriptions": { + "typeIdentifier": "t_magic_block", + "typeString": "block" + } + }, + "id": 1824, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "timestamp", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "1811:15:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "id": 1825, + "name": "_closingTime", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1748, + "src": "1829:12:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1811:30:18", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 1822, + "id": 1827, + "nodeType": "Return", + "src": "1804:37:18" + } + ] + }, + "documentation": "@dev Checks whether the period in which the crowdsale is open has already elapsed.\n@return Whether crowdsale period has elapsed", + "id": 1829, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "hasClosed", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1819, + "nodeType": "ParameterList", + "parameters": [], + "src": "1710:2:18" + }, + "returnParameters": { + "id": 1822, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1821, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 1829, + "src": "1734:4:18", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 1820, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1734:4:18", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1733:6:18" + }, + "scope": 1847, + "src": "1692:156:18", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 1845, + "nodeType": "Block", + "src": "2138:67:18", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1841, + "name": "beneficiary", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1831, + "src": "2175:11:18", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1842, + "name": "weiAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1833, + "src": "2188:9:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 1838, + "name": "super", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6883, + "src": "2148:5:18", + "typeDescriptions": { + "typeIdentifier": "t_super$_TimedCrowdsale_$1847", + "typeString": "contract super TimedCrowdsale" + } + }, + "id": 1840, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "_preValidatePurchase", + "nodeType": "MemberAccess", + "referencedDeclaration": 915, + "src": "2148:26:18", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256) view" + } + }, + "id": 1843, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2148:50:18", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1844, + "nodeType": "ExpressionStatement", + "src": "2148:50:18" + } + ] + }, + "documentation": "@dev Extend parent behavior requiring to be within contributing period\n@param beneficiary Token purchaser\n@param weiAmount Amount of wei contributed", + "id": 1846, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": null, + "id": 1836, + "modifierName": { + "argumentTypes": null, + "id": 1835, + "name": "onlyWhileOpen", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1757, + "src": "2119:13:18", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "2119:13:18" + } + ], + "name": "_preValidatePurchase", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1834, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1831, + "name": "beneficiary", + "nodeType": "VariableDeclaration", + "scope": 1846, + "src": "2070:19:18", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1830, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2070:7:18", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1833, + "name": "weiAmount", + "nodeType": "VariableDeclaration", + "scope": 1846, + "src": "2091:17:18", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1832, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2091:7:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2069:40:18" + }, + "returnParameters": { + "id": 1837, + "nodeType": "ParameterList", + "parameters": [], + "src": "2138:0:18" + }, + "scope": 1847, + "src": "2040:165:18", + "stateMutability": "view", + "superFunction": 915, + "visibility": "internal" + } + ], + "scope": 1848, + "src": "188:2019:18" + } + ], + "src": "0:2208:18" + }, + "legacyAST": { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/crowdsale/validation/TimedCrowdsale.sol", + "exportedSymbols": { + "TimedCrowdsale": [ + 1847 + ] + }, + "id": 1848, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 1737, + "literals": [ + "solidity", + "^", + "0.5", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "0:23:18" + }, + { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/math/SafeMath.sol", + "file": "../../math/SafeMath.sol", + "id": 1738, + "nodeType": "ImportDirective", + "scope": 1848, + "sourceUnit": 3483, + "src": "25:33:18", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/crowdsale/Crowdsale.sol", + "file": "../Crowdsale.sol", + "id": 1739, + "nodeType": "ImportDirective", + "scope": 1848, + "sourceUnit": 985, + "src": "59:26:18", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 1740, + "name": "Crowdsale", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 984, + "src": "215:9:18", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Crowdsale_$984", + "typeString": "contract Crowdsale" + } + }, + "id": 1741, + "nodeType": "InheritanceSpecifier", + "src": "215:9:18" + } + ], + "contractDependencies": [ + 984, + 6830 + ], + "contractKind": "contract", + "documentation": "@title TimedCrowdsale\n@dev Crowdsale accepting contributions only within a time frame.", + "fullyImplemented": false, + "id": 1847, + "linearizedBaseContracts": [ + 1847, + 984, + 6830 + ], + "name": "TimedCrowdsale", + "nodeType": "ContractDefinition", + "nodes": [ + { + "id": 1744, + "libraryName": { + "contractScope": null, + "id": 1742, + "name": "SafeMath", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 3482, + "src": "237:8:18", + "typeDescriptions": { + "typeIdentifier": "t_contract$_SafeMath_$3482", + "typeString": "library SafeMath" + } + }, + "nodeType": "UsingForDirective", + "src": "231:27:18", + "typeName": { + "id": 1743, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "250:7:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + { + "constant": false, + "id": 1746, + "name": "_openingTime", + "nodeType": "VariableDeclaration", + "scope": 1847, + "src": "264:28:18", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1745, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "264:7:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "private" + }, + { + "constant": false, + "id": 1748, + "name": "_closingTime", + "nodeType": "VariableDeclaration", + "scope": 1847, + "src": "298:28:18", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1747, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "298:7:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "private" + }, + { + "body": { + "id": 1756, + "nodeType": "Block", + "src": "424:45:18", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 1751, + "name": "isOpen", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1818, + "src": "442:6:18", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_bool_$", + "typeString": "function () view returns (bool)" + } + }, + "id": 1752, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "442:8:18", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 1750, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6848, + 6849 + ], + "referencedDeclaration": 6848, + "src": "434:7:18", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 1753, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "434:17:18", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1754, + "nodeType": "ExpressionStatement", + "src": "434:17:18" + }, + { + "id": 1755, + "nodeType": "PlaceholderStatement", + "src": "461:1:18" + } + ] + }, + "documentation": "@dev Reverts if not in crowdsale time range.", + "id": 1757, + "name": "onlyWhileOpen", + "nodeType": "ModifierDefinition", + "parameters": { + "id": 1749, + "nodeType": "ParameterList", + "parameters": [], + "src": "424:0:18" + }, + "src": "401:68:18", + "visibility": "internal" + }, + { + "body": { + "id": 1785, + "nodeType": "Block", + "src": "719:227:18", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1768, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1765, + "name": "openingTime", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1759, + "src": "791:11:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1766, + "name": "block", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6835, + "src": "806:5:18", + "typeDescriptions": { + "typeIdentifier": "t_magic_block", + "typeString": "block" + } + }, + "id": 1767, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "timestamp", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "806:15:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "791:30:18", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 1764, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6848, + 6849 + ], + "referencedDeclaration": 6848, + "src": "783:7:18", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 1769, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "783:39:18", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1770, + "nodeType": "ExpressionStatement", + "src": "783:39:18" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1774, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1772, + "name": "closingTime", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1761, + "src": "840:11:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "id": 1773, + "name": "openingTime", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1759, + "src": "854:11:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "840:25:18", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 1771, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6848, + 6849 + ], + "referencedDeclaration": 6848, + "src": "832:7:18", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 1775, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "832:34:18", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1776, + "nodeType": "ExpressionStatement", + "src": "832:34:18" + }, + { + "expression": { + "argumentTypes": null, + "id": 1779, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 1777, + "name": "_openingTime", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1746, + "src": "877:12:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 1778, + "name": "openingTime", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1759, + "src": "892:11:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "877:26:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1780, + "nodeType": "ExpressionStatement", + "src": "877:26:18" + }, + { + "expression": { + "argumentTypes": null, + "id": 1783, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 1781, + "name": "_closingTime", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1748, + "src": "913:12:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 1782, + "name": "closingTime", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1761, + "src": "928:11:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "913:26:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1784, + "nodeType": "ExpressionStatement", + "src": "913:26:18" + } + ] + }, + "documentation": "@dev Constructor, takes crowdsale opening and closing times.\n@param openingTime Crowdsale opening time\n@param closingTime Crowdsale closing time", + "id": 1786, + "implemented": true, + "kind": "constructor", + "modifiers": [], + "name": "", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1762, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1759, + "name": "openingTime", + "nodeType": "VariableDeclaration", + "scope": 1786, + "src": "670:19:18", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1758, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "670:7:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1761, + "name": "closingTime", + "nodeType": "VariableDeclaration", + "scope": 1786, + "src": "691:19:18", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1760, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "691:7:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "669:42:18" + }, + "returnParameters": { + "id": 1763, + "nodeType": "ParameterList", + "parameters": [], + "src": "719:0:18" + }, + "scope": 1847, + "src": "657:289:18", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 1793, + "nodeType": "Block", + "src": "1064:36:18", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 1791, + "name": "_openingTime", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1746, + "src": "1081:12:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 1790, + "id": 1792, + "nodeType": "Return", + "src": "1074:19:18" + } + ] + }, + "documentation": "@return the crowdsale opening time.", + "id": 1794, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "openingTime", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1787, + "nodeType": "ParameterList", + "parameters": [], + "src": "1031:2:18" + }, + "returnParameters": { + "id": 1790, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1789, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 1794, + "src": "1055:7:18", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1788, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1055:7:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1054:9:18" + }, + "scope": 1847, + "src": "1011:89:18", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 1801, + "nodeType": "Block", + "src": "1218:36:18", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 1799, + "name": "_closingTime", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1748, + "src": "1235:12:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 1798, + "id": 1800, + "nodeType": "Return", + "src": "1228:19:18" + } + ] + }, + "documentation": "@return the crowdsale closing time.", + "id": 1802, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "closingTime", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1795, + "nodeType": "ParameterList", + "parameters": [], + "src": "1185:2:18" + }, + "returnParameters": { + "id": 1798, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1797, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 1802, + "src": "1209:7:18", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1796, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1209:7:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1208:9:18" + }, + "scope": 1847, + "src": "1165:89:18", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 1817, + "nodeType": "Block", + "src": "1384:144:18", + "statements": [ + { + "expression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 1815, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1810, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1807, + "name": "block", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6835, + "src": "1455:5:18", + "typeDescriptions": { + "typeIdentifier": "t_magic_block", + "typeString": "block" + } + }, + "id": 1808, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "timestamp", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "1455:15:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "argumentTypes": null, + "id": 1809, + "name": "_openingTime", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1746, + "src": "1474:12:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1455:31:18", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1814, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1811, + "name": "block", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6835, + "src": "1490:5:18", + "typeDescriptions": { + "typeIdentifier": "t_magic_block", + "typeString": "block" + } + }, + "id": 1812, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "timestamp", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "1490:15:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<=", + "rightExpression": { + "argumentTypes": null, + "id": 1813, + "name": "_closingTime", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1748, + "src": "1509:12:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1490:31:18", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "1455:66:18", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 1806, + "id": 1816, + "nodeType": "Return", + "src": "1448:73:18" + } + ] + }, + "documentation": "@return true if the crowdsale is open, false otherwise.", + "id": 1818, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "isOpen", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1803, + "nodeType": "ParameterList", + "parameters": [], + "src": "1354:2:18" + }, + "returnParameters": { + "id": 1806, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1805, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 1818, + "src": "1378:4:18", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 1804, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1378:4:18", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1377:6:18" + }, + "scope": 1847, + "src": "1339:189:18", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 1828, + "nodeType": "Block", + "src": "1740:108:18", + "statements": [ + { + "expression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1826, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1823, + "name": "block", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6835, + "src": "1811:5:18", + "typeDescriptions": { + "typeIdentifier": "t_magic_block", + "typeString": "block" + } + }, + "id": 1824, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "timestamp", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "1811:15:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "id": 1825, + "name": "_closingTime", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1748, + "src": "1829:12:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1811:30:18", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 1822, + "id": 1827, + "nodeType": "Return", + "src": "1804:37:18" + } + ] + }, + "documentation": "@dev Checks whether the period in which the crowdsale is open has already elapsed.\n@return Whether crowdsale period has elapsed", + "id": 1829, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "hasClosed", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1819, + "nodeType": "ParameterList", + "parameters": [], + "src": "1710:2:18" + }, + "returnParameters": { + "id": 1822, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1821, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 1829, + "src": "1734:4:18", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 1820, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1734:4:18", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1733:6:18" + }, + "scope": 1847, + "src": "1692:156:18", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 1845, + "nodeType": "Block", + "src": "2138:67:18", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1841, + "name": "beneficiary", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1831, + "src": "2175:11:18", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1842, + "name": "weiAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1833, + "src": "2188:9:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 1838, + "name": "super", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6883, + "src": "2148:5:18", + "typeDescriptions": { + "typeIdentifier": "t_super$_TimedCrowdsale_$1847", + "typeString": "contract super TimedCrowdsale" + } + }, + "id": 1840, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "_preValidatePurchase", + "nodeType": "MemberAccess", + "referencedDeclaration": 915, + "src": "2148:26:18", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256) view" + } + }, + "id": 1843, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2148:50:18", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1844, + "nodeType": "ExpressionStatement", + "src": "2148:50:18" + } + ] + }, + "documentation": "@dev Extend parent behavior requiring to be within contributing period\n@param beneficiary Token purchaser\n@param weiAmount Amount of wei contributed", + "id": 1846, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": null, + "id": 1836, + "modifierName": { + "argumentTypes": null, + "id": 1835, + "name": "onlyWhileOpen", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1757, + "src": "2119:13:18", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "2119:13:18" + } + ], + "name": "_preValidatePurchase", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1834, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1831, + "name": "beneficiary", + "nodeType": "VariableDeclaration", + "scope": 1846, + "src": "2070:19:18", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1830, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2070:7:18", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1833, + "name": "weiAmount", + "nodeType": "VariableDeclaration", + "scope": 1846, + "src": "2091:17:18", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1832, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2091:7:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2069:40:18" + }, + "returnParameters": { + "id": 1837, + "nodeType": "ParameterList", + "parameters": [], + "src": "2138:0:18" + }, + "scope": 1847, + "src": "2040:165:18", + "stateMutability": "view", + "superFunction": 915, + "visibility": "internal" + } + ], + "scope": 1848, + "src": "188:2019:18" + } + ], + "src": "0:2208:18" + }, + "compiler": { + "name": "solc", + "version": "0.5.0+commit.1d4f565a.Emscripten.clang" + }, + "networks": {}, + "schemaVersion": "3.0.0", + "updatedAt": "2019-01-04T21:44:02.874Z", + "devdoc": { + "details": "Crowdsale accepting contributions only within a time frame.", + "methods": { + "buyTokens(address)": { + "details": "low level token purchase ***DO NOT OVERRIDE*** This function has a non-reentrancy guard, so it shouldn't be called by another `nonReentrant` function.", + "params": { + "beneficiary": "Recipient of the token purchase" + } + }, + "closingTime()": { + "return": "the crowdsale closing time." + }, + "constructor": { + "details": "Constructor, takes crowdsale opening and closing times.", + "params": { + "closingTime": "Crowdsale closing time", + "openingTime": "Crowdsale opening time" + } + }, + "hasClosed()": { + "details": "Checks whether the period in which the crowdsale is open has already elapsed.", + "return": "Whether crowdsale period has elapsed" + }, + "isOpen()": { + "return": "true if the crowdsale is open, false otherwise." + }, + "openingTime()": { + "return": "the crowdsale opening time." + }, + "rate()": { + "return": "the number of token units a buyer gets per wei." + }, + "token()": { + "return": "the token being sold." + }, + "wallet()": { + "return": "the address where funds are collected." + }, + "weiRaised()": { + "return": "the amount of wei raised." + } + }, + "title": "TimedCrowdsale" + }, + "userdoc": { + "methods": {} + } +} \ No newline at end of file diff --git a/node_modules/openzeppelin-solidity/build/contracts/TokenTimelock.json b/node_modules/openzeppelin-solidity/build/contracts/TokenTimelock.json new file mode 100644 index 0000000..46d016b --- /dev/null +++ b/node_modules/openzeppelin-solidity/build/contracts/TokenTimelock.json @@ -0,0 +1,2546 @@ +{ + "contractName": "TokenTimelock", + "abi": [ + { + "inputs": [ + { + "name": "token", + "type": "address" + }, + { + "name": "beneficiary", + "type": "address" + }, + { + "name": "releaseTime", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "constant": true, + "inputs": [], + "name": "token", + "outputs": [ + { + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "beneficiary", + "outputs": [ + { + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "releaseTime", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [], + "name": "release", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x608060405234801561001057600080fd5b506040516060806105558339810180604052606081101561003057600080fd5b81019080805190602001909291908051906020019092919080519060200190929190505050428111151561006357600080fd5b826000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600281905550505050610458806100fd6000396000f3fe608060405260043610610062576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806338af3eed1461006757806386d1a69f146100be578063b91d4001146100d5578063fc0c546a14610100575b600080fd5b34801561007357600080fd5b5061007c610157565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156100ca57600080fd5b506100d3610181565b005b3480156100e157600080fd5b506100ea61030b565b6040518082815260200191505060405180910390f35b34801561010c57600080fd5b50610115610315565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600254421015151561019257600080fd5b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561024e57600080fd5b505afa158015610262573d6000803e3d6000fd5b505050506040513d602081101561027857600080fd5b8101908080519060200190929190505050905060008111151561029a57600080fd5b610308600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16826000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661033e9092919063ffffffff16565b50565b6000600254905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1580156103e157600080fd5b505af11580156103f5573d6000803e3d6000fd5b505050506040513d602081101561040b57600080fd5b8101908080519060200190929190505050151561042757600080fd5b50505056fea165627a7a72305820233e23526aa8f45af1a44aebfeb9b2252922db3652e41d5b40dd182d982c33930029", + "deployedBytecode": "0x608060405260043610610062576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806338af3eed1461006757806386d1a69f146100be578063b91d4001146100d5578063fc0c546a14610100575b600080fd5b34801561007357600080fd5b5061007c610157565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156100ca57600080fd5b506100d3610181565b005b3480156100e157600080fd5b506100ea61030b565b6040518082815260200191505060405180910390f35b34801561010c57600080fd5b50610115610315565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600254421015151561019257600080fd5b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561024e57600080fd5b505afa158015610262573d6000803e3d6000fd5b505050506040513d602081101561027857600080fd5b8101908080519060200190929190505050905060008111151561029a57600080fd5b610308600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16826000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661033e9092919063ffffffff16565b50565b6000600254905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1580156103e157600080fd5b505af11580156103f5573d6000803e3d6000fd5b505050506040513d602081101561040b57600080fd5b8101908080519060200190929190505050151561042757600080fd5b50505056fea165627a7a72305820233e23526aa8f45af1a44aebfeb9b2252922db3652e41d5b40dd182d982c33930029", + "sourceMap": "215:1409:49:-;;;520:281;8:9:-1;5:2;;;30:1;27;20:12;5:2;520:281:49;;;;;;;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;520:281:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;682:15;668:11;:29;660:38;;;;;;;;717:5;708:6;;:14;;;;;;;;;;;;;;;;;;747:11;732:12;;:26;;;;;;;;;;;;;;;;;;783:11;768:12;:26;;;;520:281;;;215:1409;;;;;;", + "deployedSourceMap": "215:1409:49:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1004:89;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1004:89:49;;;;;;;;;;;;;;;;;;;;;;;;;;;1345:277;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1345:277:49;;;;;;1169:89;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1169:89:49;;;;;;;;;;;;;;;;;;;;;;;860:76;;8:9:-1;5:2;;;30:1;27;20:12;5:2;860:76:49;;;;;;;;;;;;;;;;;;;;;;;;;;;1004:89;1048:7;1074:12;;;;;;;;;;;1067:19;;1004:89;:::o;1345:277::-;1462:12;;1443:15;:31;;1435:40;;;;;;;;1486:14;1503:6;;;;;;;;;;;:16;;;1528:4;1503:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1503:31:49;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1503:31:49;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1503:31:49;;;;;;;;;;;;;;;;1486:48;;1561:1;1552:6;:10;1544:19;;;;;;;;1574:41;1594:12;;;;;;;;;;;1608:6;1574;;;;;;;;;;;:19;;;;:41;;;;;:::i;:::-;1345:277;:::o;1169:89::-;1213:7;1239:12;;1232:19;;1169:89;:::o;860:76::-;898:6;923;;;;;;;;;;;916:13;;860:76;:::o;409:123:48:-;499:5;:14;;;514:2;518:5;499:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;499:25:48;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;499:25:48;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;499:25:48;;;;;;;;;;;;;;;;491:34;;;;;;;;409:123;;;:::o", + "source": "pragma solidity ^0.5.0;\n\nimport \"./SafeERC20.sol\";\n\n/**\n * @title TokenTimelock\n * @dev TokenTimelock is a token holder contract that will allow a\n * beneficiary to extract the tokens after a given release time\n */\ncontract TokenTimelock {\n using SafeERC20 for IERC20;\n\n // ERC20 basic token contract being held\n IERC20 private _token;\n\n // beneficiary of tokens after they are released\n address private _beneficiary;\n\n // timestamp when token release is enabled\n uint256 private _releaseTime;\n\n constructor (IERC20 token, address beneficiary, uint256 releaseTime) public {\n // solhint-disable-next-line not-rely-on-time\n require(releaseTime > block.timestamp);\n _token = token;\n _beneficiary = beneficiary;\n _releaseTime = releaseTime;\n }\n\n /**\n * @return the token being held.\n */\n function token() public view returns (IERC20) {\n return _token;\n }\n\n /**\n * @return the beneficiary of the tokens.\n */\n function beneficiary() public view returns (address) {\n return _beneficiary;\n }\n\n /**\n * @return the time when the tokens are released.\n */\n function releaseTime() public view returns (uint256) {\n return _releaseTime;\n }\n\n /**\n * @notice Transfers tokens held by timelock to beneficiary.\n */\n function release() public {\n // solhint-disable-next-line not-rely-on-time\n require(block.timestamp >= _releaseTime);\n\n uint256 amount = _token.balanceOf(address(this));\n require(amount > 0);\n\n _token.safeTransfer(_beneficiary, amount);\n }\n}\n", + "sourcePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/token/ERC20/TokenTimelock.sol", + "ast": { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/token/ERC20/TokenTimelock.sol", + "exportedSymbols": { + "TokenTimelock": [ + 5295 + ] + }, + "id": 5296, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 5198, + "literals": [ + "solidity", + "^", + "0.5", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "0:23:49" + }, + { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol", + "file": "./SafeERC20.sol", + "id": 5199, + "nodeType": "ImportDirective", + "scope": 5296, + "sourceUnit": 5197, + "src": "25:25:49", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [], + "contractDependencies": [], + "contractKind": "contract", + "documentation": "@title TokenTimelock\n@dev TokenTimelock is a token holder contract that will allow a\nbeneficiary to extract the tokens after a given release time", + "fullyImplemented": true, + "id": 5295, + "linearizedBaseContracts": [ + 5295 + ], + "name": "TokenTimelock", + "nodeType": "ContractDefinition", + "nodes": [ + { + "id": 5202, + "libraryName": { + "contractScope": null, + "id": 5200, + "name": "SafeERC20", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 5196, + "src": "250:9:49", + "typeDescriptions": { + "typeIdentifier": "t_contract$_SafeERC20_$5196", + "typeString": "library SafeERC20" + } + }, + "nodeType": "UsingForDirective", + "src": "244:27:49", + "typeName": { + "contractScope": null, + "id": 5201, + "name": "IERC20", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 5052, + "src": "264:6:49", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$5052", + "typeString": "contract IERC20" + } + } + }, + { + "constant": false, + "id": 5204, + "name": "_token", + "nodeType": "VariableDeclaration", + "scope": 5295, + "src": "322:21:49", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$5052", + "typeString": "contract IERC20" + }, + "typeName": { + "contractScope": null, + "id": 5203, + "name": "IERC20", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 5052, + "src": "322:6:49", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$5052", + "typeString": "contract IERC20" + } + }, + "value": null, + "visibility": "private" + }, + { + "constant": false, + "id": 5206, + "name": "_beneficiary", + "nodeType": "VariableDeclaration", + "scope": 5295, + "src": "403:28:49", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5205, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "403:7:49", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "private" + }, + { + "constant": false, + "id": 5208, + "name": "_releaseTime", + "nodeType": "VariableDeclaration", + "scope": 5295, + "src": "485:28:49", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5207, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "485:7:49", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "private" + }, + { + "body": { + "id": 5236, + "nodeType": "Block", + "src": "596:205:49", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 5221, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 5218, + "name": "releaseTime", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5214, + "src": "668:11:49", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 5219, + "name": "block", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6835, + "src": "682:5:49", + "typeDescriptions": { + "typeIdentifier": "t_magic_block", + "typeString": "block" + } + }, + "id": 5220, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "timestamp", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "682:15:49", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "668:29:49", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 5217, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6848, + 6849 + ], + "referencedDeclaration": 6848, + "src": "660:7:49", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 5222, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "660:38:49", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5223, + "nodeType": "ExpressionStatement", + "src": "660:38:49" + }, + { + "expression": { + "argumentTypes": null, + "id": 5226, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 5224, + "name": "_token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5204, + "src": "708:6:49", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$5052", + "typeString": "contract IERC20" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 5225, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5210, + "src": "717:5:49", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$5052", + "typeString": "contract IERC20" + } + }, + "src": "708:14:49", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$5052", + "typeString": "contract IERC20" + } + }, + "id": 5227, + "nodeType": "ExpressionStatement", + "src": "708:14:49" + }, + { + "expression": { + "argumentTypes": null, + "id": 5230, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 5228, + "name": "_beneficiary", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5206, + "src": "732:12:49", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 5229, + "name": "beneficiary", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5212, + "src": "747:11:49", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "732:26:49", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 5231, + "nodeType": "ExpressionStatement", + "src": "732:26:49" + }, + { + "expression": { + "argumentTypes": null, + "id": 5234, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 5232, + "name": "_releaseTime", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5208, + "src": "768:12:49", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 5233, + "name": "releaseTime", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5214, + "src": "783:11:49", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "768:26:49", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 5235, + "nodeType": "ExpressionStatement", + "src": "768:26:49" + } + ] + }, + "documentation": null, + "id": 5237, + "implemented": true, + "kind": "constructor", + "modifiers": [], + "name": "", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5215, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5210, + "name": "token", + "nodeType": "VariableDeclaration", + "scope": 5237, + "src": "533:12:49", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$5052", + "typeString": "contract IERC20" + }, + "typeName": { + "contractScope": null, + "id": 5209, + "name": "IERC20", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 5052, + "src": "533:6:49", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$5052", + "typeString": "contract IERC20" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5212, + "name": "beneficiary", + "nodeType": "VariableDeclaration", + "scope": 5237, + "src": "547:19:49", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5211, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "547:7:49", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5214, + "name": "releaseTime", + "nodeType": "VariableDeclaration", + "scope": 5237, + "src": "568:19:49", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5213, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "568:7:49", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "532:56:49" + }, + "returnParameters": { + "id": 5216, + "nodeType": "ParameterList", + "parameters": [], + "src": "596:0:49" + }, + "scope": 5295, + "src": "520:281:49", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 5244, + "nodeType": "Block", + "src": "906:30:49", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 5242, + "name": "_token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5204, + "src": "923:6:49", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$5052", + "typeString": "contract IERC20" + } + }, + "functionReturnParameters": 5241, + "id": 5243, + "nodeType": "Return", + "src": "916:13:49" + } + ] + }, + "documentation": "@return the token being held.", + "id": 5245, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "token", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5238, + "nodeType": "ParameterList", + "parameters": [], + "src": "874:2:49" + }, + "returnParameters": { + "id": 5241, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5240, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 5245, + "src": "898:6:49", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$5052", + "typeString": "contract IERC20" + }, + "typeName": { + "contractScope": null, + "id": 5239, + "name": "IERC20", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 5052, + "src": "898:6:49", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$5052", + "typeString": "contract IERC20" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "897:8:49" + }, + "scope": 5295, + "src": "860:76:49", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 5252, + "nodeType": "Block", + "src": "1057:36:49", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 5250, + "name": "_beneficiary", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5206, + "src": "1074:12:49", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "functionReturnParameters": 5249, + "id": 5251, + "nodeType": "Return", + "src": "1067:19:49" + } + ] + }, + "documentation": "@return the beneficiary of the tokens.", + "id": 5253, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "beneficiary", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5246, + "nodeType": "ParameterList", + "parameters": [], + "src": "1024:2:49" + }, + "returnParameters": { + "id": 5249, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5248, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 5253, + "src": "1048:7:49", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5247, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1048:7:49", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1047:9:49" + }, + "scope": 5295, + "src": "1004:89:49", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 5260, + "nodeType": "Block", + "src": "1222:36:49", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 5258, + "name": "_releaseTime", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5208, + "src": "1239:12:49", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 5257, + "id": 5259, + "nodeType": "Return", + "src": "1232:19:49" + } + ] + }, + "documentation": "@return the time when the tokens are released.", + "id": 5261, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "releaseTime", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5254, + "nodeType": "ParameterList", + "parameters": [], + "src": "1189:2:49" + }, + "returnParameters": { + "id": 5257, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5256, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 5261, + "src": "1213:7:49", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5255, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1213:7:49", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1212:9:49" + }, + "scope": 5295, + "src": "1169:89:49", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 5293, + "nodeType": "Block", + "src": "1371:251:49", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 5268, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 5265, + "name": "block", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6835, + "src": "1443:5:49", + "typeDescriptions": { + "typeIdentifier": "t_magic_block", + "typeString": "block" + } + }, + "id": 5266, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "timestamp", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "1443:15:49", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "argumentTypes": null, + "id": 5267, + "name": "_releaseTime", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5208, + "src": "1462:12:49", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1443:31:49", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 5264, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6848, + 6849 + ], + "referencedDeclaration": 6848, + "src": "1435:7:49", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 5269, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1435:40:49", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5270, + "nodeType": "ExpressionStatement", + "src": "1435:40:49" + }, + { + "assignments": [ + 5272 + ], + "declarations": [ + { + "constant": false, + "id": 5272, + "name": "amount", + "nodeType": "VariableDeclaration", + "scope": 5293, + "src": "1486:14:49", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5271, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1486:7:49", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 5279, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 5276, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6960, + "src": "1528:4:49", + "typeDescriptions": { + "typeIdentifier": "t_contract$_TokenTimelock_$5295", + "typeString": "contract TokenTimelock" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_TokenTimelock_$5295", + "typeString": "contract TokenTimelock" + } + ], + "id": 5275, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "1520:7:49", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 5277, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1520:13:49", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 5273, + "name": "_token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5204, + "src": "1503:6:49", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$5052", + "typeString": "contract IERC20" + } + }, + "id": 5274, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "balanceOf", + "nodeType": "MemberAccess", + "referencedDeclaration": 5026, + "src": "1503:16:49", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$", + "typeString": "function (address) view external returns (uint256)" + } + }, + "id": 5278, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1503:31:49", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "1486:48:49" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 5283, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 5281, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5272, + "src": "1552:6:49", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 5282, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1561:1:49", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "1552:10:49", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 5280, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6848, + 6849 + ], + "referencedDeclaration": 6848, + "src": "1544:7:49", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 5284, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1544:19:49", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5285, + "nodeType": "ExpressionStatement", + "src": "1544:19:49" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 5289, + "name": "_beneficiary", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5206, + "src": "1594:12:49", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 5290, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5272, + "src": "1608:6:49", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 5286, + "name": "_token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5204, + "src": "1574:6:49", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$5052", + "typeString": "contract IERC20" + } + }, + "id": 5288, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "safeTransfer", + "nodeType": "MemberAccess", + "referencedDeclaration": 5077, + "src": "1574:19:49", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$5052_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$5052_$", + "typeString": "function (contract IERC20,address,uint256)" + } + }, + "id": 5291, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1574:41:49", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5292, + "nodeType": "ExpressionStatement", + "src": "1574:41:49" + } + ] + }, + "documentation": "@notice Transfers tokens held by timelock to beneficiary.", + "id": 5294, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "release", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5262, + "nodeType": "ParameterList", + "parameters": [], + "src": "1361:2:49" + }, + "returnParameters": { + "id": 5263, + "nodeType": "ParameterList", + "parameters": [], + "src": "1371:0:49" + }, + "scope": 5295, + "src": "1345:277:49", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + } + ], + "scope": 5296, + "src": "215:1409:49" + } + ], + "src": "0:1625:49" + }, + "legacyAST": { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/token/ERC20/TokenTimelock.sol", + "exportedSymbols": { + "TokenTimelock": [ + 5295 + ] + }, + "id": 5296, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 5198, + "literals": [ + "solidity", + "^", + "0.5", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "0:23:49" + }, + { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol", + "file": "./SafeERC20.sol", + "id": 5199, + "nodeType": "ImportDirective", + "scope": 5296, + "sourceUnit": 5197, + "src": "25:25:49", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [], + "contractDependencies": [], + "contractKind": "contract", + "documentation": "@title TokenTimelock\n@dev TokenTimelock is a token holder contract that will allow a\nbeneficiary to extract the tokens after a given release time", + "fullyImplemented": true, + "id": 5295, + "linearizedBaseContracts": [ + 5295 + ], + "name": "TokenTimelock", + "nodeType": "ContractDefinition", + "nodes": [ + { + "id": 5202, + "libraryName": { + "contractScope": null, + "id": 5200, + "name": "SafeERC20", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 5196, + "src": "250:9:49", + "typeDescriptions": { + "typeIdentifier": "t_contract$_SafeERC20_$5196", + "typeString": "library SafeERC20" + } + }, + "nodeType": "UsingForDirective", + "src": "244:27:49", + "typeName": { + "contractScope": null, + "id": 5201, + "name": "IERC20", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 5052, + "src": "264:6:49", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$5052", + "typeString": "contract IERC20" + } + } + }, + { + "constant": false, + "id": 5204, + "name": "_token", + "nodeType": "VariableDeclaration", + "scope": 5295, + "src": "322:21:49", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$5052", + "typeString": "contract IERC20" + }, + "typeName": { + "contractScope": null, + "id": 5203, + "name": "IERC20", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 5052, + "src": "322:6:49", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$5052", + "typeString": "contract IERC20" + } + }, + "value": null, + "visibility": "private" + }, + { + "constant": false, + "id": 5206, + "name": "_beneficiary", + "nodeType": "VariableDeclaration", + "scope": 5295, + "src": "403:28:49", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5205, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "403:7:49", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "private" + }, + { + "constant": false, + "id": 5208, + "name": "_releaseTime", + "nodeType": "VariableDeclaration", + "scope": 5295, + "src": "485:28:49", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5207, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "485:7:49", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "private" + }, + { + "body": { + "id": 5236, + "nodeType": "Block", + "src": "596:205:49", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 5221, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 5218, + "name": "releaseTime", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5214, + "src": "668:11:49", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 5219, + "name": "block", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6835, + "src": "682:5:49", + "typeDescriptions": { + "typeIdentifier": "t_magic_block", + "typeString": "block" + } + }, + "id": 5220, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "timestamp", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "682:15:49", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "668:29:49", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 5217, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6848, + 6849 + ], + "referencedDeclaration": 6848, + "src": "660:7:49", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 5222, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "660:38:49", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5223, + "nodeType": "ExpressionStatement", + "src": "660:38:49" + }, + { + "expression": { + "argumentTypes": null, + "id": 5226, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 5224, + "name": "_token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5204, + "src": "708:6:49", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$5052", + "typeString": "contract IERC20" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 5225, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5210, + "src": "717:5:49", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$5052", + "typeString": "contract IERC20" + } + }, + "src": "708:14:49", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$5052", + "typeString": "contract IERC20" + } + }, + "id": 5227, + "nodeType": "ExpressionStatement", + "src": "708:14:49" + }, + { + "expression": { + "argumentTypes": null, + "id": 5230, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 5228, + "name": "_beneficiary", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5206, + "src": "732:12:49", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 5229, + "name": "beneficiary", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5212, + "src": "747:11:49", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "732:26:49", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 5231, + "nodeType": "ExpressionStatement", + "src": "732:26:49" + }, + { + "expression": { + "argumentTypes": null, + "id": 5234, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 5232, + "name": "_releaseTime", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5208, + "src": "768:12:49", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 5233, + "name": "releaseTime", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5214, + "src": "783:11:49", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "768:26:49", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 5235, + "nodeType": "ExpressionStatement", + "src": "768:26:49" + } + ] + }, + "documentation": null, + "id": 5237, + "implemented": true, + "kind": "constructor", + "modifiers": [], + "name": "", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5215, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5210, + "name": "token", + "nodeType": "VariableDeclaration", + "scope": 5237, + "src": "533:12:49", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$5052", + "typeString": "contract IERC20" + }, + "typeName": { + "contractScope": null, + "id": 5209, + "name": "IERC20", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 5052, + "src": "533:6:49", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$5052", + "typeString": "contract IERC20" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5212, + "name": "beneficiary", + "nodeType": "VariableDeclaration", + "scope": 5237, + "src": "547:19:49", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5211, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "547:7:49", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5214, + "name": "releaseTime", + "nodeType": "VariableDeclaration", + "scope": 5237, + "src": "568:19:49", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5213, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "568:7:49", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "532:56:49" + }, + "returnParameters": { + "id": 5216, + "nodeType": "ParameterList", + "parameters": [], + "src": "596:0:49" + }, + "scope": 5295, + "src": "520:281:49", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 5244, + "nodeType": "Block", + "src": "906:30:49", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 5242, + "name": "_token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5204, + "src": "923:6:49", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$5052", + "typeString": "contract IERC20" + } + }, + "functionReturnParameters": 5241, + "id": 5243, + "nodeType": "Return", + "src": "916:13:49" + } + ] + }, + "documentation": "@return the token being held.", + "id": 5245, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "token", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5238, + "nodeType": "ParameterList", + "parameters": [], + "src": "874:2:49" + }, + "returnParameters": { + "id": 5241, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5240, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 5245, + "src": "898:6:49", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$5052", + "typeString": "contract IERC20" + }, + "typeName": { + "contractScope": null, + "id": 5239, + "name": "IERC20", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 5052, + "src": "898:6:49", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$5052", + "typeString": "contract IERC20" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "897:8:49" + }, + "scope": 5295, + "src": "860:76:49", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 5252, + "nodeType": "Block", + "src": "1057:36:49", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 5250, + "name": "_beneficiary", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5206, + "src": "1074:12:49", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "functionReturnParameters": 5249, + "id": 5251, + "nodeType": "Return", + "src": "1067:19:49" + } + ] + }, + "documentation": "@return the beneficiary of the tokens.", + "id": 5253, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "beneficiary", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5246, + "nodeType": "ParameterList", + "parameters": [], + "src": "1024:2:49" + }, + "returnParameters": { + "id": 5249, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5248, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 5253, + "src": "1048:7:49", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5247, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1048:7:49", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1047:9:49" + }, + "scope": 5295, + "src": "1004:89:49", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 5260, + "nodeType": "Block", + "src": "1222:36:49", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 5258, + "name": "_releaseTime", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5208, + "src": "1239:12:49", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 5257, + "id": 5259, + "nodeType": "Return", + "src": "1232:19:49" + } + ] + }, + "documentation": "@return the time when the tokens are released.", + "id": 5261, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "releaseTime", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5254, + "nodeType": "ParameterList", + "parameters": [], + "src": "1189:2:49" + }, + "returnParameters": { + "id": 5257, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5256, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 5261, + "src": "1213:7:49", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5255, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1213:7:49", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1212:9:49" + }, + "scope": 5295, + "src": "1169:89:49", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 5293, + "nodeType": "Block", + "src": "1371:251:49", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 5268, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 5265, + "name": "block", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6835, + "src": "1443:5:49", + "typeDescriptions": { + "typeIdentifier": "t_magic_block", + "typeString": "block" + } + }, + "id": 5266, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "timestamp", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "1443:15:49", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "argumentTypes": null, + "id": 5267, + "name": "_releaseTime", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5208, + "src": "1462:12:49", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1443:31:49", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 5264, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6848, + 6849 + ], + "referencedDeclaration": 6848, + "src": "1435:7:49", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 5269, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1435:40:49", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5270, + "nodeType": "ExpressionStatement", + "src": "1435:40:49" + }, + { + "assignments": [ + 5272 + ], + "declarations": [ + { + "constant": false, + "id": 5272, + "name": "amount", + "nodeType": "VariableDeclaration", + "scope": 5293, + "src": "1486:14:49", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5271, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1486:7:49", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 5279, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 5276, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6960, + "src": "1528:4:49", + "typeDescriptions": { + "typeIdentifier": "t_contract$_TokenTimelock_$5295", + "typeString": "contract TokenTimelock" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_TokenTimelock_$5295", + "typeString": "contract TokenTimelock" + } + ], + "id": 5275, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "1520:7:49", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 5277, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1520:13:49", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 5273, + "name": "_token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5204, + "src": "1503:6:49", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$5052", + "typeString": "contract IERC20" + } + }, + "id": 5274, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "balanceOf", + "nodeType": "MemberAccess", + "referencedDeclaration": 5026, + "src": "1503:16:49", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$", + "typeString": "function (address) view external returns (uint256)" + } + }, + "id": 5278, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1503:31:49", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "1486:48:49" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 5283, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 5281, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5272, + "src": "1552:6:49", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 5282, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1561:1:49", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "1552:10:49", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 5280, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6848, + 6849 + ], + "referencedDeclaration": 6848, + "src": "1544:7:49", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 5284, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1544:19:49", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5285, + "nodeType": "ExpressionStatement", + "src": "1544:19:49" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 5289, + "name": "_beneficiary", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5206, + "src": "1594:12:49", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 5290, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5272, + "src": "1608:6:49", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 5286, + "name": "_token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5204, + "src": "1574:6:49", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$5052", + "typeString": "contract IERC20" + } + }, + "id": 5288, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "safeTransfer", + "nodeType": "MemberAccess", + "referencedDeclaration": 5077, + "src": "1574:19:49", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$5052_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$5052_$", + "typeString": "function (contract IERC20,address,uint256)" + } + }, + "id": 5291, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1574:41:49", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5292, + "nodeType": "ExpressionStatement", + "src": "1574:41:49" + } + ] + }, + "documentation": "@notice Transfers tokens held by timelock to beneficiary.", + "id": 5294, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "release", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5262, + "nodeType": "ParameterList", + "parameters": [], + "src": "1361:2:49" + }, + "returnParameters": { + "id": 5263, + "nodeType": "ParameterList", + "parameters": [], + "src": "1371:0:49" + }, + "scope": 5295, + "src": "1345:277:49", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + } + ], + "scope": 5296, + "src": "215:1409:49" + } + ], + "src": "0:1625:49" + }, + "compiler": { + "name": "solc", + "version": "0.5.0+commit.1d4f565a.Emscripten.clang" + }, + "networks": {}, + "schemaVersion": "3.0.0", + "updatedAt": "2019-01-04T21:44:02.894Z", + "devdoc": { + "details": "TokenTimelock is a token holder contract that will allow a beneficiary to extract the tokens after a given release time", + "methods": { + "beneficiary()": { + "return": "the beneficiary of the tokens." + }, + "releaseTime()": { + "return": "the time when the tokens are released." + }, + "token()": { + "return": "the token being held." + } + }, + "title": "TokenTimelock" + }, + "userdoc": { + "methods": { + "release()": { + "notice": "Transfers tokens held by timelock to beneficiary." + } + } + } +} \ No newline at end of file diff --git a/node_modules/openzeppelin-solidity/build/contracts/TokenVesting.json b/node_modules/openzeppelin-solidity/build/contracts/TokenVesting.json new file mode 100644 index 0000000..21ca2b3 --- /dev/null +++ b/node_modules/openzeppelin-solidity/build/contracts/TokenVesting.json @@ -0,0 +1,10031 @@ +{ + "contractName": "TokenVesting", + "abi": [ + { + "constant": false, + "inputs": [], + "name": "renounceOwnership", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "owner", + "outputs": [ + { + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "isOwner", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "newOwner", + "type": "address" + } + ], + "name": "transferOwnership", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "name": "beneficiary", + "type": "address" + }, + { + "name": "start", + "type": "uint256" + }, + { + "name": "cliffDuration", + "type": "uint256" + }, + { + "name": "duration", + "type": "uint256" + }, + { + "name": "revocable", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "name": "token", + "type": "address" + }, + { + "indexed": false, + "name": "amount", + "type": "uint256" + } + ], + "name": "TokensReleased", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "name": "token", + "type": "address" + } + ], + "name": "TokenVestingRevoked", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "previousOwner", + "type": "address" + }, + { + "indexed": true, + "name": "newOwner", + "type": "address" + } + ], + "name": "OwnershipTransferred", + "type": "event" + }, + { + "constant": true, + "inputs": [], + "name": "beneficiary", + "outputs": [ + { + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "cliff", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "start", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "duration", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "revocable", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "token", + "type": "address" + } + ], + "name": "released", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "token", + "type": "address" + } + ], + "name": "revoked", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "token", + "type": "address" + } + ], + "name": "release", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "token", + "type": "address" + } + ], + "name": "revoke", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x608060405234801561001057600080fd5b5060405160a08061121e833981018060405260a081101561003057600080fd5b810190808051906020019092919080519060200190929190805190602001909291908051906020019092919080519060200190929190505050336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161415151561016157600080fd5b81831115151561017057600080fd5b60008211151561017f57600080fd5b426101a0838661024564010000000002610ae4179091906401000000009004565b1115156101ac57600080fd5b84600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600560006101000a81548160ff0219169083151502179055508160048190555061022e838561024564010000000002610ae4179091906401000000009004565b600281905550836003819055505050505050610266565b600080828401905083811015151561025c57600080fd5b8091505092915050565b610fa9806102756000396000f3fe6080604052600436106100c5576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680630fb5a6b4146100ca57806313d033c0146100f5578063191655871461012057806338af3eed14610171578063715018a6146101c857806374a8f103146101df578063872a7810146102305780638da5cb5b1461025f5780638f32d59b146102b65780639852595c146102e5578063be9a65551461034a578063f2fde38b14610375578063fa01dc06146103c6575b600080fd5b3480156100d657600080fd5b506100df61042f565b6040518082815260200191505060405180910390f35b34801561010157600080fd5b5061010a610439565b6040518082815260200191505060405180910390f35b34801561012c57600080fd5b5061016f6004803603602081101561014357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610443565b005b34801561017d57600080fd5b506101866105b0565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156101d457600080fd5b506101dd6105da565b005b3480156101eb57600080fd5b5061022e6004803603602081101561020257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506106ac565b005b34801561023c57600080fd5b50610245610922565b604051808215151515815260200191505060405180910390f35b34801561026b57600080fd5b50610274610939565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156102c257600080fd5b506102cb610962565b604051808215151515815260200191505060405180910390f35b3480156102f157600080fd5b506103346004803603602081101561030857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506109b9565b6040518082815260200191505060405180910390f35b34801561035657600080fd5b5061035f610a02565b6040518082815260200191505060405180910390f35b34801561038157600080fd5b506103c46004803603602081101561039857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610a0c565b005b3480156103d257600080fd5b50610415600480360360208110156103e957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610a2b565b604051808215151515815260200191505060405180910390f35b6000600454905090565b6000600254905090565b600061044e82610a81565b905060008111151561045f57600080fd5b6104b181600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610ae490919063ffffffff16565b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610541600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16828473ffffffffffffffffffffffffffffffffffffffff16610b059092919063ffffffff16565b7fc7798891864187665ac6dd119286e44ec13f014527aeeb2b8eb3fd413df931798282604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a15050565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6105e2610962565b15156105ed57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6106b4610962565b15156106bf57600080fd5b600560009054906101000a900460ff1615156106da57600080fd5b600760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151561073357600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156107ce57600080fd5b505afa1580156107e2573d6000803e3d6000fd5b505050506040513d60208110156107f857600080fd5b81019080805190602001909291905050509050600061081683610a81565b9050600061082d8284610bf390919063ffffffff16565b90506001600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506108b9610892610939565b828673ffffffffffffffffffffffffffffffffffffffff16610b059092919063ffffffff16565b7f39983c6d4d174a7aee564f449d4a5c3c7ac9649d72b7793c56901183996f8af684604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a150505050565b6000600560009054906101000a900460ff16905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614905090565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000600354905090565b610a14610962565b1515610a1f57600080fd5b610a2881610c15565b50565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000610add600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610acf84610d0f565b610bf390919063ffffffff16565b9050919050565b6000808284019050838110151515610afb57600080fd5b8091505092915050565b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015610ba857600080fd5b505af1158015610bbc573d6000803e3d6000fd5b505050506040513d6020811015610bd257600080fd5b81019080805190602001909291905050501515610bee57600080fd5b505050565b6000828211151515610c0457600080fd5b600082840390508091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515610c5157600080fd5b8073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000808273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015610dab57600080fd5b505afa158015610dbf573d6000803e3d6000fd5b505050506040513d6020811015610dd557600080fd5b810190808051906020019092919050505090506000610e3c600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483610ae490919063ffffffff16565b9050600254421015610e5357600092505050610f10565b610e6a600454600354610ae490919063ffffffff16565b42101580610ec15750600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15610ed0578092505050610f10565b610f0b600454610efd610eee60035442610bf390919063ffffffff16565b84610f1590919063ffffffff16565b610f5390919063ffffffff16565b925050505b919050565b600080831415610f285760009050610f4d565b60008284029050828482811515610f3b57fe5b04141515610f4857600080fd5b809150505b92915050565b60008082111515610f6357600080fd5b60008284811515610f7057fe5b049050809150509291505056fea165627a7a72305820c1f8ff3d12baefa34d5f226f9cf28f3b1cc93be9346c78c376ca587fec18c4520029", + "deployedBytecode": "0x6080604052600436106100c5576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680630fb5a6b4146100ca57806313d033c0146100f5578063191655871461012057806338af3eed14610171578063715018a6146101c857806374a8f103146101df578063872a7810146102305780638da5cb5b1461025f5780638f32d59b146102b65780639852595c146102e5578063be9a65551461034a578063f2fde38b14610375578063fa01dc06146103c6575b600080fd5b3480156100d657600080fd5b506100df61042f565b6040518082815260200191505060405180910390f35b34801561010157600080fd5b5061010a610439565b6040518082815260200191505060405180910390f35b34801561012c57600080fd5b5061016f6004803603602081101561014357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610443565b005b34801561017d57600080fd5b506101866105b0565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156101d457600080fd5b506101dd6105da565b005b3480156101eb57600080fd5b5061022e6004803603602081101561020257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506106ac565b005b34801561023c57600080fd5b50610245610922565b604051808215151515815260200191505060405180910390f35b34801561026b57600080fd5b50610274610939565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156102c257600080fd5b506102cb610962565b604051808215151515815260200191505060405180910390f35b3480156102f157600080fd5b506103346004803603602081101561030857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506109b9565b6040518082815260200191505060405180910390f35b34801561035657600080fd5b5061035f610a02565b6040518082815260200191505060405180910390f35b34801561038157600080fd5b506103c46004803603602081101561039857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610a0c565b005b3480156103d257600080fd5b50610415600480360360208110156103e957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610a2b565b604051808215151515815260200191505060405180910390f35b6000600454905090565b6000600254905090565b600061044e82610a81565b905060008111151561045f57600080fd5b6104b181600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610ae490919063ffffffff16565b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610541600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16828473ffffffffffffffffffffffffffffffffffffffff16610b059092919063ffffffff16565b7fc7798891864187665ac6dd119286e44ec13f014527aeeb2b8eb3fd413df931798282604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a15050565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6105e2610962565b15156105ed57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6106b4610962565b15156106bf57600080fd5b600560009054906101000a900460ff1615156106da57600080fd5b600760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151561073357600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156107ce57600080fd5b505afa1580156107e2573d6000803e3d6000fd5b505050506040513d60208110156107f857600080fd5b81019080805190602001909291905050509050600061081683610a81565b9050600061082d8284610bf390919063ffffffff16565b90506001600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506108b9610892610939565b828673ffffffffffffffffffffffffffffffffffffffff16610b059092919063ffffffff16565b7f39983c6d4d174a7aee564f449d4a5c3c7ac9649d72b7793c56901183996f8af684604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a150505050565b6000600560009054906101000a900460ff16905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614905090565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000600354905090565b610a14610962565b1515610a1f57600080fd5b610a2881610c15565b50565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000610add600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610acf84610d0f565b610bf390919063ffffffff16565b9050919050565b6000808284019050838110151515610afb57600080fd5b8091505092915050565b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015610ba857600080fd5b505af1158015610bbc573d6000803e3d6000fd5b505050506040513d6020811015610bd257600080fd5b81019080805190602001909291905050501515610bee57600080fd5b505050565b6000828211151515610c0457600080fd5b600082840390508091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515610c5157600080fd5b8073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000808273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015610dab57600080fd5b505afa158015610dbf573d6000803e3d6000fd5b505050506040513d6020811015610dd557600080fd5b810190808051906020019092919050505090506000610e3c600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483610ae490919063ffffffff16565b9050600254421015610e5357600092505050610f10565b610e6a600454600354610ae490919063ffffffff16565b42101580610ec15750600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15610ed0578092505050610f10565b610f0b600454610efd610eee60035442610bf390919063ffffffff16565b84610f1590919063ffffffff16565b610f5390919063ffffffff16565b925050505b919050565b600080831415610f285760009050610f4d565b60008284029050828482811515610f3b57fe5b04141515610f4857600080fd5b809150505b92915050565b60008082111515610f6357600080fd5b60008284811515610f7057fe5b049050809150509291505056fea165627a7a72305820c1f8ff3d12baefa34d5f226f9cf28f3b1cc93be9346c78c376ca587fec18c4520029", + "sourceMap": "344:5356:27:-;;;2063:461;8:9:-1;5:2;;;30:1;27;20:12;5:2;2063:461:27;;;;;;;;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;2063:461:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;524:10:34;515:6;;:19;;;;;;;;;;;;;;;;;;582:6;;;;;;;;;;;549:40;;578:1;549:40;;;;;;;;;;;;2217:1:27;2194:25;;:11;:25;;;;2186:34;;;;;;;;2255:8;2238:13;:25;;2230:34;;;;;;;;2293:1;2282:8;:12;2274:21;;;;;;;;2335:15;2313:19;2323:8;2313:5;:9;;;;;;:19;;;;;:::i;:::-;:37;2305:46;;;;;;;;2377:11;2362:12;;:26;;;;;;;;;;;;;;;;;;2411:9;2398:10;;:22;;;;;;;;;;;;;;;;;;2442:8;2430:9;:20;;;;2469:24;2479:13;2469:5;:9;;;;;;:24;;;;;:::i;:::-;2460:6;:33;;;;2512:5;2503:6;:14;;;;2063:461;;;;;344:5356;;1431:145:33;1489:7;1508:9;1524:1;1520;:5;1508:17;;1548:1;1543;:6;;1535:15;;;;;;;;1568:1;1561:8;;;1431:145;;;;:::o;344:5356:27:-;;;;;;;", + "deployedSourceMap": "344:5356:27:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3055:83;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3055:83:27;;;;;;;;;;;;;;;;;;;;;;;2755:77;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2755:77:27;;;;;;;;;;;;;;;;;;;;;;;3761:327;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3761:327:27;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3761:327:27;;;;;;;;;;;;;;;;;;;;;;2592:89;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2592:89:27;;;;;;;;;;;;;;;;;;;;;;;;;;;1347:137:34;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1347:137:34;;;;;;4308:431:27;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4308:431:27;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4308:431:27;;;;;;;;;;;;;;;;;;;;;;3209:82;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3209:82:27;;;;;;;;;;;;;;;;;;;;;;;;;;;659:77:34;;8:9:-1;5:2;;;30:1;27;20:12;5:2;659:77:34;;;;;;;;;;;;;;;;;;;;;;;;;;;979:90;;8:9:-1;5:2;;;30:1;27;20:12;5:2;979:90:34;;;;;;;;;;;;;;;;;;;;;;;;;;;3362:103:27;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3362:103:27;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3362:103:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2906:77;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2906:77:27;;;;;;;;;;;;;;;;;;;;;;;1655:107:34;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1655:107:34;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1655:107:34;;;;;;;;;;;;;;;;;;;;;;3532:98:27;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3532:98:27;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3532:98:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3055:83;3096:7;3122:9;;3115:16;;3055:83;:::o;2755:77::-;2793:7;2819:6;;2812:13;;2755:77;:::o;3761:327::-;3809:18;3830:24;3848:5;3830:17;:24::i;:::-;3809:45;;3886:1;3873:10;:14;3865:23;;;;;;;;3927:41;3957:10;3927:9;:25;3945:5;3927:25;;;;;;;;;;;;;;;;:29;;:41;;;;:::i;:::-;3899:9;:25;3917:5;3899:25;;;;;;;;;;;;;;;:69;;;;3979:44;3998:12;;;;;;;;;;;4012:10;3979:5;:18;;;;:44;;;;;:::i;:::-;4039:42;4062:5;4070:10;4039:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;3761:327;;:::o;2592:89::-;2636:7;2662:12;;;;;;;;;;;2655:19;;2592:89;:::o;1347:137:34:-;863:9;:7;:9::i;:::-;855:18;;;;;;;;1445:1;1408:40;;1429:6;;;;;;;;;;;1408:40;;;;;;;;;;;;1475:1;1458:6;;:19;;;;;;;;;;;;;;;;;;1347:137::o;4308:431:27:-;863:9:34;:7;:9::i;:::-;855:18;;;;;;;;4373:10:27;;;;;;;;;;;4365:19;;;;;;;;4403:8;:24;4420:5;4403:24;;;;;;;;;;;;;;;;;;;;;;;;;4402:25;4394:34;;;;;;;;4439:15;4457:5;:15;;;4481:4;4457:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4457:30:27;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4457:30:27;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4457:30:27;;;;;;;;;;;;;;;;4439:48;;4498:18;4519:24;4537:5;4519:17;:24::i;:::-;4498:45;;4553:14;4570:23;4582:10;4570:7;:11;;:23;;;;:::i;:::-;4553:40;;4631:4;4604:8;:24;4621:5;4604:24;;;;;;;;;;;;;;;;:31;;;;;;;;;;;;;;;;;;4646:35;4665:7;:5;:7::i;:::-;4674:6;4646:5;:18;;;;:35;;;;;:::i;:::-;4697;4725:5;4697:35;;;;;;;;;;;;;;;;;;;;;;883:1:34;;;4308:431:27;:::o;3209:82::-;3251:4;3274:10;;;;;;;;;;;3267:17;;3209:82;:::o;659:77:34:-;697:7;723:6;;;;;;;;;;;716:13;;659:77;:::o;979:90::-;1019:4;1056:6;;;;;;;;;;;1042:20;;:10;:20;;;1035:27;;979:90;:::o;3362:103:27:-;3416:7;3442:9;:16;3452:5;3442:16;;;;;;;;;;;;;;;;3435:23;;3362:103;;;:::o;2906:77::-;2944:7;2970:6;;2963:13;;2906:77;:::o;1655:107:34:-;863:9;:7;:9::i;:::-;855:18;;;;;;;;1727:28;1746:8;1727:18;:28::i;:::-;1655:107;:::o;3532:98:27:-;3585:4;3608:8;:15;3617:5;3608:15;;;;;;;;;;;;;;;;;;;;;;;;;3601:22;;3532:98;;;:::o;4903:147::-;4966:7;4992:51;5017:9;:25;5035:5;5017:25;;;;;;;;;;;;;;;;4992:20;5006:5;4992:13;:20::i;:::-;:24;;:51;;;;:::i;:::-;4985:58;;4903:147;;;:::o;1431:145:33:-;1489:7;1508:9;1524:1;1520;:5;1508:17;;1548:1;1543;:6;;1535:15;;;;;;;;1568:1;1561:8;;;1431:145;;;;:::o;409:123:48:-;499:5;:14;;;514:2;518:5;499:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;499:25:48;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;499:25:48;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;499:25:48;;;;;;;;;;;;;;;;491:34;;;;;;;;409:123;;;:::o;1205:145:33:-;1263:7;1295:1;1290;:6;;1282:15;;;;;;;;1307:9;1323:1;1319;:5;1307:17;;1342:1;1335:8;;;1205:145;;;;:::o;1906:183:34:-;1999:1;1979:22;;:8;:22;;;;1971:31;;;;;;;;2046:8;2017:38;;2038:6;;;;;;;;;;;2017:38;;;;;;;;;;;;2074:8;2065:6;;:17;;;;;;;;;;;;;;;;;;1906:183;:::o;5185:513:27:-;5244:7;5263:22;5288:5;:15;;;5312:4;5288:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5288:30:27;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5288:30:27;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;5288:30:27;;;;;;;;;;;;;;;;5263:55;;5328:20;5351:45;5370:9;:25;5388:5;5370:25;;;;;;;;;;;;;;;;5351:14;:18;;:45;;;;:::i;:::-;5328:68;;5429:6;;5411:15;:24;5407:285;;;5458:1;5451:8;;;;;;5407:285;5499:21;5510:9;;5499:6;;:10;;:21;;;;:::i;:::-;5480:15;:40;;:68;;;;5524:8;:24;5541:5;5524:24;;;;;;;;;;;;;;;;;;;;;;;;;5480:68;5476:216;;;5571:12;5564:19;;;;;;5476:216;5621:60;5671:9;;5621:45;5638:27;5658:6;;5638:15;:19;;:27;;;;:::i;:::-;5621:12;:16;;:45;;;;:::i;:::-;:49;;:60;;;;:::i;:::-;5614:67;;;;5185:513;;;;:::o;229:421:33:-;287:7;532:1;527;:6;523:45;;;556:1;549:8;;;;523:45;578:9;594:1;590;:5;578:17;;622:1;617;613;:5;;;;;;;;:10;605:19;;;;;;;;642:1;635:8;;;229:421;;;;;:::o;778:296::-;836:7;933:1;929;:5;921:14;;;;;;;;945:9;961:1;957;:5;;;;;;;;945:17;;1066:1;1059:8;;;778:296;;;;:::o", + "source": "pragma solidity ^0.5.0;\n\nimport \"../token/ERC20/SafeERC20.sol\";\nimport \"../ownership/Ownable.sol\";\nimport \"../math/SafeMath.sol\";\n\n/**\n * @title TokenVesting\n * @dev A token holder contract that can release its token balance gradually like a\n * typical vesting scheme, with a cliff and vesting period. Optionally revocable by the\n * owner.\n */\ncontract TokenVesting is Ownable {\n // The vesting schedule is time-based (i.e. using block timestamps as opposed to e.g. block numbers), and is\n // therefore sensitive to timestamp manipulation (which is something miners can do, to a certain degree). Therefore,\n // it is recommended to avoid using short time durations (less than a minute). Typical vesting schemes, with a cliff\n // period of a year and a duration of four years, are safe to use.\n // solhint-disable not-rely-on-time\n\n using SafeMath for uint256;\n using SafeERC20 for IERC20;\n\n event TokensReleased(address token, uint256 amount);\n event TokenVestingRevoked(address token);\n\n // beneficiary of tokens after they are released\n address private _beneficiary;\n\n // Durations and timestamps are expressed in UNIX time, the same units as block.timestamp.\n uint256 private _cliff;\n uint256 private _start;\n uint256 private _duration;\n\n bool private _revocable;\n\n mapping (address => uint256) private _released;\n mapping (address => bool) private _revoked;\n\n /**\n * @dev Creates a vesting contract that vests its balance of any ERC20 token to the\n * beneficiary, gradually in a linear fashion until start + duration. By then all\n * of the balance will have vested.\n * @param beneficiary address of the beneficiary to whom vested tokens are transferred\n * @param cliffDuration duration in seconds of the cliff in which tokens will begin to vest\n * @param start the time (as Unix time) at which point vesting starts\n * @param duration duration in seconds of the period in which the tokens will vest\n * @param revocable whether the vesting is revocable or not\n */\n constructor (address beneficiary, uint256 start, uint256 cliffDuration, uint256 duration, bool revocable) public {\n require(beneficiary != address(0));\n require(cliffDuration <= duration);\n require(duration > 0);\n require(start.add(duration) > block.timestamp);\n\n _beneficiary = beneficiary;\n _revocable = revocable;\n _duration = duration;\n _cliff = start.add(cliffDuration);\n _start = start;\n }\n\n /**\n * @return the beneficiary of the tokens.\n */\n function beneficiary() public view returns (address) {\n return _beneficiary;\n }\n\n /**\n * @return the cliff time of the token vesting.\n */\n function cliff() public view returns (uint256) {\n return _cliff;\n }\n\n /**\n * @return the start time of the token vesting.\n */\n function start() public view returns (uint256) {\n return _start;\n }\n\n /**\n * @return the duration of the token vesting.\n */\n function duration() public view returns (uint256) {\n return _duration;\n }\n\n /**\n * @return true if the vesting is revocable.\n */\n function revocable() public view returns (bool) {\n return _revocable;\n }\n\n /**\n * @return the amount of the token released.\n */\n function released(address token) public view returns (uint256) {\n return _released[token];\n }\n\n /**\n * @return true if the token is revoked.\n */\n function revoked(address token) public view returns (bool) {\n return _revoked[token];\n }\n\n /**\n * @notice Transfers vested tokens to beneficiary.\n * @param token ERC20 token which is being vested\n */\n function release(IERC20 token) public {\n uint256 unreleased = _releasableAmount(token);\n\n require(unreleased > 0);\n\n _released[address(token)] = _released[address(token)].add(unreleased);\n\n token.safeTransfer(_beneficiary, unreleased);\n\n emit TokensReleased(address(token), unreleased);\n }\n\n /**\n * @notice Allows the owner to revoke the vesting. Tokens already vested\n * remain in the contract, the rest are returned to the owner.\n * @param token ERC20 token which is being vested\n */\n function revoke(IERC20 token) public onlyOwner {\n require(_revocable);\n require(!_revoked[address(token)]);\n\n uint256 balance = token.balanceOf(address(this));\n\n uint256 unreleased = _releasableAmount(token);\n uint256 refund = balance.sub(unreleased);\n\n _revoked[address(token)] = true;\n\n token.safeTransfer(owner(), refund);\n\n emit TokenVestingRevoked(address(token));\n }\n\n /**\n * @dev Calculates the amount that has already vested but hasn't been released yet.\n * @param token ERC20 token which is being vested\n */\n function _releasableAmount(IERC20 token) private view returns (uint256) {\n return _vestedAmount(token).sub(_released[address(token)]);\n }\n\n /**\n * @dev Calculates the amount that has already vested.\n * @param token ERC20 token which is being vested\n */\n function _vestedAmount(IERC20 token) private view returns (uint256) {\n uint256 currentBalance = token.balanceOf(address(this));\n uint256 totalBalance = currentBalance.add(_released[address(token)]);\n\n if (block.timestamp < _cliff) {\n return 0;\n } else if (block.timestamp >= _start.add(_duration) || _revoked[address(token)]) {\n return totalBalance;\n } else {\n return totalBalance.mul(block.timestamp.sub(_start)).div(_duration);\n }\n }\n}\n", + "sourcePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/drafts/TokenVesting.sol", + "ast": { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/drafts/TokenVesting.sol", + "exportedSymbols": { + "TokenVesting": [ + 3004 + ] + }, + "id": 3005, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 2636, + "literals": [ + "solidity", + "^", + "0.5", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "0:23:27" + }, + { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol", + "file": "../token/ERC20/SafeERC20.sol", + "id": 2637, + "nodeType": "ImportDirective", + "scope": 3005, + "sourceUnit": 5197, + "src": "25:38:27", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/ownership/Ownable.sol", + "file": "../ownership/Ownable.sol", + "id": 2638, + "nodeType": "ImportDirective", + "scope": 3005, + "sourceUnit": 3592, + "src": "64:34:27", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/math/SafeMath.sol", + "file": "../math/SafeMath.sol", + "id": 2639, + "nodeType": "ImportDirective", + "scope": 3005, + "sourceUnit": 3483, + "src": "99:30:27", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 2640, + "name": "Ownable", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 3591, + "src": "369:7:27", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Ownable_$3591", + "typeString": "contract Ownable" + } + }, + "id": 2641, + "nodeType": "InheritanceSpecifier", + "src": "369:7:27" + } + ], + "contractDependencies": [ + 3591 + ], + "contractKind": "contract", + "documentation": "@title TokenVesting\n@dev A token holder contract that can release its token balance gradually like a\ntypical vesting scheme, with a cliff and vesting period. Optionally revocable by the\nowner.", + "fullyImplemented": true, + "id": 3004, + "linearizedBaseContracts": [ + 3004, + 3591 + ], + "name": "TokenVesting", + "nodeType": "ContractDefinition", + "nodes": [ + { + "id": 2644, + "libraryName": { + "contractScope": null, + "id": 2642, + "name": "SafeMath", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 3482, + "src": "856:8:27", + "typeDescriptions": { + "typeIdentifier": "t_contract$_SafeMath_$3482", + "typeString": "library SafeMath" + } + }, + "nodeType": "UsingForDirective", + "src": "850:27:27", + "typeName": { + "id": 2643, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "869:7:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + { + "id": 2647, + "libraryName": { + "contractScope": null, + "id": 2645, + "name": "SafeERC20", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 5196, + "src": "888:9:27", + "typeDescriptions": { + "typeIdentifier": "t_contract$_SafeERC20_$5196", + "typeString": "library SafeERC20" + } + }, + "nodeType": "UsingForDirective", + "src": "882:27:27", + "typeName": { + "contractScope": null, + "id": 2646, + "name": "IERC20", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 5052, + "src": "902:6:27", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$5052", + "typeString": "contract IERC20" + } + } + }, + { + "anonymous": false, + "documentation": null, + "id": 2653, + "name": "TokensReleased", + "nodeType": "EventDefinition", + "parameters": { + "id": 2652, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2649, + "indexed": false, + "name": "token", + "nodeType": "VariableDeclaration", + "scope": 2653, + "src": "936:13:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2648, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "936:7:27", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2651, + "indexed": false, + "name": "amount", + "nodeType": "VariableDeclaration", + "scope": 2653, + "src": "951:14:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2650, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "951:7:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "935:31:27" + }, + "src": "915:52:27" + }, + { + "anonymous": false, + "documentation": null, + "id": 2657, + "name": "TokenVestingRevoked", + "nodeType": "EventDefinition", + "parameters": { + "id": 2656, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2655, + "indexed": false, + "name": "token", + "nodeType": "VariableDeclaration", + "scope": 2657, + "src": "998:13:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2654, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "998:7:27", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "997:15:27" + }, + "src": "972:41:27" + }, + { + "constant": false, + "id": 2659, + "name": "_beneficiary", + "nodeType": "VariableDeclaration", + "scope": 3004, + "src": "1072:28:27", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2658, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1072:7:27", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "private" + }, + { + "constant": false, + "id": 2661, + "name": "_cliff", + "nodeType": "VariableDeclaration", + "scope": 3004, + "src": "1202:22:27", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2660, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1202:7:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "private" + }, + { + "constant": false, + "id": 2663, + "name": "_start", + "nodeType": "VariableDeclaration", + "scope": 3004, + "src": "1230:22:27", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2662, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1230:7:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "private" + }, + { + "constant": false, + "id": 2665, + "name": "_duration", + "nodeType": "VariableDeclaration", + "scope": 3004, + "src": "1258:25:27", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2664, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1258:7:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "private" + }, + { + "constant": false, + "id": 2667, + "name": "_revocable", + "nodeType": "VariableDeclaration", + "scope": 3004, + "src": "1290:23:27", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 2666, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1290:4:27", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "private" + }, + { + "constant": false, + "id": 2671, + "name": "_released", + "nodeType": "VariableDeclaration", + "scope": 3004, + "src": "1320:46:27", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + }, + "typeName": { + "id": 2670, + "keyType": { + "id": 2668, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1329:7:27", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "1320:28:27", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + }, + "valueType": { + "id": 2669, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1340:7:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "value": null, + "visibility": "private" + }, + { + "constant": false, + "id": 2675, + "name": "_revoked", + "nodeType": "VariableDeclaration", + "scope": 3004, + "src": "1372:42:27", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + }, + "typeName": { + "id": 2674, + "keyType": { + "id": 2672, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1381:7:27", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "1372:25:27", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + }, + "valueType": { + "id": 2673, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1392:4:27", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + }, + "value": null, + "visibility": "private" + }, + { + "body": { + "id": 2741, + "nodeType": "Block", + "src": "2176:348:27", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 2693, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2689, + "name": "beneficiary", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2677, + "src": "2194:11:27", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 2691, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2217:1:27", + "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": 2690, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2209:7:27", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 2692, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2209:10:27", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "2194:25:27", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 2688, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6848, + 6849 + ], + "referencedDeclaration": 6848, + "src": "2186:7:27", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 2694, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2186:34:27", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2695, + "nodeType": "ExpressionStatement", + "src": "2186:34:27" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2699, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2697, + "name": "cliffDuration", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2681, + "src": "2238:13:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<=", + "rightExpression": { + "argumentTypes": null, + "id": 2698, + "name": "duration", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2683, + "src": "2255:8:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2238:25:27", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 2696, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6848, + 6849 + ], + "referencedDeclaration": 6848, + "src": "2230:7:27", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 2700, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2230:34:27", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2701, + "nodeType": "ExpressionStatement", + "src": "2230:34:27" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2705, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2703, + "name": "duration", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2683, + "src": "2282:8:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 2704, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2293:1:27", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "2282:12:27", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 2702, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6848, + 6849 + ], + "referencedDeclaration": 6848, + "src": "2274:7:27", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 2706, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2274:21:27", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2707, + "nodeType": "ExpressionStatement", + "src": "2274:21:27" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2715, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2711, + "name": "duration", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2683, + "src": "2323:8:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 2709, + "name": "start", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2679, + "src": "2313:5:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2710, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 3461, + "src": "2313:9:27", + "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": 2712, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2313:19:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 2713, + "name": "block", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6835, + "src": "2335:5:27", + "typeDescriptions": { + "typeIdentifier": "t_magic_block", + "typeString": "block" + } + }, + "id": 2714, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "timestamp", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2335:15:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2313:37:27", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 2708, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6848, + 6849 + ], + "referencedDeclaration": 6848, + "src": "2305:7:27", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 2716, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2305:46:27", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2717, + "nodeType": "ExpressionStatement", + "src": "2305:46:27" + }, + { + "expression": { + "argumentTypes": null, + "id": 2720, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 2718, + "name": "_beneficiary", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2659, + "src": "2362:12:27", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 2719, + "name": "beneficiary", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2677, + "src": "2377:11:27", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "2362:26:27", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 2721, + "nodeType": "ExpressionStatement", + "src": "2362:26:27" + }, + { + "expression": { + "argumentTypes": null, + "id": 2724, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 2722, + "name": "_revocable", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2667, + "src": "2398:10:27", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 2723, + "name": "revocable", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2685, + "src": "2411:9:27", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "2398:22:27", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2725, + "nodeType": "ExpressionStatement", + "src": "2398:22:27" + }, + { + "expression": { + "argumentTypes": null, + "id": 2728, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 2726, + "name": "_duration", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2665, + "src": "2430:9:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 2727, + "name": "duration", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2683, + "src": "2442:8:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2430:20:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2729, + "nodeType": "ExpressionStatement", + "src": "2430:20:27" + }, + { + "expression": { + "argumentTypes": null, + "id": 2735, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 2730, + "name": "_cliff", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2661, + "src": "2460:6:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2733, + "name": "cliffDuration", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2681, + "src": "2479:13:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 2731, + "name": "start", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2679, + "src": "2469:5:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2732, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 3461, + "src": "2469:9:27", + "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": 2734, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2469:24:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2460:33:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2736, + "nodeType": "ExpressionStatement", + "src": "2460:33:27" + }, + { + "expression": { + "argumentTypes": null, + "id": 2739, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 2737, + "name": "_start", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2663, + "src": "2503:6:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 2738, + "name": "start", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2679, + "src": "2512:5:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2503:14:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2740, + "nodeType": "ExpressionStatement", + "src": "2503:14:27" + } + ] + }, + "documentation": "@dev Creates a vesting contract that vests its balance of any ERC20 token to the\nbeneficiary, gradually in a linear fashion until start + duration. By then all\nof the balance will have vested.\n@param beneficiary address of the beneficiary to whom vested tokens are transferred\n@param cliffDuration duration in seconds of the cliff in which tokens will begin to vest\n@param start the time (as Unix time) at which point vesting starts\n@param duration duration in seconds of the period in which the tokens will vest\n@param revocable whether the vesting is revocable or not", + "id": 2742, + "implemented": true, + "kind": "constructor", + "modifiers": [], + "name": "", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2686, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2677, + "name": "beneficiary", + "nodeType": "VariableDeclaration", + "scope": 2742, + "src": "2076:19:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2676, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2076:7:27", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2679, + "name": "start", + "nodeType": "VariableDeclaration", + "scope": 2742, + "src": "2097:13:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2678, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2097:7:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2681, + "name": "cliffDuration", + "nodeType": "VariableDeclaration", + "scope": 2742, + "src": "2112:21:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2680, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2112:7:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2683, + "name": "duration", + "nodeType": "VariableDeclaration", + "scope": 2742, + "src": "2135:16:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2682, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2135:7:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2685, + "name": "revocable", + "nodeType": "VariableDeclaration", + "scope": 2742, + "src": "2153:14:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 2684, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "2153:4:27", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2075:93:27" + }, + "returnParameters": { + "id": 2687, + "nodeType": "ParameterList", + "parameters": [], + "src": "2176:0:27" + }, + "scope": 3004, + "src": "2063:461:27", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 2749, + "nodeType": "Block", + "src": "2645:36:27", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 2747, + "name": "_beneficiary", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2659, + "src": "2662:12:27", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "functionReturnParameters": 2746, + "id": 2748, + "nodeType": "Return", + "src": "2655:19:27" + } + ] + }, + "documentation": "@return the beneficiary of the tokens.", + "id": 2750, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "beneficiary", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2743, + "nodeType": "ParameterList", + "parameters": [], + "src": "2612:2:27" + }, + "returnParameters": { + "id": 2746, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2745, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 2750, + "src": "2636:7:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2744, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2636:7:27", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2635:9:27" + }, + "scope": 3004, + "src": "2592:89:27", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 2757, + "nodeType": "Block", + "src": "2802:30:27", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 2755, + "name": "_cliff", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2661, + "src": "2819:6:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 2754, + "id": 2756, + "nodeType": "Return", + "src": "2812:13:27" + } + ] + }, + "documentation": "@return the cliff time of the token vesting.", + "id": 2758, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "cliff", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2751, + "nodeType": "ParameterList", + "parameters": [], + "src": "2769:2:27" + }, + "returnParameters": { + "id": 2754, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2753, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 2758, + "src": "2793:7:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2752, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2793:7:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2792:9:27" + }, + "scope": 3004, + "src": "2755:77:27", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 2765, + "nodeType": "Block", + "src": "2953:30:27", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 2763, + "name": "_start", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2663, + "src": "2970:6:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 2762, + "id": 2764, + "nodeType": "Return", + "src": "2963:13:27" + } + ] + }, + "documentation": "@return the start time of the token vesting.", + "id": 2766, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "start", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2759, + "nodeType": "ParameterList", + "parameters": [], + "src": "2920:2:27" + }, + "returnParameters": { + "id": 2762, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2761, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 2766, + "src": "2944:7:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2760, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2944:7:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2943:9:27" + }, + "scope": 3004, + "src": "2906:77:27", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 2773, + "nodeType": "Block", + "src": "3105:33:27", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 2771, + "name": "_duration", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2665, + "src": "3122:9:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 2770, + "id": 2772, + "nodeType": "Return", + "src": "3115:16:27" + } + ] + }, + "documentation": "@return the duration of the token vesting.", + "id": 2774, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "duration", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2767, + "nodeType": "ParameterList", + "parameters": [], + "src": "3072:2:27" + }, + "returnParameters": { + "id": 2770, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2769, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 2774, + "src": "3096:7:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2768, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3096:7:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3095:9:27" + }, + "scope": 3004, + "src": "3055:83:27", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 2781, + "nodeType": "Block", + "src": "3257:34:27", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 2779, + "name": "_revocable", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2667, + "src": "3274:10:27", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 2778, + "id": 2780, + "nodeType": "Return", + "src": "3267:17:27" + } + ] + }, + "documentation": "@return true if the vesting is revocable.", + "id": 2782, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "revocable", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2775, + "nodeType": "ParameterList", + "parameters": [], + "src": "3227:2:27" + }, + "returnParameters": { + "id": 2778, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2777, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 2782, + "src": "3251:4:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 2776, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "3251:4:27", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3250:6:27" + }, + "scope": 3004, + "src": "3209:82:27", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 2793, + "nodeType": "Block", + "src": "3425:40:27", + "statements": [ + { + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2789, + "name": "_released", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2671, + "src": "3442:9:27", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 2791, + "indexExpression": { + "argumentTypes": null, + "id": 2790, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2784, + "src": "3452:5:27", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3442:16:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 2788, + "id": 2792, + "nodeType": "Return", + "src": "3435:23:27" + } + ] + }, + "documentation": "@return the amount of the token released.", + "id": 2794, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "released", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2785, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2784, + "name": "token", + "nodeType": "VariableDeclaration", + "scope": 2794, + "src": "3380:13:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2783, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3380:7:27", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3379:15:27" + }, + "returnParameters": { + "id": 2788, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2787, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 2794, + "src": "3416:7:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2786, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3416:7:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3415:9:27" + }, + "scope": 3004, + "src": "3362:103:27", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 2805, + "nodeType": "Block", + "src": "3591:39:27", + "statements": [ + { + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2801, + "name": "_revoked", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2675, + "src": "3608:8:27", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 2803, + "indexExpression": { + "argumentTypes": null, + "id": 2802, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2796, + "src": "3617:5:27", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3608:15:27", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 2800, + "id": 2804, + "nodeType": "Return", + "src": "3601:22:27" + } + ] + }, + "documentation": "@return true if the token is revoked.", + "id": 2806, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "revoked", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2797, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2796, + "name": "token", + "nodeType": "VariableDeclaration", + "scope": 2806, + "src": "3549:13:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2795, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3549:7:27", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3548:15:27" + }, + "returnParameters": { + "id": 2800, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2799, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 2806, + "src": "3585:4:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 2798, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "3585:4:27", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3584:6:27" + }, + "scope": 3004, + "src": "3532:98:27", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 2852, + "nodeType": "Block", + "src": "3799:289:27", + "statements": [ + { + "assignments": [ + 2812 + ], + "declarations": [ + { + "constant": false, + "id": 2812, + "name": "unreleased", + "nodeType": "VariableDeclaration", + "scope": 2852, + "src": "3809:18:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2811, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3809:7:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 2816, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2814, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2808, + "src": "3848:5:27", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$5052", + "typeString": "contract IERC20" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IERC20_$5052", + "typeString": "contract IERC20" + } + ], + "id": 2813, + "name": "_releasableAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2937, + "src": "3830:17:27", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_contract$_IERC20_$5052_$returns$_t_uint256_$", + "typeString": "function (contract IERC20) view returns (uint256)" + } + }, + "id": 2815, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3830:24:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "3809:45:27" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2820, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2818, + "name": "unreleased", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2812, + "src": "3873:10:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 2819, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3886:1:27", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "3873:14:27", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 2817, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6848, + 6849 + ], + "referencedDeclaration": 6848, + "src": "3865:7:27", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 2821, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3865:23:27", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2822, + "nodeType": "ExpressionStatement", + "src": "3865:23:27" + }, + { + "expression": { + "argumentTypes": null, + "id": 2836, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2823, + "name": "_released", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2671, + "src": "3899:9:27", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 2827, + "indexExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2825, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2808, + "src": "3917:5:27", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$5052", + "typeString": "contract IERC20" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IERC20_$5052", + "typeString": "contract IERC20" + } + ], + "id": 2824, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "3909:7:27", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 2826, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3909:14:27", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "3899:25:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2834, + "name": "unreleased", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2812, + "src": "3957:10:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2828, + "name": "_released", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2671, + "src": "3927:9:27", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 2832, + "indexExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2830, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2808, + "src": "3945:5:27", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$5052", + "typeString": "contract IERC20" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IERC20_$5052", + "typeString": "contract IERC20" + } + ], + "id": 2829, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "3937:7:27", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 2831, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3937:14:27", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3927:25:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2833, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 3461, + "src": "3927:29:27", + "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": 2835, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3927:41:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3899:69:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2837, + "nodeType": "ExpressionStatement", + "src": "3899:69:27" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2841, + "name": "_beneficiary", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2659, + "src": "3998:12:27", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 2842, + "name": "unreleased", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2812, + "src": "4012:10:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 2838, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2808, + "src": "3979:5:27", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$5052", + "typeString": "contract IERC20" + } + }, + "id": 2840, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "safeTransfer", + "nodeType": "MemberAccess", + "referencedDeclaration": 5077, + "src": "3979:18:27", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$5052_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$5052_$", + "typeString": "function (contract IERC20,address,uint256)" + } + }, + "id": 2843, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3979:44:27", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2844, + "nodeType": "ExpressionStatement", + "src": "3979:44:27" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2847, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2808, + "src": "4062:5:27", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$5052", + "typeString": "contract IERC20" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IERC20_$5052", + "typeString": "contract IERC20" + } + ], + "id": 2846, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "4054:7:27", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 2848, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4054:14:27", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 2849, + "name": "unreleased", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2812, + "src": "4070:10:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 2845, + "name": "TokensReleased", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2653, + "src": "4039:14:27", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 2850, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4039:42:27", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2851, + "nodeType": "EmitStatement", + "src": "4034:47:27" + } + ] + }, + "documentation": "@notice Transfers vested tokens to beneficiary.\n@param token ERC20 token which is being vested", + "id": 2853, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "release", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2809, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2808, + "name": "token", + "nodeType": "VariableDeclaration", + "scope": 2853, + "src": "3778:12:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$5052", + "typeString": "contract IERC20" + }, + "typeName": { + "contractScope": null, + "id": 2807, + "name": "IERC20", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 5052, + "src": "3778:6:27", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$5052", + "typeString": "contract IERC20" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3777:14:27" + }, + "returnParameters": { + "id": 2810, + "nodeType": "ParameterList", + "parameters": [], + "src": "3799:0:27" + }, + "scope": 3004, + "src": "3761:327:27", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 2917, + "nodeType": "Block", + "src": "4355:384:27", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2861, + "name": "_revocable", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2667, + "src": "4373:10:27", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 2860, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6848, + 6849 + ], + "referencedDeclaration": 6848, + "src": "4365:7:27", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 2862, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4365:19:27", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2863, + "nodeType": "ExpressionStatement", + "src": "4365:19:27" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2870, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "4402:25:27", + "subExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2865, + "name": "_revoked", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2675, + "src": "4403:8:27", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 2869, + "indexExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2867, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2855, + "src": "4420:5:27", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$5052", + "typeString": "contract IERC20" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IERC20_$5052", + "typeString": "contract IERC20" + } + ], + "id": 2866, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "4412:7:27", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 2868, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4412:14:27", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "4403:24:27", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 2864, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6848, + 6849 + ], + "referencedDeclaration": 6848, + "src": "4394:7:27", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 2871, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4394:34:27", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2872, + "nodeType": "ExpressionStatement", + "src": "4394:34:27" + }, + { + "assignments": [ + 2874 + ], + "declarations": [ + { + "constant": false, + "id": 2874, + "name": "balance", + "nodeType": "VariableDeclaration", + "scope": 2917, + "src": "4439:15:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2873, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4439:7:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 2881, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2878, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6940, + "src": "4481:4:27", + "typeDescriptions": { + "typeIdentifier": "t_contract$_TokenVesting_$3004", + "typeString": "contract TokenVesting" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_TokenVesting_$3004", + "typeString": "contract TokenVesting" + } + ], + "id": 2877, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "4473:7:27", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 2879, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4473:13:27", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 2875, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2855, + "src": "4457:5:27", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$5052", + "typeString": "contract IERC20" + } + }, + "id": 2876, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "balanceOf", + "nodeType": "MemberAccess", + "referencedDeclaration": 5026, + "src": "4457:15:27", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$", + "typeString": "function (address) view external returns (uint256)" + } + }, + "id": 2880, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4457:30:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "4439:48:27" + }, + { + "assignments": [ + 2883 + ], + "declarations": [ + { + "constant": false, + "id": 2883, + "name": "unreleased", + "nodeType": "VariableDeclaration", + "scope": 2917, + "src": "4498:18:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2882, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4498:7:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 2887, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2885, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2855, + "src": "4537:5:27", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$5052", + "typeString": "contract IERC20" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IERC20_$5052", + "typeString": "contract IERC20" + } + ], + "id": 2884, + "name": "_releasableAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2937, + "src": "4519:17:27", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_contract$_IERC20_$5052_$returns$_t_uint256_$", + "typeString": "function (contract IERC20) view returns (uint256)" + } + }, + "id": 2886, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4519:24:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "4498:45:27" + }, + { + "assignments": [ + 2889 + ], + "declarations": [ + { + "constant": false, + "id": 2889, + "name": "refund", + "nodeType": "VariableDeclaration", + "scope": 2917, + "src": "4553:14:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2888, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4553:7:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 2894, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2892, + "name": "unreleased", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2883, + "src": "4582:10:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 2890, + "name": "balance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2874, + "src": "4570:7:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2891, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sub", + "nodeType": "MemberAccess", + "referencedDeclaration": 3437, + "src": "4570:11:27", + "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": 2893, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4570:23:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "4553:40:27" + }, + { + "expression": { + "argumentTypes": null, + "id": 2901, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2895, + "name": "_revoked", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2675, + "src": "4604:8:27", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 2899, + "indexExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2897, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2855, + "src": "4621:5:27", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$5052", + "typeString": "contract IERC20" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IERC20_$5052", + "typeString": "contract IERC20" + } + ], + "id": 2896, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "4613:7:27", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 2898, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4613:14:27", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "4604:24:27", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 2900, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4631:4:27", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "src": "4604:31:27", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2902, + "nodeType": "ExpressionStatement", + "src": "4604:31:27" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 2906, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3516, + "src": "4665:5:27", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", + "typeString": "function () view returns (address)" + } + }, + "id": 2907, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4665:7:27", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 2908, + "name": "refund", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2889, + "src": "4674:6:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 2903, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2855, + "src": "4646:5:27", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$5052", + "typeString": "contract IERC20" + } + }, + "id": 2905, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "safeTransfer", + "nodeType": "MemberAccess", + "referencedDeclaration": 5077, + "src": "4646:18:27", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$5052_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$5052_$", + "typeString": "function (contract IERC20,address,uint256)" + } + }, + "id": 2909, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4646:35:27", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2910, + "nodeType": "ExpressionStatement", + "src": "4646:35:27" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2913, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2855, + "src": "4725:5:27", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$5052", + "typeString": "contract IERC20" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IERC20_$5052", + "typeString": "contract IERC20" + } + ], + "id": 2912, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "4717:7:27", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 2914, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4717:14:27", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 2911, + "name": "TokenVestingRevoked", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2657, + "src": "4697:19:27", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 2915, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4697:35:27", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2916, + "nodeType": "EmitStatement", + "src": "4692:40:27" + } + ] + }, + "documentation": "@notice Allows the owner to revoke the vesting. Tokens already vested\nremain in the contract, the rest are returned to the owner.\n@param token ERC20 token which is being vested", + "id": 2918, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": null, + "id": 2858, + "modifierName": { + "argumentTypes": null, + "id": 2857, + "name": "onlyOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3525, + "src": "4345:9:27", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "4345:9:27" + } + ], + "name": "revoke", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2856, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2855, + "name": "token", + "nodeType": "VariableDeclaration", + "scope": 2918, + "src": "4324:12:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$5052", + "typeString": "contract IERC20" + }, + "typeName": { + "contractScope": null, + "id": 2854, + "name": "IERC20", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 5052, + "src": "4324:6:27", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$5052", + "typeString": "contract IERC20" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4323:14:27" + }, + "returnParameters": { + "id": 2859, + "nodeType": "ParameterList", + "parameters": [], + "src": "4355:0:27" + }, + "scope": 3004, + "src": "4308:431:27", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 2936, + "nodeType": "Block", + "src": "4975:75:27", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2929, + "name": "_released", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2671, + "src": "5017:9:27", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 2933, + "indexExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2931, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2920, + "src": "5035:5:27", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$5052", + "typeString": "contract IERC20" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IERC20_$5052", + "typeString": "contract IERC20" + } + ], + "id": 2930, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "5027:7:27", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 2932, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5027:14:27", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "5017:25:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2926, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2920, + "src": "5006:5:27", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$5052", + "typeString": "contract IERC20" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IERC20_$5052", + "typeString": "contract IERC20" + } + ], + "id": 2925, + "name": "_vestedAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3003, + "src": "4992:13:27", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_contract$_IERC20_$5052_$returns$_t_uint256_$", + "typeString": "function (contract IERC20) view returns (uint256)" + } + }, + "id": 2927, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4992:20:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2928, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sub", + "nodeType": "MemberAccess", + "referencedDeclaration": 3437, + "src": "4992:24:27", + "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": 2934, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4992:51:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 2924, + "id": 2935, + "nodeType": "Return", + "src": "4985:58:27" + } + ] + }, + "documentation": "@dev Calculates the amount that has already vested but hasn't been released yet.\n@param token ERC20 token which is being vested", + "id": 2937, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_releasableAmount", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2921, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2920, + "name": "token", + "nodeType": "VariableDeclaration", + "scope": 2937, + "src": "4930:12:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$5052", + "typeString": "contract IERC20" + }, + "typeName": { + "contractScope": null, + "id": 2919, + "name": "IERC20", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 5052, + "src": "4930:6:27", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$5052", + "typeString": "contract IERC20" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4929:14:27" + }, + "returnParameters": { + "id": 2924, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2923, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 2937, + "src": "4966:7:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2922, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4966:7:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4965:9:27" + }, + "scope": 3004, + "src": "4903:147:27", + "stateMutability": "view", + "superFunction": null, + "visibility": "private" + }, + { + "body": { + "id": 3002, + "nodeType": "Block", + "src": "5253:445:27", + "statements": [ + { + "assignments": [ + 2945 + ], + "declarations": [ + { + "constant": false, + "id": 2945, + "name": "currentBalance", + "nodeType": "VariableDeclaration", + "scope": 3002, + "src": "5263:22:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2944, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5263:7:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 2952, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2949, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6940, + "src": "5312:4:27", + "typeDescriptions": { + "typeIdentifier": "t_contract$_TokenVesting_$3004", + "typeString": "contract TokenVesting" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_TokenVesting_$3004", + "typeString": "contract TokenVesting" + } + ], + "id": 2948, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "5304:7:27", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 2950, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5304:13:27", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 2946, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2939, + "src": "5288:5:27", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$5052", + "typeString": "contract IERC20" + } + }, + "id": 2947, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "balanceOf", + "nodeType": "MemberAccess", + "referencedDeclaration": 5026, + "src": "5288:15:27", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$", + "typeString": "function (address) view external returns (uint256)" + } + }, + "id": 2951, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5288:30:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "5263:55:27" + }, + { + "assignments": [ + 2954 + ], + "declarations": [ + { + "constant": false, + "id": 2954, + "name": "totalBalance", + "nodeType": "VariableDeclaration", + "scope": 3002, + "src": "5328:20:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2953, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5328:7:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 2963, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2957, + "name": "_released", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2671, + "src": "5370:9:27", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 2961, + "indexExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2959, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2939, + "src": "5388:5:27", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$5052", + "typeString": "contract IERC20" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IERC20_$5052", + "typeString": "contract IERC20" + } + ], + "id": 2958, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "5380:7:27", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 2960, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5380:14:27", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "5370:25:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 2955, + "name": "currentBalance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2945, + "src": "5351:14:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2956, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 3461, + "src": "5351:18:27", + "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": 2962, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5351:45:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "5328:68:27" + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2967, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 2964, + "name": "block", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6835, + "src": "5411:5:27", + "typeDescriptions": { + "typeIdentifier": "t_magic_block", + "typeString": "block" + } + }, + "id": 2965, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "timestamp", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "5411:15:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "argumentTypes": null, + "id": 2966, + "name": "_cliff", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2661, + "src": "5429:6:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "5411:24:27", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 2983, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2977, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 2971, + "name": "block", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6835, + "src": "5480:5:27", + "typeDescriptions": { + "typeIdentifier": "t_magic_block", + "typeString": "block" + } + }, + "id": 2972, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "timestamp", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "5480:15:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2975, + "name": "_duration", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2665, + "src": "5510:9:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 2973, + "name": "_start", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2663, + "src": "5499:6:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2974, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 3461, + "src": "5499:10:27", + "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": 2976, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5499:21:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "5480:40:27", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2978, + "name": "_revoked", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2675, + "src": "5524:8:27", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 2982, + "indexExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2980, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2939, + "src": "5541:5:27", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$5052", + "typeString": "contract IERC20" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IERC20_$5052", + "typeString": "contract IERC20" + } + ], + "id": 2979, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "5533:7:27", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 2981, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5533:14:27", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "5524:24:27", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "5480:68:27", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 2999, + "nodeType": "Block", + "src": "5600:92:27", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2996, + "name": "_duration", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2665, + "src": "5671:9:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2992, + "name": "_start", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2663, + "src": "5658:6:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 2989, + "name": "block", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6835, + "src": "5638:5:27", + "typeDescriptions": { + "typeIdentifier": "t_magic_block", + "typeString": "block" + } + }, + "id": 2990, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "timestamp", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "5638:15:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2991, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sub", + "nodeType": "MemberAccess", + "referencedDeclaration": 3437, + "src": "5638:19:27", + "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": 2993, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5638:27:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 2987, + "name": "totalBalance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2954, + "src": "5621:12:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2988, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "mul", + "nodeType": "MemberAccess", + "referencedDeclaration": 3389, + "src": "5621:16:27", + "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": 2994, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5621:45:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2995, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "div", + "nodeType": "MemberAccess", + "referencedDeclaration": 3413, + "src": "5621:49:27", + "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": 2997, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5621:60:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 2943, + "id": 2998, + "nodeType": "Return", + "src": "5614:67:27" + } + ] + }, + "id": 3000, + "nodeType": "IfStatement", + "src": "5476:216:27", + "trueBody": { + "id": 2986, + "nodeType": "Block", + "src": "5550:44:27", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 2984, + "name": "totalBalance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2954, + "src": "5571:12:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 2943, + "id": 2985, + "nodeType": "Return", + "src": "5564:19:27" + } + ] + } + }, + "id": 3001, + "nodeType": "IfStatement", + "src": "5407:285:27", + "trueBody": { + "id": 2970, + "nodeType": "Block", + "src": "5437:33:27", + "statements": [ + { + "expression": { + "argumentTypes": null, + "hexValue": "30", + "id": 2968, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5458:1:27", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "functionReturnParameters": 2943, + "id": 2969, + "nodeType": "Return", + "src": "5451:8:27" + } + ] + } + } + ] + }, + "documentation": "@dev Calculates the amount that has already vested.\n@param token ERC20 token which is being vested", + "id": 3003, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_vestedAmount", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2940, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2939, + "name": "token", + "nodeType": "VariableDeclaration", + "scope": 3003, + "src": "5208:12:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$5052", + "typeString": "contract IERC20" + }, + "typeName": { + "contractScope": null, + "id": 2938, + "name": "IERC20", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 5052, + "src": "5208:6:27", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$5052", + "typeString": "contract IERC20" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "5207:14:27" + }, + "returnParameters": { + "id": 2943, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2942, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 3003, + "src": "5244:7:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2941, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5244:7:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "5243:9:27" + }, + "scope": 3004, + "src": "5185:513:27", + "stateMutability": "view", + "superFunction": null, + "visibility": "private" + } + ], + "scope": 3005, + "src": "344:5356:27" + } + ], + "src": "0:5701:27" + }, + "legacyAST": { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/drafts/TokenVesting.sol", + "exportedSymbols": { + "TokenVesting": [ + 3004 + ] + }, + "id": 3005, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 2636, + "literals": [ + "solidity", + "^", + "0.5", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "0:23:27" + }, + { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol", + "file": "../token/ERC20/SafeERC20.sol", + "id": 2637, + "nodeType": "ImportDirective", + "scope": 3005, + "sourceUnit": 5197, + "src": "25:38:27", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/ownership/Ownable.sol", + "file": "../ownership/Ownable.sol", + "id": 2638, + "nodeType": "ImportDirective", + "scope": 3005, + "sourceUnit": 3592, + "src": "64:34:27", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/math/SafeMath.sol", + "file": "../math/SafeMath.sol", + "id": 2639, + "nodeType": "ImportDirective", + "scope": 3005, + "sourceUnit": 3483, + "src": "99:30:27", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 2640, + "name": "Ownable", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 3591, + "src": "369:7:27", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Ownable_$3591", + "typeString": "contract Ownable" + } + }, + "id": 2641, + "nodeType": "InheritanceSpecifier", + "src": "369:7:27" + } + ], + "contractDependencies": [ + 3591 + ], + "contractKind": "contract", + "documentation": "@title TokenVesting\n@dev A token holder contract that can release its token balance gradually like a\ntypical vesting scheme, with a cliff and vesting period. Optionally revocable by the\nowner.", + "fullyImplemented": true, + "id": 3004, + "linearizedBaseContracts": [ + 3004, + 3591 + ], + "name": "TokenVesting", + "nodeType": "ContractDefinition", + "nodes": [ + { + "id": 2644, + "libraryName": { + "contractScope": null, + "id": 2642, + "name": "SafeMath", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 3482, + "src": "856:8:27", + "typeDescriptions": { + "typeIdentifier": "t_contract$_SafeMath_$3482", + "typeString": "library SafeMath" + } + }, + "nodeType": "UsingForDirective", + "src": "850:27:27", + "typeName": { + "id": 2643, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "869:7:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + { + "id": 2647, + "libraryName": { + "contractScope": null, + "id": 2645, + "name": "SafeERC20", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 5196, + "src": "888:9:27", + "typeDescriptions": { + "typeIdentifier": "t_contract$_SafeERC20_$5196", + "typeString": "library SafeERC20" + } + }, + "nodeType": "UsingForDirective", + "src": "882:27:27", + "typeName": { + "contractScope": null, + "id": 2646, + "name": "IERC20", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 5052, + "src": "902:6:27", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$5052", + "typeString": "contract IERC20" + } + } + }, + { + "anonymous": false, + "documentation": null, + "id": 2653, + "name": "TokensReleased", + "nodeType": "EventDefinition", + "parameters": { + "id": 2652, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2649, + "indexed": false, + "name": "token", + "nodeType": "VariableDeclaration", + "scope": 2653, + "src": "936:13:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2648, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "936:7:27", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2651, + "indexed": false, + "name": "amount", + "nodeType": "VariableDeclaration", + "scope": 2653, + "src": "951:14:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2650, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "951:7:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "935:31:27" + }, + "src": "915:52:27" + }, + { + "anonymous": false, + "documentation": null, + "id": 2657, + "name": "TokenVestingRevoked", + "nodeType": "EventDefinition", + "parameters": { + "id": 2656, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2655, + "indexed": false, + "name": "token", + "nodeType": "VariableDeclaration", + "scope": 2657, + "src": "998:13:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2654, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "998:7:27", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "997:15:27" + }, + "src": "972:41:27" + }, + { + "constant": false, + "id": 2659, + "name": "_beneficiary", + "nodeType": "VariableDeclaration", + "scope": 3004, + "src": "1072:28:27", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2658, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1072:7:27", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "private" + }, + { + "constant": false, + "id": 2661, + "name": "_cliff", + "nodeType": "VariableDeclaration", + "scope": 3004, + "src": "1202:22:27", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2660, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1202:7:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "private" + }, + { + "constant": false, + "id": 2663, + "name": "_start", + "nodeType": "VariableDeclaration", + "scope": 3004, + "src": "1230:22:27", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2662, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1230:7:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "private" + }, + { + "constant": false, + "id": 2665, + "name": "_duration", + "nodeType": "VariableDeclaration", + "scope": 3004, + "src": "1258:25:27", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2664, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1258:7:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "private" + }, + { + "constant": false, + "id": 2667, + "name": "_revocable", + "nodeType": "VariableDeclaration", + "scope": 3004, + "src": "1290:23:27", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 2666, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1290:4:27", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "private" + }, + { + "constant": false, + "id": 2671, + "name": "_released", + "nodeType": "VariableDeclaration", + "scope": 3004, + "src": "1320:46:27", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + }, + "typeName": { + "id": 2670, + "keyType": { + "id": 2668, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1329:7:27", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "1320:28:27", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + }, + "valueType": { + "id": 2669, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1340:7:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "value": null, + "visibility": "private" + }, + { + "constant": false, + "id": 2675, + "name": "_revoked", + "nodeType": "VariableDeclaration", + "scope": 3004, + "src": "1372:42:27", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + }, + "typeName": { + "id": 2674, + "keyType": { + "id": 2672, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1381:7:27", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "1372:25:27", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + }, + "valueType": { + "id": 2673, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1392:4:27", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + }, + "value": null, + "visibility": "private" + }, + { + "body": { + "id": 2741, + "nodeType": "Block", + "src": "2176:348:27", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 2693, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2689, + "name": "beneficiary", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2677, + "src": "2194:11:27", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 2691, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2217:1:27", + "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": 2690, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2209:7:27", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 2692, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2209:10:27", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "2194:25:27", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 2688, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6848, + 6849 + ], + "referencedDeclaration": 6848, + "src": "2186:7:27", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 2694, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2186:34:27", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2695, + "nodeType": "ExpressionStatement", + "src": "2186:34:27" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2699, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2697, + "name": "cliffDuration", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2681, + "src": "2238:13:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<=", + "rightExpression": { + "argumentTypes": null, + "id": 2698, + "name": "duration", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2683, + "src": "2255:8:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2238:25:27", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 2696, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6848, + 6849 + ], + "referencedDeclaration": 6848, + "src": "2230:7:27", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 2700, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2230:34:27", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2701, + "nodeType": "ExpressionStatement", + "src": "2230:34:27" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2705, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2703, + "name": "duration", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2683, + "src": "2282:8:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 2704, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2293:1:27", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "2282:12:27", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 2702, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6848, + 6849 + ], + "referencedDeclaration": 6848, + "src": "2274:7:27", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 2706, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2274:21:27", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2707, + "nodeType": "ExpressionStatement", + "src": "2274:21:27" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2715, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2711, + "name": "duration", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2683, + "src": "2323:8:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 2709, + "name": "start", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2679, + "src": "2313:5:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2710, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 3461, + "src": "2313:9:27", + "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": 2712, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2313:19:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 2713, + "name": "block", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6835, + "src": "2335:5:27", + "typeDescriptions": { + "typeIdentifier": "t_magic_block", + "typeString": "block" + } + }, + "id": 2714, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "timestamp", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2335:15:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2313:37:27", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 2708, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6848, + 6849 + ], + "referencedDeclaration": 6848, + "src": "2305:7:27", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 2716, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2305:46:27", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2717, + "nodeType": "ExpressionStatement", + "src": "2305:46:27" + }, + { + "expression": { + "argumentTypes": null, + "id": 2720, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 2718, + "name": "_beneficiary", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2659, + "src": "2362:12:27", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 2719, + "name": "beneficiary", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2677, + "src": "2377:11:27", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "2362:26:27", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 2721, + "nodeType": "ExpressionStatement", + "src": "2362:26:27" + }, + { + "expression": { + "argumentTypes": null, + "id": 2724, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 2722, + "name": "_revocable", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2667, + "src": "2398:10:27", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 2723, + "name": "revocable", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2685, + "src": "2411:9:27", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "2398:22:27", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2725, + "nodeType": "ExpressionStatement", + "src": "2398:22:27" + }, + { + "expression": { + "argumentTypes": null, + "id": 2728, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 2726, + "name": "_duration", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2665, + "src": "2430:9:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 2727, + "name": "duration", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2683, + "src": "2442:8:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2430:20:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2729, + "nodeType": "ExpressionStatement", + "src": "2430:20:27" + }, + { + "expression": { + "argumentTypes": null, + "id": 2735, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 2730, + "name": "_cliff", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2661, + "src": "2460:6:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2733, + "name": "cliffDuration", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2681, + "src": "2479:13:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 2731, + "name": "start", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2679, + "src": "2469:5:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2732, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 3461, + "src": "2469:9:27", + "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": 2734, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2469:24:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2460:33:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2736, + "nodeType": "ExpressionStatement", + "src": "2460:33:27" + }, + { + "expression": { + "argumentTypes": null, + "id": 2739, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 2737, + "name": "_start", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2663, + "src": "2503:6:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 2738, + "name": "start", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2679, + "src": "2512:5:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2503:14:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2740, + "nodeType": "ExpressionStatement", + "src": "2503:14:27" + } + ] + }, + "documentation": "@dev Creates a vesting contract that vests its balance of any ERC20 token to the\nbeneficiary, gradually in a linear fashion until start + duration. By then all\nof the balance will have vested.\n@param beneficiary address of the beneficiary to whom vested tokens are transferred\n@param cliffDuration duration in seconds of the cliff in which tokens will begin to vest\n@param start the time (as Unix time) at which point vesting starts\n@param duration duration in seconds of the period in which the tokens will vest\n@param revocable whether the vesting is revocable or not", + "id": 2742, + "implemented": true, + "kind": "constructor", + "modifiers": [], + "name": "", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2686, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2677, + "name": "beneficiary", + "nodeType": "VariableDeclaration", + "scope": 2742, + "src": "2076:19:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2676, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2076:7:27", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2679, + "name": "start", + "nodeType": "VariableDeclaration", + "scope": 2742, + "src": "2097:13:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2678, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2097:7:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2681, + "name": "cliffDuration", + "nodeType": "VariableDeclaration", + "scope": 2742, + "src": "2112:21:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2680, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2112:7:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2683, + "name": "duration", + "nodeType": "VariableDeclaration", + "scope": 2742, + "src": "2135:16:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2682, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2135:7:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2685, + "name": "revocable", + "nodeType": "VariableDeclaration", + "scope": 2742, + "src": "2153:14:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 2684, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "2153:4:27", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2075:93:27" + }, + "returnParameters": { + "id": 2687, + "nodeType": "ParameterList", + "parameters": [], + "src": "2176:0:27" + }, + "scope": 3004, + "src": "2063:461:27", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 2749, + "nodeType": "Block", + "src": "2645:36:27", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 2747, + "name": "_beneficiary", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2659, + "src": "2662:12:27", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "functionReturnParameters": 2746, + "id": 2748, + "nodeType": "Return", + "src": "2655:19:27" + } + ] + }, + "documentation": "@return the beneficiary of the tokens.", + "id": 2750, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "beneficiary", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2743, + "nodeType": "ParameterList", + "parameters": [], + "src": "2612:2:27" + }, + "returnParameters": { + "id": 2746, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2745, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 2750, + "src": "2636:7:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2744, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2636:7:27", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2635:9:27" + }, + "scope": 3004, + "src": "2592:89:27", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 2757, + "nodeType": "Block", + "src": "2802:30:27", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 2755, + "name": "_cliff", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2661, + "src": "2819:6:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 2754, + "id": 2756, + "nodeType": "Return", + "src": "2812:13:27" + } + ] + }, + "documentation": "@return the cliff time of the token vesting.", + "id": 2758, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "cliff", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2751, + "nodeType": "ParameterList", + "parameters": [], + "src": "2769:2:27" + }, + "returnParameters": { + "id": 2754, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2753, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 2758, + "src": "2793:7:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2752, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2793:7:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2792:9:27" + }, + "scope": 3004, + "src": "2755:77:27", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 2765, + "nodeType": "Block", + "src": "2953:30:27", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 2763, + "name": "_start", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2663, + "src": "2970:6:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 2762, + "id": 2764, + "nodeType": "Return", + "src": "2963:13:27" + } + ] + }, + "documentation": "@return the start time of the token vesting.", + "id": 2766, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "start", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2759, + "nodeType": "ParameterList", + "parameters": [], + "src": "2920:2:27" + }, + "returnParameters": { + "id": 2762, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2761, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 2766, + "src": "2944:7:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2760, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2944:7:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2943:9:27" + }, + "scope": 3004, + "src": "2906:77:27", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 2773, + "nodeType": "Block", + "src": "3105:33:27", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 2771, + "name": "_duration", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2665, + "src": "3122:9:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 2770, + "id": 2772, + "nodeType": "Return", + "src": "3115:16:27" + } + ] + }, + "documentation": "@return the duration of the token vesting.", + "id": 2774, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "duration", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2767, + "nodeType": "ParameterList", + "parameters": [], + "src": "3072:2:27" + }, + "returnParameters": { + "id": 2770, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2769, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 2774, + "src": "3096:7:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2768, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3096:7:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3095:9:27" + }, + "scope": 3004, + "src": "3055:83:27", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 2781, + "nodeType": "Block", + "src": "3257:34:27", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 2779, + "name": "_revocable", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2667, + "src": "3274:10:27", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 2778, + "id": 2780, + "nodeType": "Return", + "src": "3267:17:27" + } + ] + }, + "documentation": "@return true if the vesting is revocable.", + "id": 2782, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "revocable", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2775, + "nodeType": "ParameterList", + "parameters": [], + "src": "3227:2:27" + }, + "returnParameters": { + "id": 2778, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2777, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 2782, + "src": "3251:4:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 2776, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "3251:4:27", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3250:6:27" + }, + "scope": 3004, + "src": "3209:82:27", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 2793, + "nodeType": "Block", + "src": "3425:40:27", + "statements": [ + { + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2789, + "name": "_released", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2671, + "src": "3442:9:27", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 2791, + "indexExpression": { + "argumentTypes": null, + "id": 2790, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2784, + "src": "3452:5:27", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3442:16:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 2788, + "id": 2792, + "nodeType": "Return", + "src": "3435:23:27" + } + ] + }, + "documentation": "@return the amount of the token released.", + "id": 2794, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "released", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2785, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2784, + "name": "token", + "nodeType": "VariableDeclaration", + "scope": 2794, + "src": "3380:13:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2783, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3380:7:27", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3379:15:27" + }, + "returnParameters": { + "id": 2788, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2787, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 2794, + "src": "3416:7:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2786, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3416:7:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3415:9:27" + }, + "scope": 3004, + "src": "3362:103:27", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 2805, + "nodeType": "Block", + "src": "3591:39:27", + "statements": [ + { + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2801, + "name": "_revoked", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2675, + "src": "3608:8:27", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 2803, + "indexExpression": { + "argumentTypes": null, + "id": 2802, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2796, + "src": "3617:5:27", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3608:15:27", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 2800, + "id": 2804, + "nodeType": "Return", + "src": "3601:22:27" + } + ] + }, + "documentation": "@return true if the token is revoked.", + "id": 2806, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "revoked", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2797, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2796, + "name": "token", + "nodeType": "VariableDeclaration", + "scope": 2806, + "src": "3549:13:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2795, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3549:7:27", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3548:15:27" + }, + "returnParameters": { + "id": 2800, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2799, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 2806, + "src": "3585:4:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 2798, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "3585:4:27", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3584:6:27" + }, + "scope": 3004, + "src": "3532:98:27", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 2852, + "nodeType": "Block", + "src": "3799:289:27", + "statements": [ + { + "assignments": [ + 2812 + ], + "declarations": [ + { + "constant": false, + "id": 2812, + "name": "unreleased", + "nodeType": "VariableDeclaration", + "scope": 2852, + "src": "3809:18:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2811, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3809:7:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 2816, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2814, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2808, + "src": "3848:5:27", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$5052", + "typeString": "contract IERC20" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IERC20_$5052", + "typeString": "contract IERC20" + } + ], + "id": 2813, + "name": "_releasableAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2937, + "src": "3830:17:27", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_contract$_IERC20_$5052_$returns$_t_uint256_$", + "typeString": "function (contract IERC20) view returns (uint256)" + } + }, + "id": 2815, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3830:24:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "3809:45:27" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2820, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2818, + "name": "unreleased", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2812, + "src": "3873:10:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 2819, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3886:1:27", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "3873:14:27", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 2817, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6848, + 6849 + ], + "referencedDeclaration": 6848, + "src": "3865:7:27", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 2821, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3865:23:27", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2822, + "nodeType": "ExpressionStatement", + "src": "3865:23:27" + }, + { + "expression": { + "argumentTypes": null, + "id": 2836, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2823, + "name": "_released", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2671, + "src": "3899:9:27", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 2827, + "indexExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2825, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2808, + "src": "3917:5:27", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$5052", + "typeString": "contract IERC20" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IERC20_$5052", + "typeString": "contract IERC20" + } + ], + "id": 2824, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "3909:7:27", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 2826, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3909:14:27", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "3899:25:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2834, + "name": "unreleased", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2812, + "src": "3957:10:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2828, + "name": "_released", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2671, + "src": "3927:9:27", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 2832, + "indexExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2830, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2808, + "src": "3945:5:27", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$5052", + "typeString": "contract IERC20" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IERC20_$5052", + "typeString": "contract IERC20" + } + ], + "id": 2829, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "3937:7:27", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 2831, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3937:14:27", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3927:25:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2833, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 3461, + "src": "3927:29:27", + "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": 2835, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3927:41:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3899:69:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2837, + "nodeType": "ExpressionStatement", + "src": "3899:69:27" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2841, + "name": "_beneficiary", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2659, + "src": "3998:12:27", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 2842, + "name": "unreleased", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2812, + "src": "4012:10:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 2838, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2808, + "src": "3979:5:27", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$5052", + "typeString": "contract IERC20" + } + }, + "id": 2840, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "safeTransfer", + "nodeType": "MemberAccess", + "referencedDeclaration": 5077, + "src": "3979:18:27", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$5052_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$5052_$", + "typeString": "function (contract IERC20,address,uint256)" + } + }, + "id": 2843, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3979:44:27", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2844, + "nodeType": "ExpressionStatement", + "src": "3979:44:27" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2847, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2808, + "src": "4062:5:27", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$5052", + "typeString": "contract IERC20" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IERC20_$5052", + "typeString": "contract IERC20" + } + ], + "id": 2846, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "4054:7:27", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 2848, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4054:14:27", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 2849, + "name": "unreleased", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2812, + "src": "4070:10:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 2845, + "name": "TokensReleased", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2653, + "src": "4039:14:27", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 2850, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4039:42:27", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2851, + "nodeType": "EmitStatement", + "src": "4034:47:27" + } + ] + }, + "documentation": "@notice Transfers vested tokens to beneficiary.\n@param token ERC20 token which is being vested", + "id": 2853, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "release", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2809, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2808, + "name": "token", + "nodeType": "VariableDeclaration", + "scope": 2853, + "src": "3778:12:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$5052", + "typeString": "contract IERC20" + }, + "typeName": { + "contractScope": null, + "id": 2807, + "name": "IERC20", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 5052, + "src": "3778:6:27", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$5052", + "typeString": "contract IERC20" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3777:14:27" + }, + "returnParameters": { + "id": 2810, + "nodeType": "ParameterList", + "parameters": [], + "src": "3799:0:27" + }, + "scope": 3004, + "src": "3761:327:27", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 2917, + "nodeType": "Block", + "src": "4355:384:27", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2861, + "name": "_revocable", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2667, + "src": "4373:10:27", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 2860, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6848, + 6849 + ], + "referencedDeclaration": 6848, + "src": "4365:7:27", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 2862, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4365:19:27", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2863, + "nodeType": "ExpressionStatement", + "src": "4365:19:27" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2870, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "4402:25:27", + "subExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2865, + "name": "_revoked", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2675, + "src": "4403:8:27", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 2869, + "indexExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2867, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2855, + "src": "4420:5:27", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$5052", + "typeString": "contract IERC20" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IERC20_$5052", + "typeString": "contract IERC20" + } + ], + "id": 2866, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "4412:7:27", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 2868, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4412:14:27", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "4403:24:27", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 2864, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6848, + 6849 + ], + "referencedDeclaration": 6848, + "src": "4394:7:27", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 2871, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4394:34:27", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2872, + "nodeType": "ExpressionStatement", + "src": "4394:34:27" + }, + { + "assignments": [ + 2874 + ], + "declarations": [ + { + "constant": false, + "id": 2874, + "name": "balance", + "nodeType": "VariableDeclaration", + "scope": 2917, + "src": "4439:15:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2873, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4439:7:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 2881, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2878, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6940, + "src": "4481:4:27", + "typeDescriptions": { + "typeIdentifier": "t_contract$_TokenVesting_$3004", + "typeString": "contract TokenVesting" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_TokenVesting_$3004", + "typeString": "contract TokenVesting" + } + ], + "id": 2877, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "4473:7:27", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 2879, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4473:13:27", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 2875, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2855, + "src": "4457:5:27", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$5052", + "typeString": "contract IERC20" + } + }, + "id": 2876, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "balanceOf", + "nodeType": "MemberAccess", + "referencedDeclaration": 5026, + "src": "4457:15:27", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$", + "typeString": "function (address) view external returns (uint256)" + } + }, + "id": 2880, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4457:30:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "4439:48:27" + }, + { + "assignments": [ + 2883 + ], + "declarations": [ + { + "constant": false, + "id": 2883, + "name": "unreleased", + "nodeType": "VariableDeclaration", + "scope": 2917, + "src": "4498:18:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2882, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4498:7:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 2887, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2885, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2855, + "src": "4537:5:27", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$5052", + "typeString": "contract IERC20" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IERC20_$5052", + "typeString": "contract IERC20" + } + ], + "id": 2884, + "name": "_releasableAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2937, + "src": "4519:17:27", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_contract$_IERC20_$5052_$returns$_t_uint256_$", + "typeString": "function (contract IERC20) view returns (uint256)" + } + }, + "id": 2886, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4519:24:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "4498:45:27" + }, + { + "assignments": [ + 2889 + ], + "declarations": [ + { + "constant": false, + "id": 2889, + "name": "refund", + "nodeType": "VariableDeclaration", + "scope": 2917, + "src": "4553:14:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2888, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4553:7:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 2894, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2892, + "name": "unreleased", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2883, + "src": "4582:10:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 2890, + "name": "balance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2874, + "src": "4570:7:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2891, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sub", + "nodeType": "MemberAccess", + "referencedDeclaration": 3437, + "src": "4570:11:27", + "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": 2893, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4570:23:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "4553:40:27" + }, + { + "expression": { + "argumentTypes": null, + "id": 2901, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2895, + "name": "_revoked", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2675, + "src": "4604:8:27", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 2899, + "indexExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2897, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2855, + "src": "4621:5:27", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$5052", + "typeString": "contract IERC20" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IERC20_$5052", + "typeString": "contract IERC20" + } + ], + "id": 2896, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "4613:7:27", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 2898, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4613:14:27", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "4604:24:27", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 2900, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4631:4:27", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "src": "4604:31:27", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2902, + "nodeType": "ExpressionStatement", + "src": "4604:31:27" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 2906, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3516, + "src": "4665:5:27", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", + "typeString": "function () view returns (address)" + } + }, + "id": 2907, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4665:7:27", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 2908, + "name": "refund", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2889, + "src": "4674:6:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 2903, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2855, + "src": "4646:5:27", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$5052", + "typeString": "contract IERC20" + } + }, + "id": 2905, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "safeTransfer", + "nodeType": "MemberAccess", + "referencedDeclaration": 5077, + "src": "4646:18:27", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$5052_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$5052_$", + "typeString": "function (contract IERC20,address,uint256)" + } + }, + "id": 2909, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4646:35:27", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2910, + "nodeType": "ExpressionStatement", + "src": "4646:35:27" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2913, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2855, + "src": "4725:5:27", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$5052", + "typeString": "contract IERC20" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IERC20_$5052", + "typeString": "contract IERC20" + } + ], + "id": 2912, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "4717:7:27", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 2914, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4717:14:27", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 2911, + "name": "TokenVestingRevoked", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2657, + "src": "4697:19:27", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 2915, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4697:35:27", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2916, + "nodeType": "EmitStatement", + "src": "4692:40:27" + } + ] + }, + "documentation": "@notice Allows the owner to revoke the vesting. Tokens already vested\nremain in the contract, the rest are returned to the owner.\n@param token ERC20 token which is being vested", + "id": 2918, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": null, + "id": 2858, + "modifierName": { + "argumentTypes": null, + "id": 2857, + "name": "onlyOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3525, + "src": "4345:9:27", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "4345:9:27" + } + ], + "name": "revoke", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2856, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2855, + "name": "token", + "nodeType": "VariableDeclaration", + "scope": 2918, + "src": "4324:12:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$5052", + "typeString": "contract IERC20" + }, + "typeName": { + "contractScope": null, + "id": 2854, + "name": "IERC20", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 5052, + "src": "4324:6:27", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$5052", + "typeString": "contract IERC20" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4323:14:27" + }, + "returnParameters": { + "id": 2859, + "nodeType": "ParameterList", + "parameters": [], + "src": "4355:0:27" + }, + "scope": 3004, + "src": "4308:431:27", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 2936, + "nodeType": "Block", + "src": "4975:75:27", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2929, + "name": "_released", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2671, + "src": "5017:9:27", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 2933, + "indexExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2931, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2920, + "src": "5035:5:27", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$5052", + "typeString": "contract IERC20" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IERC20_$5052", + "typeString": "contract IERC20" + } + ], + "id": 2930, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "5027:7:27", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 2932, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5027:14:27", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "5017:25:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2926, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2920, + "src": "5006:5:27", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$5052", + "typeString": "contract IERC20" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IERC20_$5052", + "typeString": "contract IERC20" + } + ], + "id": 2925, + "name": "_vestedAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3003, + "src": "4992:13:27", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_contract$_IERC20_$5052_$returns$_t_uint256_$", + "typeString": "function (contract IERC20) view returns (uint256)" + } + }, + "id": 2927, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4992:20:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2928, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sub", + "nodeType": "MemberAccess", + "referencedDeclaration": 3437, + "src": "4992:24:27", + "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": 2934, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4992:51:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 2924, + "id": 2935, + "nodeType": "Return", + "src": "4985:58:27" + } + ] + }, + "documentation": "@dev Calculates the amount that has already vested but hasn't been released yet.\n@param token ERC20 token which is being vested", + "id": 2937, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_releasableAmount", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2921, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2920, + "name": "token", + "nodeType": "VariableDeclaration", + "scope": 2937, + "src": "4930:12:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$5052", + "typeString": "contract IERC20" + }, + "typeName": { + "contractScope": null, + "id": 2919, + "name": "IERC20", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 5052, + "src": "4930:6:27", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$5052", + "typeString": "contract IERC20" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4929:14:27" + }, + "returnParameters": { + "id": 2924, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2923, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 2937, + "src": "4966:7:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2922, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4966:7:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4965:9:27" + }, + "scope": 3004, + "src": "4903:147:27", + "stateMutability": "view", + "superFunction": null, + "visibility": "private" + }, + { + "body": { + "id": 3002, + "nodeType": "Block", + "src": "5253:445:27", + "statements": [ + { + "assignments": [ + 2945 + ], + "declarations": [ + { + "constant": false, + "id": 2945, + "name": "currentBalance", + "nodeType": "VariableDeclaration", + "scope": 3002, + "src": "5263:22:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2944, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5263:7:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 2952, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2949, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6940, + "src": "5312:4:27", + "typeDescriptions": { + "typeIdentifier": "t_contract$_TokenVesting_$3004", + "typeString": "contract TokenVesting" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_TokenVesting_$3004", + "typeString": "contract TokenVesting" + } + ], + "id": 2948, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "5304:7:27", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 2950, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5304:13:27", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 2946, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2939, + "src": "5288:5:27", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$5052", + "typeString": "contract IERC20" + } + }, + "id": 2947, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "balanceOf", + "nodeType": "MemberAccess", + "referencedDeclaration": 5026, + "src": "5288:15:27", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$", + "typeString": "function (address) view external returns (uint256)" + } + }, + "id": 2951, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5288:30:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "5263:55:27" + }, + { + "assignments": [ + 2954 + ], + "declarations": [ + { + "constant": false, + "id": 2954, + "name": "totalBalance", + "nodeType": "VariableDeclaration", + "scope": 3002, + "src": "5328:20:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2953, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5328:7:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 2963, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2957, + "name": "_released", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2671, + "src": "5370:9:27", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 2961, + "indexExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2959, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2939, + "src": "5388:5:27", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$5052", + "typeString": "contract IERC20" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IERC20_$5052", + "typeString": "contract IERC20" + } + ], + "id": 2958, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "5380:7:27", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 2960, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5380:14:27", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "5370:25:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 2955, + "name": "currentBalance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2945, + "src": "5351:14:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2956, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 3461, + "src": "5351:18:27", + "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": 2962, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5351:45:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "5328:68:27" + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2967, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 2964, + "name": "block", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6835, + "src": "5411:5:27", + "typeDescriptions": { + "typeIdentifier": "t_magic_block", + "typeString": "block" + } + }, + "id": 2965, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "timestamp", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "5411:15:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "argumentTypes": null, + "id": 2966, + "name": "_cliff", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2661, + "src": "5429:6:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "5411:24:27", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 2983, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2977, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 2971, + "name": "block", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6835, + "src": "5480:5:27", + "typeDescriptions": { + "typeIdentifier": "t_magic_block", + "typeString": "block" + } + }, + "id": 2972, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "timestamp", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "5480:15:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2975, + "name": "_duration", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2665, + "src": "5510:9:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 2973, + "name": "_start", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2663, + "src": "5499:6:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2974, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 3461, + "src": "5499:10:27", + "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": 2976, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5499:21:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "5480:40:27", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2978, + "name": "_revoked", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2675, + "src": "5524:8:27", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 2982, + "indexExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2980, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2939, + "src": "5541:5:27", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$5052", + "typeString": "contract IERC20" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IERC20_$5052", + "typeString": "contract IERC20" + } + ], + "id": 2979, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "5533:7:27", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 2981, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5533:14:27", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "5524:24:27", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "5480:68:27", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 2999, + "nodeType": "Block", + "src": "5600:92:27", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2996, + "name": "_duration", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2665, + "src": "5671:9:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2992, + "name": "_start", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2663, + "src": "5658:6:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 2989, + "name": "block", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6835, + "src": "5638:5:27", + "typeDescriptions": { + "typeIdentifier": "t_magic_block", + "typeString": "block" + } + }, + "id": 2990, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "timestamp", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "5638:15:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2991, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sub", + "nodeType": "MemberAccess", + "referencedDeclaration": 3437, + "src": "5638:19:27", + "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": 2993, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5638:27:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 2987, + "name": "totalBalance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2954, + "src": "5621:12:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2988, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "mul", + "nodeType": "MemberAccess", + "referencedDeclaration": 3389, + "src": "5621:16:27", + "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": 2994, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5621:45:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2995, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "div", + "nodeType": "MemberAccess", + "referencedDeclaration": 3413, + "src": "5621:49:27", + "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": 2997, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5621:60:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 2943, + "id": 2998, + "nodeType": "Return", + "src": "5614:67:27" + } + ] + }, + "id": 3000, + "nodeType": "IfStatement", + "src": "5476:216:27", + "trueBody": { + "id": 2986, + "nodeType": "Block", + "src": "5550:44:27", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 2984, + "name": "totalBalance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2954, + "src": "5571:12:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 2943, + "id": 2985, + "nodeType": "Return", + "src": "5564:19:27" + } + ] + } + }, + "id": 3001, + "nodeType": "IfStatement", + "src": "5407:285:27", + "trueBody": { + "id": 2970, + "nodeType": "Block", + "src": "5437:33:27", + "statements": [ + { + "expression": { + "argumentTypes": null, + "hexValue": "30", + "id": 2968, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5458:1:27", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "functionReturnParameters": 2943, + "id": 2969, + "nodeType": "Return", + "src": "5451:8:27" + } + ] + } + } + ] + }, + "documentation": "@dev Calculates the amount that has already vested.\n@param token ERC20 token which is being vested", + "id": 3003, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_vestedAmount", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2940, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2939, + "name": "token", + "nodeType": "VariableDeclaration", + "scope": 3003, + "src": "5208:12:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$5052", + "typeString": "contract IERC20" + }, + "typeName": { + "contractScope": null, + "id": 2938, + "name": "IERC20", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 5052, + "src": "5208:6:27", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$5052", + "typeString": "contract IERC20" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "5207:14:27" + }, + "returnParameters": { + "id": 2943, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2942, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 3003, + "src": "5244:7:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2941, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5244:7:27", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "5243:9:27" + }, + "scope": 3004, + "src": "5185:513:27", + "stateMutability": "view", + "superFunction": null, + "visibility": "private" + } + ], + "scope": 3005, + "src": "344:5356:27" + } + ], + "src": "0:5701:27" + }, + "compiler": { + "name": "solc", + "version": "0.5.0+commit.1d4f565a.Emscripten.clang" + }, + "networks": {}, + "schemaVersion": "3.0.0", + "updatedAt": "2019-01-04T21:44:02.878Z", + "devdoc": { + "details": "A token holder contract that can release its token balance gradually like a typical vesting scheme, with a cliff and vesting period. Optionally revocable by the owner.", + "methods": { + "beneficiary()": { + "return": "the beneficiary of the tokens." + }, + "cliff()": { + "return": "the cliff time of the token vesting." + }, + "constructor": { + "details": "Creates a vesting contract that vests its balance of any ERC20 token to the beneficiary, gradually in a linear fashion until start + duration. By then all of the balance will have vested.", + "params": { + "beneficiary": "address of the beneficiary to whom vested tokens are transferred", + "cliffDuration": "duration in seconds of the cliff in which tokens will begin to vest", + "duration": "duration in seconds of the period in which the tokens will vest", + "revocable": "whether the vesting is revocable or not", + "start": "the time (as Unix time) at which point vesting starts" + } + }, + "duration()": { + "return": "the duration of the token vesting." + }, + "isOwner()": { + "return": "true if `msg.sender` is the owner of the contract." + }, + "owner()": { + "return": "the address of the owner." + }, + "release(address)": { + "params": { + "token": "ERC20 token which is being vested" + } + }, + "released(address)": { + "return": "the amount of the token released." + }, + "renounceOwnership()": { + "details": "Allows the current owner to relinquish control of the contract." + }, + "revocable()": { + "return": "true if the vesting is revocable." + }, + "revoke(address)": { + "params": { + "token": "ERC20 token which is being vested" + } + }, + "revoked(address)": { + "return": "true if the token is revoked." + }, + "start()": { + "return": "the start time of the token vesting." + }, + "transferOwnership(address)": { + "details": "Allows the current owner to transfer control of the contract to a newOwner.", + "params": { + "newOwner": "The address to transfer ownership to." + } + } + }, + "title": "TokenVesting" + }, + "userdoc": { + "methods": { + "release(address)": { + "notice": "Transfers vested tokens to beneficiary." + }, + "renounceOwnership()": { + "notice": "Renouncing to ownership will leave the contract without an owner. It will not be possible to call the functions with the `onlyOwner` modifier anymore." + }, + "revoke(address)": { + "notice": "Allows the owner to revoke the vesting. Tokens already vested remain in the contract, the rest are returned to the owner." + } + } + } +} \ No newline at end of file diff --git a/node_modules/openzeppelin-solidity/build/contracts/WhitelistAdminRole.json b/node_modules/openzeppelin-solidity/build/contracts/WhitelistAdminRole.json new file mode 100644 index 0000000..9755fe5 --- /dev/null +++ b/node_modules/openzeppelin-solidity/build/contracts/WhitelistAdminRole.json @@ -0,0 +1,2498 @@ +{ + "contractName": "WhitelistAdminRole", + "abi": [ + { + "inputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "account", + "type": "address" + } + ], + "name": "WhitelistAdminAdded", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "account", + "type": "address" + } + ], + "name": "WhitelistAdminRemoved", + "type": "event" + }, + { + "constant": true, + "inputs": [ + { + "name": "account", + "type": "address" + } + ], + "name": "isWhitelistAdmin", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "account", + "type": "address" + } + ], + "name": "addWhitelistAdmin", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [], + "name": "renounceWhitelistAdmin", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "sourceMap": "", + "deployedSourceMap": "", + "source": "pragma solidity ^0.5.0;\n\nimport \"../Roles.sol\";\n\n/**\n * @title WhitelistAdminRole\n * @dev WhitelistAdmins are responsible for assigning and removing Whitelisted accounts.\n */\ncontract WhitelistAdminRole {\n using Roles for Roles.Role;\n\n event WhitelistAdminAdded(address indexed account);\n event WhitelistAdminRemoved(address indexed account);\n\n Roles.Role private _whitelistAdmins;\n\n constructor () internal {\n _addWhitelistAdmin(msg.sender);\n }\n\n modifier onlyWhitelistAdmin() {\n require(isWhitelistAdmin(msg.sender));\n _;\n }\n\n function isWhitelistAdmin(address account) public view returns (bool) {\n return _whitelistAdmins.has(account);\n }\n\n function addWhitelistAdmin(address account) public onlyWhitelistAdmin {\n _addWhitelistAdmin(account);\n }\n\n function renounceWhitelistAdmin() public {\n _removeWhitelistAdmin(msg.sender);\n }\n\n function _addWhitelistAdmin(address account) internal {\n _whitelistAdmins.add(account);\n emit WhitelistAdminAdded(account);\n }\n\n function _removeWhitelistAdmin(address account) internal {\n _whitelistAdmins.remove(account);\n emit WhitelistAdminRemoved(account);\n }\n}\n", + "sourcePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/access/roles/WhitelistAdminRole.sol", + "ast": { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/access/roles/WhitelistAdminRole.sol", + "exportedSymbols": { + "WhitelistAdminRole": [ + 608 + ] + }, + "id": 609, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 507, + "literals": [ + "solidity", + "^", + "0.5", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "0:23:5" + }, + { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/access/Roles.sol", + "file": "../Roles.sol", + "id": 508, + "nodeType": "ImportDirective", + "scope": 609, + "sourceUnit": 94, + "src": "25:22:5", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [], + "contractDependencies": [], + "contractKind": "contract", + "documentation": "@title WhitelistAdminRole\n@dev WhitelistAdmins are responsible for assigning and removing Whitelisted accounts.", + "fullyImplemented": true, + "id": 608, + "linearizedBaseContracts": [ + 608 + ], + "name": "WhitelistAdminRole", + "nodeType": "ContractDefinition", + "nodes": [ + { + "id": 511, + "libraryName": { + "contractScope": null, + "id": 509, + "name": "Roles", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 93, + "src": "215:5:5", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Roles_$93", + "typeString": "library Roles" + } + }, + "nodeType": "UsingForDirective", + "src": "209:27:5", + "typeName": { + "contractScope": null, + "id": 510, + "name": "Roles.Role", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 6, + "src": "225:10:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$6_storage_ptr", + "typeString": "struct Roles.Role" + } + } + }, + { + "anonymous": false, + "documentation": null, + "id": 515, + "name": "WhitelistAdminAdded", + "nodeType": "EventDefinition", + "parameters": { + "id": 514, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 513, + "indexed": true, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 515, + "src": "268:23:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 512, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "268:7:5", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "267:25:5" + }, + "src": "242:51:5" + }, + { + "anonymous": false, + "documentation": null, + "id": 519, + "name": "WhitelistAdminRemoved", + "nodeType": "EventDefinition", + "parameters": { + "id": 518, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 517, + "indexed": true, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 519, + "src": "326:23:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 516, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "326:7:5", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "325:25:5" + }, + "src": "298:53:5" + }, + { + "constant": false, + "id": 521, + "name": "_whitelistAdmins", + "nodeType": "VariableDeclaration", + "scope": 608, + "src": "357:35:5", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$6_storage", + "typeString": "struct Roles.Role" + }, + "typeName": { + "contractScope": null, + "id": 520, + "name": "Roles.Role", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 6, + "src": "357:10:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$6_storage_ptr", + "typeString": "struct Roles.Role" + } + }, + "value": null, + "visibility": "private" + }, + { + "body": { + "id": 529, + "nodeType": "Block", + "src": "423:47:5", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 525, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6845, + "src": "452:3:5", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 526, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "452:10:5", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "id": 524, + "name": "_addWhitelistAdmin", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 591, + "src": "433:18:5", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 527, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "433:30:5", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 528, + "nodeType": "ExpressionStatement", + "src": "433:30:5" + } + ] + }, + "documentation": null, + "id": 530, + "implemented": true, + "kind": "constructor", + "modifiers": [], + "name": "", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 522, + "nodeType": "ParameterList", + "parameters": [], + "src": "411:2:5" + }, + "returnParameters": { + "id": 523, + "nodeType": "ParameterList", + "parameters": [], + "src": "423:0:5" + }, + "scope": 608, + "src": "399:71:5", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 540, + "nodeType": "Block", + "src": "506:65:5", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 534, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6845, + "src": "541:3:5", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 535, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "541:10:5", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "id": 533, + "name": "isWhitelistAdmin", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 554, + "src": "524:16:5", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$", + "typeString": "function (address) view returns (bool)" + } + }, + "id": 536, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "524:28:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 532, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6848, + 6849 + ], + "referencedDeclaration": 6848, + "src": "516:7:5", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 537, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "516:37:5", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 538, + "nodeType": "ExpressionStatement", + "src": "516:37:5" + }, + { + "id": 539, + "nodeType": "PlaceholderStatement", + "src": "563:1:5" + } + ] + }, + "documentation": null, + "id": 541, + "name": "onlyWhitelistAdmin", + "nodeType": "ModifierDefinition", + "parameters": { + "id": 531, + "nodeType": "ParameterList", + "parameters": [], + "src": "503:2:5" + }, + "src": "476:95:5", + "visibility": "internal" + }, + { + "body": { + "id": 553, + "nodeType": "Block", + "src": "647:53:5", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 550, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 543, + "src": "685:7:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 548, + "name": "_whitelistAdmins", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 521, + "src": "664:16:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$6_storage", + "typeString": "struct Roles.Role storage ref" + } + }, + "id": 549, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "has", + "nodeType": "MemberAccess", + "referencedDeclaration": 92, + "src": "664:20:5", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_Role_$6_storage_ptr_$_t_address_$returns$_t_bool_$bound_to$_t_struct$_Role_$6_storage_ptr_$", + "typeString": "function (struct Roles.Role storage pointer,address) view returns (bool)" + } + }, + "id": 551, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "664:29:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 547, + "id": 552, + "nodeType": "Return", + "src": "657:36:5" + } + ] + }, + "documentation": null, + "id": 554, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "isWhitelistAdmin", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 544, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 543, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 554, + "src": "603:15:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 542, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "603:7:5", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "602:17:5" + }, + "returnParameters": { + "id": 547, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 546, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 554, + "src": "641:4:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 545, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "641:4:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "640:6:5" + }, + "scope": 608, + "src": "577:123:5", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 565, + "nodeType": "Block", + "src": "776:44:5", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 562, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 556, + "src": "805:7:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 561, + "name": "_addWhitelistAdmin", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 591, + "src": "786:18:5", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 563, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "786:27:5", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 564, + "nodeType": "ExpressionStatement", + "src": "786:27:5" + } + ] + }, + "documentation": null, + "id": 566, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": null, + "id": 559, + "modifierName": { + "argumentTypes": null, + "id": 558, + "name": "onlyWhitelistAdmin", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 541, + "src": "757:18:5", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "757:18:5" + } + ], + "name": "addWhitelistAdmin", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 557, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 556, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 566, + "src": "733:15:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 555, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "733:7:5", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "732:17:5" + }, + "returnParameters": { + "id": 560, + "nodeType": "ParameterList", + "parameters": [], + "src": "776:0:5" + }, + "scope": 608, + "src": "706:114:5", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 574, + "nodeType": "Block", + "src": "867:50:5", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 570, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6845, + "src": "899:3:5", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 571, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "899:10:5", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "id": 569, + "name": "_removeWhitelistAdmin", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 607, + "src": "877:21:5", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 572, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "877:33:5", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 573, + "nodeType": "ExpressionStatement", + "src": "877:33:5" + } + ] + }, + "documentation": null, + "id": 575, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "renounceWhitelistAdmin", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 567, + "nodeType": "ParameterList", + "parameters": [], + "src": "857:2:5" + }, + "returnParameters": { + "id": 568, + "nodeType": "ParameterList", + "parameters": [], + "src": "867:0:5" + }, + "scope": 608, + "src": "826:91:5", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 590, + "nodeType": "Block", + "src": "977:89:5", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 583, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 577, + "src": "1008:7:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 580, + "name": "_whitelistAdmins", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 521, + "src": "987:16:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$6_storage", + "typeString": "struct Roles.Role storage ref" + } + }, + "id": 582, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 38, + "src": "987:20:5", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Role_$6_storage_ptr_$_t_address_$returns$__$bound_to$_t_struct$_Role_$6_storage_ptr_$", + "typeString": "function (struct Roles.Role storage pointer,address)" + } + }, + "id": 584, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "987:29:5", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 585, + "nodeType": "ExpressionStatement", + "src": "987:29:5" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 587, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 577, + "src": "1051:7:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 586, + "name": "WhitelistAdminAdded", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 515, + "src": "1031:19:5", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 588, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1031:28:5", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 589, + "nodeType": "EmitStatement", + "src": "1026:33:5" + } + ] + }, + "documentation": null, + "id": 591, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_addWhitelistAdmin", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 578, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 577, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 591, + "src": "951:15:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 576, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "951:7:5", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "950:17:5" + }, + "returnParameters": { + "id": 579, + "nodeType": "ParameterList", + "parameters": [], + "src": "977:0:5" + }, + "scope": 608, + "src": "923:143:5", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 606, + "nodeType": "Block", + "src": "1129:94:5", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 599, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 593, + "src": "1163:7:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 596, + "name": "_whitelistAdmins", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 521, + "src": "1139:16:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$6_storage", + "typeString": "struct Roles.Role storage ref" + } + }, + "id": 598, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "remove", + "nodeType": "MemberAccess", + "referencedDeclaration": 69, + "src": "1139:23:5", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Role_$6_storage_ptr_$_t_address_$returns$__$bound_to$_t_struct$_Role_$6_storage_ptr_$", + "typeString": "function (struct Roles.Role storage pointer,address)" + } + }, + "id": 600, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1139:32:5", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 601, + "nodeType": "ExpressionStatement", + "src": "1139:32:5" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 603, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 593, + "src": "1208:7:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 602, + "name": "WhitelistAdminRemoved", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 519, + "src": "1186:21:5", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 604, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1186:30:5", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 605, + "nodeType": "EmitStatement", + "src": "1181:35:5" + } + ] + }, + "documentation": null, + "id": 607, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_removeWhitelistAdmin", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 594, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 593, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 607, + "src": "1103:15:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 592, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1103:7:5", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1102:17:5" + }, + "returnParameters": { + "id": 595, + "nodeType": "ParameterList", + "parameters": [], + "src": "1129:0:5" + }, + "scope": 608, + "src": "1072:151:5", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + } + ], + "scope": 609, + "src": "175:1050:5" + } + ], + "src": "0:1226:5" + }, + "legacyAST": { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/access/roles/WhitelistAdminRole.sol", + "exportedSymbols": { + "WhitelistAdminRole": [ + 608 + ] + }, + "id": 609, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 507, + "literals": [ + "solidity", + "^", + "0.5", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "0:23:5" + }, + { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/access/Roles.sol", + "file": "../Roles.sol", + "id": 508, + "nodeType": "ImportDirective", + "scope": 609, + "sourceUnit": 94, + "src": "25:22:5", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [], + "contractDependencies": [], + "contractKind": "contract", + "documentation": "@title WhitelistAdminRole\n@dev WhitelistAdmins are responsible for assigning and removing Whitelisted accounts.", + "fullyImplemented": true, + "id": 608, + "linearizedBaseContracts": [ + 608 + ], + "name": "WhitelistAdminRole", + "nodeType": "ContractDefinition", + "nodes": [ + { + "id": 511, + "libraryName": { + "contractScope": null, + "id": 509, + "name": "Roles", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 93, + "src": "215:5:5", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Roles_$93", + "typeString": "library Roles" + } + }, + "nodeType": "UsingForDirective", + "src": "209:27:5", + "typeName": { + "contractScope": null, + "id": 510, + "name": "Roles.Role", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 6, + "src": "225:10:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$6_storage_ptr", + "typeString": "struct Roles.Role" + } + } + }, + { + "anonymous": false, + "documentation": null, + "id": 515, + "name": "WhitelistAdminAdded", + "nodeType": "EventDefinition", + "parameters": { + "id": 514, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 513, + "indexed": true, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 515, + "src": "268:23:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 512, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "268:7:5", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "267:25:5" + }, + "src": "242:51:5" + }, + { + "anonymous": false, + "documentation": null, + "id": 519, + "name": "WhitelistAdminRemoved", + "nodeType": "EventDefinition", + "parameters": { + "id": 518, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 517, + "indexed": true, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 519, + "src": "326:23:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 516, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "326:7:5", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "325:25:5" + }, + "src": "298:53:5" + }, + { + "constant": false, + "id": 521, + "name": "_whitelistAdmins", + "nodeType": "VariableDeclaration", + "scope": 608, + "src": "357:35:5", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$6_storage", + "typeString": "struct Roles.Role" + }, + "typeName": { + "contractScope": null, + "id": 520, + "name": "Roles.Role", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 6, + "src": "357:10:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$6_storage_ptr", + "typeString": "struct Roles.Role" + } + }, + "value": null, + "visibility": "private" + }, + { + "body": { + "id": 529, + "nodeType": "Block", + "src": "423:47:5", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 525, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6845, + "src": "452:3:5", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 526, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "452:10:5", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "id": 524, + "name": "_addWhitelistAdmin", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 591, + "src": "433:18:5", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 527, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "433:30:5", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 528, + "nodeType": "ExpressionStatement", + "src": "433:30:5" + } + ] + }, + "documentation": null, + "id": 530, + "implemented": true, + "kind": "constructor", + "modifiers": [], + "name": "", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 522, + "nodeType": "ParameterList", + "parameters": [], + "src": "411:2:5" + }, + "returnParameters": { + "id": 523, + "nodeType": "ParameterList", + "parameters": [], + "src": "423:0:5" + }, + "scope": 608, + "src": "399:71:5", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 540, + "nodeType": "Block", + "src": "506:65:5", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 534, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6845, + "src": "541:3:5", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 535, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "541:10:5", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "id": 533, + "name": "isWhitelistAdmin", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 554, + "src": "524:16:5", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$", + "typeString": "function (address) view returns (bool)" + } + }, + "id": 536, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "524:28:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 532, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6848, + 6849 + ], + "referencedDeclaration": 6848, + "src": "516:7:5", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 537, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "516:37:5", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 538, + "nodeType": "ExpressionStatement", + "src": "516:37:5" + }, + { + "id": 539, + "nodeType": "PlaceholderStatement", + "src": "563:1:5" + } + ] + }, + "documentation": null, + "id": 541, + "name": "onlyWhitelistAdmin", + "nodeType": "ModifierDefinition", + "parameters": { + "id": 531, + "nodeType": "ParameterList", + "parameters": [], + "src": "503:2:5" + }, + "src": "476:95:5", + "visibility": "internal" + }, + { + "body": { + "id": 553, + "nodeType": "Block", + "src": "647:53:5", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 550, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 543, + "src": "685:7:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 548, + "name": "_whitelistAdmins", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 521, + "src": "664:16:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$6_storage", + "typeString": "struct Roles.Role storage ref" + } + }, + "id": 549, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "has", + "nodeType": "MemberAccess", + "referencedDeclaration": 92, + "src": "664:20:5", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_Role_$6_storage_ptr_$_t_address_$returns$_t_bool_$bound_to$_t_struct$_Role_$6_storage_ptr_$", + "typeString": "function (struct Roles.Role storage pointer,address) view returns (bool)" + } + }, + "id": 551, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "664:29:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 547, + "id": 552, + "nodeType": "Return", + "src": "657:36:5" + } + ] + }, + "documentation": null, + "id": 554, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "isWhitelistAdmin", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 544, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 543, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 554, + "src": "603:15:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 542, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "603:7:5", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "602:17:5" + }, + "returnParameters": { + "id": 547, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 546, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 554, + "src": "641:4:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 545, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "641:4:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "640:6:5" + }, + "scope": 608, + "src": "577:123:5", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 565, + "nodeType": "Block", + "src": "776:44:5", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 562, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 556, + "src": "805:7:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 561, + "name": "_addWhitelistAdmin", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 591, + "src": "786:18:5", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 563, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "786:27:5", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 564, + "nodeType": "ExpressionStatement", + "src": "786:27:5" + } + ] + }, + "documentation": null, + "id": 566, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": null, + "id": 559, + "modifierName": { + "argumentTypes": null, + "id": 558, + "name": "onlyWhitelistAdmin", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 541, + "src": "757:18:5", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "757:18:5" + } + ], + "name": "addWhitelistAdmin", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 557, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 556, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 566, + "src": "733:15:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 555, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "733:7:5", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "732:17:5" + }, + "returnParameters": { + "id": 560, + "nodeType": "ParameterList", + "parameters": [], + "src": "776:0:5" + }, + "scope": 608, + "src": "706:114:5", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 574, + "nodeType": "Block", + "src": "867:50:5", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 570, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6845, + "src": "899:3:5", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 571, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "899:10:5", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "id": 569, + "name": "_removeWhitelistAdmin", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 607, + "src": "877:21:5", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 572, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "877:33:5", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 573, + "nodeType": "ExpressionStatement", + "src": "877:33:5" + } + ] + }, + "documentation": null, + "id": 575, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "renounceWhitelistAdmin", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 567, + "nodeType": "ParameterList", + "parameters": [], + "src": "857:2:5" + }, + "returnParameters": { + "id": 568, + "nodeType": "ParameterList", + "parameters": [], + "src": "867:0:5" + }, + "scope": 608, + "src": "826:91:5", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 590, + "nodeType": "Block", + "src": "977:89:5", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 583, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 577, + "src": "1008:7:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 580, + "name": "_whitelistAdmins", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 521, + "src": "987:16:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$6_storage", + "typeString": "struct Roles.Role storage ref" + } + }, + "id": 582, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 38, + "src": "987:20:5", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Role_$6_storage_ptr_$_t_address_$returns$__$bound_to$_t_struct$_Role_$6_storage_ptr_$", + "typeString": "function (struct Roles.Role storage pointer,address)" + } + }, + "id": 584, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "987:29:5", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 585, + "nodeType": "ExpressionStatement", + "src": "987:29:5" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 587, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 577, + "src": "1051:7:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 586, + "name": "WhitelistAdminAdded", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 515, + "src": "1031:19:5", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 588, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1031:28:5", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 589, + "nodeType": "EmitStatement", + "src": "1026:33:5" + } + ] + }, + "documentation": null, + "id": 591, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_addWhitelistAdmin", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 578, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 577, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 591, + "src": "951:15:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 576, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "951:7:5", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "950:17:5" + }, + "returnParameters": { + "id": 579, + "nodeType": "ParameterList", + "parameters": [], + "src": "977:0:5" + }, + "scope": 608, + "src": "923:143:5", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 606, + "nodeType": "Block", + "src": "1129:94:5", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 599, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 593, + "src": "1163:7:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 596, + "name": "_whitelistAdmins", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 521, + "src": "1139:16:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$6_storage", + "typeString": "struct Roles.Role storage ref" + } + }, + "id": 598, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "remove", + "nodeType": "MemberAccess", + "referencedDeclaration": 69, + "src": "1139:23:5", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Role_$6_storage_ptr_$_t_address_$returns$__$bound_to$_t_struct$_Role_$6_storage_ptr_$", + "typeString": "function (struct Roles.Role storage pointer,address)" + } + }, + "id": 600, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1139:32:5", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 601, + "nodeType": "ExpressionStatement", + "src": "1139:32:5" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 603, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 593, + "src": "1208:7:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 602, + "name": "WhitelistAdminRemoved", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 519, + "src": "1186:21:5", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 604, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1186:30:5", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 605, + "nodeType": "EmitStatement", + "src": "1181:35:5" + } + ] + }, + "documentation": null, + "id": 607, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_removeWhitelistAdmin", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 594, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 593, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 607, + "src": "1103:15:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 592, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1103:7:5", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1102:17:5" + }, + "returnParameters": { + "id": 595, + "nodeType": "ParameterList", + "parameters": [], + "src": "1129:0:5" + }, + "scope": 608, + "src": "1072:151:5", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + } + ], + "scope": 609, + "src": "175:1050:5" + } + ], + "src": "0:1226:5" + }, + "compiler": { + "name": "solc", + "version": "0.5.0+commit.1d4f565a.Emscripten.clang" + }, + "networks": {}, + "schemaVersion": "3.0.0", + "updatedAt": "2019-01-04T21:44:02.869Z", + "devdoc": { + "details": "WhitelistAdmins are responsible for assigning and removing Whitelisted accounts.", + "methods": {}, + "title": "WhitelistAdminRole" + }, + "userdoc": { + "methods": {} + } +} \ No newline at end of file diff --git a/node_modules/openzeppelin-solidity/build/contracts/WhitelistCrowdsale.json b/node_modules/openzeppelin-solidity/build/contracts/WhitelistCrowdsale.json new file mode 100644 index 0000000..b1a6029 --- /dev/null +++ b/node_modules/openzeppelin-solidity/build/contracts/WhitelistCrowdsale.json @@ -0,0 +1,1045 @@ +{ + "contractName": "WhitelistCrowdsale", + "abi": [ + { + "constant": false, + "inputs": [ + { + "name": "account", + "type": "address" + } + ], + "name": "addWhitelisted", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "account", + "type": "address" + } + ], + "name": "removeWhitelisted", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "rate", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "account", + "type": "address" + } + ], + "name": "isWhitelisted", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "weiRaised", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [], + "name": "renounceWhitelistAdmin", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "wallet", + "outputs": [ + { + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "account", + "type": "address" + } + ], + "name": "addWhitelistAdmin", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "account", + "type": "address" + } + ], + "name": "isWhitelistAdmin", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [], + "name": "renounceWhitelisted", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "beneficiary", + "type": "address" + } + ], + "name": "buyTokens", + "outputs": [], + "payable": true, + "stateMutability": "payable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "token", + "outputs": [ + { + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "payable": true, + "stateMutability": "payable", + "type": "fallback" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "purchaser", + "type": "address" + }, + { + "indexed": true, + "name": "beneficiary", + "type": "address" + }, + { + "indexed": false, + "name": "value", + "type": "uint256" + }, + { + "indexed": false, + "name": "amount", + "type": "uint256" + } + ], + "name": "TokensPurchased", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "account", + "type": "address" + } + ], + "name": "WhitelistedAdded", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "account", + "type": "address" + } + ], + "name": "WhitelistedRemoved", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "account", + "type": "address" + } + ], + "name": "WhitelistAdminAdded", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "account", + "type": "address" + } + ], + "name": "WhitelistAdminRemoved", + "type": "event" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "sourceMap": "", + "deployedSourceMap": "", + "source": "pragma solidity ^0.5.0;\nimport \"../Crowdsale.sol\";\nimport \"../../access/roles/WhitelistedRole.sol\";\n\n\n/**\n * @title WhitelistCrowdsale\n * @dev Crowdsale in which only whitelisted users can contribute.\n */\ncontract WhitelistCrowdsale is WhitelistedRole, Crowdsale {\n /**\n * @dev Extend parent behavior requiring beneficiary to be whitelisted. Note that no\n * restriction is imposed on the account sending the transaction.\n * @param _beneficiary Token beneficiary\n * @param _weiAmount Amount of wei contributed\n */\n function _preValidatePurchase(address _beneficiary, uint256 _weiAmount) internal view {\n require(isWhitelisted(_beneficiary));\n super._preValidatePurchase(_beneficiary, _weiAmount);\n }\n}\n", + "sourcePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/crowdsale/validation/WhitelistCrowdsale.sol", + "ast": { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/crowdsale/validation/WhitelistCrowdsale.sol", + "exportedSymbols": { + "WhitelistCrowdsale": [ + 1877 + ] + }, + "id": 1878, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 1849, + "literals": [ + "solidity", + "^", + "0.5", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "0:23:19" + }, + { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/crowdsale/Crowdsale.sol", + "file": "../Crowdsale.sol", + "id": 1850, + "nodeType": "ImportDirective", + "scope": 1878, + "sourceUnit": 985, + "src": "24:26:19", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/access/roles/WhitelistedRole.sol", + "file": "../../access/roles/WhitelistedRole.sol", + "id": 1851, + "nodeType": "ImportDirective", + "scope": 1878, + "sourceUnit": 718, + "src": "51:48:19", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 1852, + "name": "WhitelistedRole", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 717, + "src": "236:15:19", + "typeDescriptions": { + "typeIdentifier": "t_contract$_WhitelistedRole_$717", + "typeString": "contract WhitelistedRole" + } + }, + "id": 1853, + "nodeType": "InheritanceSpecifier", + "src": "236:15:19" + }, + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 1854, + "name": "Crowdsale", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 984, + "src": "253:9:19", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Crowdsale_$984", + "typeString": "contract Crowdsale" + } + }, + "id": 1855, + "nodeType": "InheritanceSpecifier", + "src": "253:9:19" + } + ], + "contractDependencies": [ + 608, + 717, + 984, + 6830 + ], + "contractKind": "contract", + "documentation": "@title WhitelistCrowdsale\n@dev Crowdsale in which only whitelisted users can contribute.", + "fullyImplemented": false, + "id": 1877, + "linearizedBaseContracts": [ + 1877, + 984, + 6830, + 717, + 608 + ], + "name": "WhitelistCrowdsale", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": { + "id": 1875, + "nodeType": "Block", + "src": "621:115:19", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1864, + "name": "_beneficiary", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1857, + "src": "653:12:19", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1863, + "name": "isWhitelisted", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 651, + "src": "639:13:19", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$", + "typeString": "function (address) view returns (bool)" + } + }, + "id": 1865, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "639:27:19", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 1862, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6848, + 6849 + ], + "referencedDeclaration": 6848, + "src": "631:7:19", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 1866, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "631:36:19", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1867, + "nodeType": "ExpressionStatement", + "src": "631:36:19" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1871, + "name": "_beneficiary", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1857, + "src": "704:12:19", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1872, + "name": "_weiAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1859, + "src": "718:10:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 1868, + "name": "super", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6921, + "src": "677:5:19", + "typeDescriptions": { + "typeIdentifier": "t_super$_WhitelistCrowdsale_$1877", + "typeString": "contract super WhitelistCrowdsale" + } + }, + "id": 1870, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "_preValidatePurchase", + "nodeType": "MemberAccess", + "referencedDeclaration": 915, + "src": "677:26:19", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256) view" + } + }, + "id": 1873, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "677:52:19", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1874, + "nodeType": "ExpressionStatement", + "src": "677:52:19" + } + ] + }, + "documentation": "@dev Extend parent behavior requiring beneficiary to be whitelisted. Note that no\nrestriction is imposed on the account sending the transaction.\n@param _beneficiary Token beneficiary\n@param _weiAmount Amount of wei contributed", + "id": 1876, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_preValidatePurchase", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1860, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1857, + "name": "_beneficiary", + "nodeType": "VariableDeclaration", + "scope": 1876, + "src": "565:20:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1856, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "565:7:19", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1859, + "name": "_weiAmount", + "nodeType": "VariableDeclaration", + "scope": 1876, + "src": "587:18:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1858, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "587:7:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "564:42:19" + }, + "returnParameters": { + "id": 1861, + "nodeType": "ParameterList", + "parameters": [], + "src": "621:0:19" + }, + "scope": 1877, + "src": "535:201:19", + "stateMutability": "view", + "superFunction": 915, + "visibility": "internal" + } + ], + "scope": 1878, + "src": "205:533:19" + } + ], + "src": "0:739:19" + }, + "legacyAST": { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/crowdsale/validation/WhitelistCrowdsale.sol", + "exportedSymbols": { + "WhitelistCrowdsale": [ + 1877 + ] + }, + "id": 1878, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 1849, + "literals": [ + "solidity", + "^", + "0.5", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "0:23:19" + }, + { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/crowdsale/Crowdsale.sol", + "file": "../Crowdsale.sol", + "id": 1850, + "nodeType": "ImportDirective", + "scope": 1878, + "sourceUnit": 985, + "src": "24:26:19", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/access/roles/WhitelistedRole.sol", + "file": "../../access/roles/WhitelistedRole.sol", + "id": 1851, + "nodeType": "ImportDirective", + "scope": 1878, + "sourceUnit": 718, + "src": "51:48:19", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 1852, + "name": "WhitelistedRole", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 717, + "src": "236:15:19", + "typeDescriptions": { + "typeIdentifier": "t_contract$_WhitelistedRole_$717", + "typeString": "contract WhitelistedRole" + } + }, + "id": 1853, + "nodeType": "InheritanceSpecifier", + "src": "236:15:19" + }, + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 1854, + "name": "Crowdsale", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 984, + "src": "253:9:19", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Crowdsale_$984", + "typeString": "contract Crowdsale" + } + }, + "id": 1855, + "nodeType": "InheritanceSpecifier", + "src": "253:9:19" + } + ], + "contractDependencies": [ + 608, + 717, + 984, + 6830 + ], + "contractKind": "contract", + "documentation": "@title WhitelistCrowdsale\n@dev Crowdsale in which only whitelisted users can contribute.", + "fullyImplemented": false, + "id": 1877, + "linearizedBaseContracts": [ + 1877, + 984, + 6830, + 717, + 608 + ], + "name": "WhitelistCrowdsale", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": { + "id": 1875, + "nodeType": "Block", + "src": "621:115:19", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1864, + "name": "_beneficiary", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1857, + "src": "653:12:19", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1863, + "name": "isWhitelisted", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 651, + "src": "639:13:19", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$", + "typeString": "function (address) view returns (bool)" + } + }, + "id": 1865, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "639:27:19", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 1862, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6848, + 6849 + ], + "referencedDeclaration": 6848, + "src": "631:7:19", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 1866, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "631:36:19", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1867, + "nodeType": "ExpressionStatement", + "src": "631:36:19" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1871, + "name": "_beneficiary", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1857, + "src": "704:12:19", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1872, + "name": "_weiAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1859, + "src": "718:10:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 1868, + "name": "super", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6921, + "src": "677:5:19", + "typeDescriptions": { + "typeIdentifier": "t_super$_WhitelistCrowdsale_$1877", + "typeString": "contract super WhitelistCrowdsale" + } + }, + "id": 1870, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "_preValidatePurchase", + "nodeType": "MemberAccess", + "referencedDeclaration": 915, + "src": "677:26:19", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256) view" + } + }, + "id": 1873, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "677:52:19", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1874, + "nodeType": "ExpressionStatement", + "src": "677:52:19" + } + ] + }, + "documentation": "@dev Extend parent behavior requiring beneficiary to be whitelisted. Note that no\nrestriction is imposed on the account sending the transaction.\n@param _beneficiary Token beneficiary\n@param _weiAmount Amount of wei contributed", + "id": 1876, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_preValidatePurchase", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1860, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1857, + "name": "_beneficiary", + "nodeType": "VariableDeclaration", + "scope": 1876, + "src": "565:20:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1856, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "565:7:19", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1859, + "name": "_weiAmount", + "nodeType": "VariableDeclaration", + "scope": 1876, + "src": "587:18:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1858, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "587:7:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "564:42:19" + }, + "returnParameters": { + "id": 1861, + "nodeType": "ParameterList", + "parameters": [], + "src": "621:0:19" + }, + "scope": 1877, + "src": "535:201:19", + "stateMutability": "view", + "superFunction": 915, + "visibility": "internal" + } + ], + "scope": 1878, + "src": "205:533:19" + } + ], + "src": "0:739:19" + }, + "compiler": { + "name": "solc", + "version": "0.5.0+commit.1d4f565a.Emscripten.clang" + }, + "networks": {}, + "schemaVersion": "3.0.0", + "updatedAt": "2019-01-04T21:44:02.875Z", + "devdoc": { + "details": "Crowdsale in which only whitelisted users can contribute.", + "methods": { + "buyTokens(address)": { + "details": "low level token purchase ***DO NOT OVERRIDE*** This function has a non-reentrancy guard, so it shouldn't be called by another `nonReentrant` function.", + "params": { + "beneficiary": "Recipient of the token purchase" + } + }, + "rate()": { + "return": "the number of token units a buyer gets per wei." + }, + "token()": { + "return": "the token being sold." + }, + "wallet()": { + "return": "the address where funds are collected." + }, + "weiRaised()": { + "return": "the amount of wei raised." + } + }, + "title": "WhitelistCrowdsale" + }, + "userdoc": { + "methods": {} + } +} \ No newline at end of file diff --git a/node_modules/openzeppelin-solidity/build/contracts/WhitelistedRole.json b/node_modules/openzeppelin-solidity/build/contracts/WhitelistedRole.json new file mode 100644 index 0000000..eee4df9 --- /dev/null +++ b/node_modules/openzeppelin-solidity/build/contracts/WhitelistedRole.json @@ -0,0 +1,2702 @@ +{ + "contractName": "WhitelistedRole", + "abi": [ + { + "constant": false, + "inputs": [], + "name": "renounceWhitelistAdmin", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "account", + "type": "address" + } + ], + "name": "addWhitelistAdmin", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "account", + "type": "address" + } + ], + "name": "isWhitelistAdmin", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "account", + "type": "address" + } + ], + "name": "WhitelistedAdded", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "account", + "type": "address" + } + ], + "name": "WhitelistedRemoved", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "account", + "type": "address" + } + ], + "name": "WhitelistAdminAdded", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "account", + "type": "address" + } + ], + "name": "WhitelistAdminRemoved", + "type": "event" + }, + { + "constant": true, + "inputs": [ + { + "name": "account", + "type": "address" + } + ], + "name": "isWhitelisted", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "account", + "type": "address" + } + ], + "name": "addWhitelisted", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "account", + "type": "address" + } + ], + "name": "removeWhitelisted", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [], + "name": "renounceWhitelisted", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x608060405261001c33610021640100000000026401000000009004565b6101db565b61004281600061008864010000000002610527179091906401000000009004565b8073ffffffffffffffffffffffffffffffffffffffff167f22380c05984257a1cb900161c713dd71d39e74820f1aea43bd3f1bdd2096129960405160405180910390a250565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515156100c457600080fd5b6100dd8282610147640100000000026401000000009004565b1515156100e957600080fd5b60018260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415151561018457600080fd5b8260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6106b2806101ea6000396000f3fe608060405260043610610083576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806310154bad14610088578063291d9549146100d95780633af32abf1461012a5780634c5a628c146101935780637362d9c8146101aa578063bb5f747b146101fb578063d6cd947314610264575b600080fd5b34801561009457600080fd5b506100d7600480360360208110156100ab57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061027b565b005b3480156100e557600080fd5b50610128600480360360208110156100fc57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061029b565b005b34801561013657600080fd5b506101796004803603602081101561014d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506102bb565b604051808215151515815260200191505060405180910390f35b34801561019f57600080fd5b506101a86102d8565b005b3480156101b657600080fd5b506101f9600480360360208110156101cd57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506102e3565b005b34801561020757600080fd5b5061024a6004803603602081101561021e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610303565b604051808215151515815260200191505060405180910390f35b34801561027057600080fd5b50610279610320565b005b61028433610303565b151561028f57600080fd5b6102988161032b565b50565b6102a433610303565b15156102af57600080fd5b6102b881610385565b50565b60006102d18260016103df90919063ffffffff16565b9050919050565b6102e133610473565b565b6102ec33610303565b15156102f757600080fd5b610300816104cd565b50565b60006103198260006103df90919063ffffffff16565b9050919050565b61032933610385565b565b61033f81600161052790919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167fee1504a83b6d4a361f4c1dc78ab59bfa30d6a3b6612c403e86bb01ef2984295f60405160405180910390a250565b6103998160016105d790919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167f270d9b30cf5b0793bbfd54c9d5b94aeb49462b8148399000265144a8722da6b660405160405180910390a250565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415151561041c57600080fd5b8260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6104878160006105d790919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167f0a8eb35e5ca14b3d6f28e4abf2f128dbab231a58b56e89beb5d636115001e16560405160405180910390a250565b6104e181600061052790919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167f22380c05984257a1cb900161c713dd71d39e74820f1aea43bd3f1bdd2096129960405160405180910390a250565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415151561056357600080fd5b61056d82826103df565b15151561057957600080fd5b60018260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415151561061357600080fd5b61061d82826103df565b151561062857600080fd5b60008260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550505056fea165627a7a7230582028c75dbda8e21d86eeed2bb517ea3991e26a8cc0c0d4809afbe7859d885bb65b0029", + "deployedBytecode": "0x608060405260043610610083576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806310154bad14610088578063291d9549146100d95780633af32abf1461012a5780634c5a628c146101935780637362d9c8146101aa578063bb5f747b146101fb578063d6cd947314610264575b600080fd5b34801561009457600080fd5b506100d7600480360360208110156100ab57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061027b565b005b3480156100e557600080fd5b50610128600480360360208110156100fc57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061029b565b005b34801561013657600080fd5b506101796004803603602081101561014d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506102bb565b604051808215151515815260200191505060405180910390f35b34801561019f57600080fd5b506101a86102d8565b005b3480156101b657600080fd5b506101f9600480360360208110156101cd57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506102e3565b005b34801561020757600080fd5b5061024a6004803603602081101561021e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610303565b604051808215151515815260200191505060405180910390f35b34801561027057600080fd5b50610279610320565b005b61028433610303565b151561028f57600080fd5b6102988161032b565b50565b6102a433610303565b15156102af57600080fd5b6102b881610385565b50565b60006102d18260016103df90919063ffffffff16565b9050919050565b6102e133610473565b565b6102ec33610303565b15156102f757600080fd5b610300816104cd565b50565b60006103198260006103df90919063ffffffff16565b9050919050565b61032933610385565b565b61033f81600161052790919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167fee1504a83b6d4a361f4c1dc78ab59bfa30d6a3b6612c403e86bb01ef2984295f60405160405180910390a250565b6103998160016105d790919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167f270d9b30cf5b0793bbfd54c9d5b94aeb49462b8148399000265144a8722da6b660405160405180910390a250565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415151561041c57600080fd5b8260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6104878160006105d790919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167f0a8eb35e5ca14b3d6f28e4abf2f128dbab231a58b56e89beb5d636115001e16560405160405180910390a250565b6104e181600061052790919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167f22380c05984257a1cb900161c713dd71d39e74820f1aea43bd3f1bdd2096129960405160405180910390a250565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415151561056357600080fd5b61056d82826103df565b15151561057957600080fd5b60018260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415151561061357600080fd5b61061d82826103df565b151561062857600080fd5b60008260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550505056fea165627a7a7230582028c75dbda8e21d86eeed2bb517ea3991e26a8cc0c0d4809afbe7859d885bb65b0029", + "sourceMap": "396:1061:6:-;;;433:30:5;452:10;433:18;;;:30;;;:::i;:::-;396:1061:6;;923:143:5;987:29;1008:7;987:16;:20;;;;;;:29;;;;;:::i;:::-;1051:7;1031:28;;;;;;;;;;;;923:143;:::o;259:181:0:-;354:1;335:21;;:7;:21;;;;327:30;;;;;;;;376:18;380:4;386:7;376:3;;;:18;;;:::i;:::-;375:19;367:28;;;;;;;;429:4;406;:11;;:20;418:7;406:20;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;259:181;;:::o;786:162::-;858:4;901:1;882:21;;:7;:21;;;;874:30;;;;;;;;921:4;:11;;:20;933:7;921:20;;;;;;;;;;;;;;;;;;;;;;;;;914:27;;786:162;;;;:::o;396:1061:6:-;;;;;;;", + "deployedSourceMap": "396:1061:6:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;848:108;;8:9:-1;5:2;;;30:1;27;20:12;5:2;848:108:6;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;848:108:6;;;;;;;;;;;;;;;;;;;;;;962:114;;8:9:-1;5:2;;;30:1;27;20:12;5:2;962:114:6;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;962:114:6;;;;;;;;;;;;;;;;;;;;;;725:117;;8:9:-1;5:2;;;30:1;27;20:12;5:2;725:117:6;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;725:117:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;826:91:5;;8:9:-1;5:2;;;30:1;27;20:12;5:2;826:91:5;;;;;;706:114;;8:9:-1;5:2;;;30:1;27;20:12;5:2;706:114:5;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;706:114:5;;;;;;;;;;;;;;;;;;;;;;577:123;;8:9:-1;5:2;;;30:1;27;20:12;5:2;577:123:5;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;577:123:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1082:85:6;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1082:85:6;;;;;;848:108;524:28:5;541:10;524:16;:28::i;:::-;516:37;;;;;;;;925:24:6;941:7;925:15;:24::i;:::-;848:108;:::o;962:114::-;524:28:5;541:10;524:16;:28::i;:::-;516:37;;;;;;;;1042:27:6;1061:7;1042:18;:27::i;:::-;962:114;:::o;725:117::-;786:4;809:26;827:7;809:13;:17;;:26;;;;:::i;:::-;802:33;;725:117;;;:::o;826:91:5:-;877:33;899:10;877:21;:33::i;:::-;826:91::o;706:114::-;524:28;541:10;524:16;:28::i;:::-;516:37;;;;;;;;786:27;805:7;786:18;:27::i;:::-;706:114;:::o;577:123::-;641:4;664:29;685:7;664:16;:20;;:29;;;;:::i;:::-;657:36;;577:123;;;:::o;1082:85:6:-;1130:30;1149:10;1130:18;:30::i;:::-;1082:85::o;1173:134::-;1234:26;1252:7;1234:13;:17;;:26;;;;:::i;:::-;1292:7;1275:25;;;;;;;;;;;;1173:134;:::o;1313:142::-;1377:29;1398:7;1377:13;:20;;:29;;;;:::i;:::-;1440:7;1421:27;;;;;;;;;;;;1313:142;:::o;786:162:0:-;858:4;901:1;882:21;;:7;:21;;;;874:30;;;;;;;;921:4;:11;;:20;933:7;921:20;;;;;;;;;;;;;;;;;;;;;;;;;914:27;;786:162;;;;:::o;1072:151:5:-;1139:32;1163:7;1139:16;:23;;:32;;;;:::i;:::-;1208:7;1186:30;;;;;;;;;;;;1072:151;:::o;923:143::-;987:29;1008:7;987:16;:20;;:29;;;;:::i;:::-;1051:7;1031:28;;;;;;;;;;;;923:143;:::o;259:181:0:-;354:1;335:21;;:7;:21;;;;327:30;;;;;;;;376:18;380:4;386:7;376:3;:18::i;:::-;375:19;367:28;;;;;;;;429:4;406;:11;;:20;418:7;406:20;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;259:181;;:::o;514:184::-;612:1;593:21;;:7;:21;;;;585:30;;;;;;;;633:18;637:4;643:7;633:3;:18::i;:::-;625:27;;;;;;;;686:5;663:4;:11;;:20;675:7;663:20;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;514:184;;:::o", + "source": "pragma solidity ^0.5.0;\n\nimport \"../Roles.sol\";\nimport \"./WhitelistAdminRole.sol\";\n\n/**\n * @title WhitelistedRole\n * @dev Whitelisted accounts have been approved by a WhitelistAdmin to perform certain actions (e.g. participate in a\n * crowdsale). This role is special in that the only accounts that can add it are WhitelistAdmins (who can also remove\n * it), and not Whitelisteds themselves.\n */\ncontract WhitelistedRole is WhitelistAdminRole {\n using Roles for Roles.Role;\n\n event WhitelistedAdded(address indexed account);\n event WhitelistedRemoved(address indexed account);\n\n Roles.Role private _whitelisteds;\n\n modifier onlyWhitelisted() {\n require(isWhitelisted(msg.sender));\n _;\n }\n\n function isWhitelisted(address account) public view returns (bool) {\n return _whitelisteds.has(account);\n }\n\n function addWhitelisted(address account) public onlyWhitelistAdmin {\n _addWhitelisted(account);\n }\n\n function removeWhitelisted(address account) public onlyWhitelistAdmin {\n _removeWhitelisted(account);\n }\n\n function renounceWhitelisted() public {\n _removeWhitelisted(msg.sender);\n }\n\n function _addWhitelisted(address account) internal {\n _whitelisteds.add(account);\n emit WhitelistedAdded(account);\n }\n\n function _removeWhitelisted(address account) internal {\n _whitelisteds.remove(account);\n emit WhitelistedRemoved(account);\n }\n}\n", + "sourcePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/access/roles/WhitelistedRole.sol", + "ast": { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/access/roles/WhitelistedRole.sol", + "exportedSymbols": { + "WhitelistedRole": [ + 717 + ] + }, + "id": 718, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 610, + "literals": [ + "solidity", + "^", + "0.5", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "0:23:6" + }, + { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/access/Roles.sol", + "file": "../Roles.sol", + "id": 611, + "nodeType": "ImportDirective", + "scope": 718, + "sourceUnit": 94, + "src": "25:22:6", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/access/roles/WhitelistAdminRole.sol", + "file": "./WhitelistAdminRole.sol", + "id": 612, + "nodeType": "ImportDirective", + "scope": 718, + "sourceUnit": 609, + "src": "48:34:6", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 613, + "name": "WhitelistAdminRole", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 608, + "src": "424:18:6", + "typeDescriptions": { + "typeIdentifier": "t_contract$_WhitelistAdminRole_$608", + "typeString": "contract WhitelistAdminRole" + } + }, + "id": 614, + "nodeType": "InheritanceSpecifier", + "src": "424:18:6" + } + ], + "contractDependencies": [ + 608 + ], + "contractKind": "contract", + "documentation": "@title WhitelistedRole\n@dev Whitelisted accounts have been approved by a WhitelistAdmin to perform certain actions (e.g. participate in a\ncrowdsale). This role is special in that the only accounts that can add it are WhitelistAdmins (who can also remove\nit), and not Whitelisteds themselves.", + "fullyImplemented": true, + "id": 717, + "linearizedBaseContracts": [ + 717, + 608 + ], + "name": "WhitelistedRole", + "nodeType": "ContractDefinition", + "nodes": [ + { + "id": 617, + "libraryName": { + "contractScope": null, + "id": 615, + "name": "Roles", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 93, + "src": "455:5:6", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Roles_$93", + "typeString": "library Roles" + } + }, + "nodeType": "UsingForDirective", + "src": "449:27:6", + "typeName": { + "contractScope": null, + "id": 616, + "name": "Roles.Role", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 6, + "src": "465:10:6", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$6_storage_ptr", + "typeString": "struct Roles.Role" + } + } + }, + { + "anonymous": false, + "documentation": null, + "id": 621, + "name": "WhitelistedAdded", + "nodeType": "EventDefinition", + "parameters": { + "id": 620, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 619, + "indexed": true, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 621, + "src": "505:23:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 618, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "505:7:6", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "504:25:6" + }, + "src": "482:48:6" + }, + { + "anonymous": false, + "documentation": null, + "id": 625, + "name": "WhitelistedRemoved", + "nodeType": "EventDefinition", + "parameters": { + "id": 624, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 623, + "indexed": true, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 625, + "src": "560:23:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 622, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "560:7:6", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "559:25:6" + }, + "src": "535:50:6" + }, + { + "constant": false, + "id": 627, + "name": "_whitelisteds", + "nodeType": "VariableDeclaration", + "scope": 717, + "src": "591:32:6", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$6_storage", + "typeString": "struct Roles.Role" + }, + "typeName": { + "contractScope": null, + "id": 626, + "name": "Roles.Role", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 6, + "src": "591:10:6", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$6_storage_ptr", + "typeString": "struct Roles.Role" + } + }, + "value": null, + "visibility": "private" + }, + { + "body": { + "id": 637, + "nodeType": "Block", + "src": "657:62:6", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 631, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6845, + "src": "689:3:6", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 632, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "689:10:6", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "id": 630, + "name": "isWhitelisted", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 651, + "src": "675:13:6", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$", + "typeString": "function (address) view returns (bool)" + } + }, + "id": 633, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "675:25:6", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 629, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6848, + 6849 + ], + "referencedDeclaration": 6848, + "src": "667:7:6", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 634, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "667:34:6", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 635, + "nodeType": "ExpressionStatement", + "src": "667:34:6" + }, + { + "id": 636, + "nodeType": "PlaceholderStatement", + "src": "711:1:6" + } + ] + }, + "documentation": null, + "id": 638, + "name": "onlyWhitelisted", + "nodeType": "ModifierDefinition", + "parameters": { + "id": 628, + "nodeType": "ParameterList", + "parameters": [], + "src": "654:2:6" + }, + "src": "630:89:6", + "visibility": "internal" + }, + { + "body": { + "id": 650, + "nodeType": "Block", + "src": "792:50:6", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 647, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 640, + "src": "827:7:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 645, + "name": "_whitelisteds", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 627, + "src": "809:13:6", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$6_storage", + "typeString": "struct Roles.Role storage ref" + } + }, + "id": 646, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "has", + "nodeType": "MemberAccess", + "referencedDeclaration": 92, + "src": "809:17:6", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_Role_$6_storage_ptr_$_t_address_$returns$_t_bool_$bound_to$_t_struct$_Role_$6_storage_ptr_$", + "typeString": "function (struct Roles.Role storage pointer,address) view returns (bool)" + } + }, + "id": 648, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "809:26:6", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 644, + "id": 649, + "nodeType": "Return", + "src": "802:33:6" + } + ] + }, + "documentation": null, + "id": 651, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "isWhitelisted", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 641, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 640, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 651, + "src": "748:15:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 639, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "748:7:6", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "747:17:6" + }, + "returnParameters": { + "id": 644, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 643, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 651, + "src": "786:4:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 642, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "786:4:6", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "785:6:6" + }, + "scope": 717, + "src": "725:117:6", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 662, + "nodeType": "Block", + "src": "915:41:6", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 659, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 653, + "src": "941:7:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 658, + "name": "_addWhitelisted", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 700, + "src": "925:15:6", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 660, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "925:24:6", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 661, + "nodeType": "ExpressionStatement", + "src": "925:24:6" + } + ] + }, + "documentation": null, + "id": 663, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": null, + "id": 656, + "modifierName": { + "argumentTypes": null, + "id": 655, + "name": "onlyWhitelistAdmin", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 541, + "src": "896:18:6", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "896:18:6" + } + ], + "name": "addWhitelisted", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 654, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 653, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 663, + "src": "872:15:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 652, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "872:7:6", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "871:17:6" + }, + "returnParameters": { + "id": 657, + "nodeType": "ParameterList", + "parameters": [], + "src": "915:0:6" + }, + "scope": 717, + "src": "848:108:6", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 674, + "nodeType": "Block", + "src": "1032:44:6", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 671, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 665, + "src": "1061:7:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 670, + "name": "_removeWhitelisted", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 716, + "src": "1042:18:6", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 672, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1042:27:6", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 673, + "nodeType": "ExpressionStatement", + "src": "1042:27:6" + } + ] + }, + "documentation": null, + "id": 675, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": null, + "id": 668, + "modifierName": { + "argumentTypes": null, + "id": 667, + "name": "onlyWhitelistAdmin", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 541, + "src": "1013:18:6", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "1013:18:6" + } + ], + "name": "removeWhitelisted", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 666, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 665, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 675, + "src": "989:15:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 664, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "989:7:6", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "988:17:6" + }, + "returnParameters": { + "id": 669, + "nodeType": "ParameterList", + "parameters": [], + "src": "1032:0:6" + }, + "scope": 717, + "src": "962:114:6", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 683, + "nodeType": "Block", + "src": "1120:47:6", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 679, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6845, + "src": "1149:3:6", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 680, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "1149:10:6", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "id": 678, + "name": "_removeWhitelisted", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 716, + "src": "1130:18:6", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 681, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1130:30:6", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 682, + "nodeType": "ExpressionStatement", + "src": "1130:30:6" + } + ] + }, + "documentation": null, + "id": 684, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "renounceWhitelisted", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 676, + "nodeType": "ParameterList", + "parameters": [], + "src": "1110:2:6" + }, + "returnParameters": { + "id": 677, + "nodeType": "ParameterList", + "parameters": [], + "src": "1120:0:6" + }, + "scope": 717, + "src": "1082:85:6", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 699, + "nodeType": "Block", + "src": "1224:83:6", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 692, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 686, + "src": "1252:7:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 689, + "name": "_whitelisteds", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 627, + "src": "1234:13:6", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$6_storage", + "typeString": "struct Roles.Role storage ref" + } + }, + "id": 691, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 38, + "src": "1234:17:6", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Role_$6_storage_ptr_$_t_address_$returns$__$bound_to$_t_struct$_Role_$6_storage_ptr_$", + "typeString": "function (struct Roles.Role storage pointer,address)" + } + }, + "id": 693, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1234:26:6", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 694, + "nodeType": "ExpressionStatement", + "src": "1234:26:6" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 696, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 686, + "src": "1292:7:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 695, + "name": "WhitelistedAdded", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 621, + "src": "1275:16:6", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 697, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1275:25:6", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 698, + "nodeType": "EmitStatement", + "src": "1270:30:6" + } + ] + }, + "documentation": null, + "id": 700, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_addWhitelisted", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 687, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 686, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 700, + "src": "1198:15:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 685, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1198:7:6", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1197:17:6" + }, + "returnParameters": { + "id": 688, + "nodeType": "ParameterList", + "parameters": [], + "src": "1224:0:6" + }, + "scope": 717, + "src": "1173:134:6", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 715, + "nodeType": "Block", + "src": "1367:88:6", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 708, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 702, + "src": "1398:7:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 705, + "name": "_whitelisteds", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 627, + "src": "1377:13:6", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$6_storage", + "typeString": "struct Roles.Role storage ref" + } + }, + "id": 707, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "remove", + "nodeType": "MemberAccess", + "referencedDeclaration": 69, + "src": "1377:20:6", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Role_$6_storage_ptr_$_t_address_$returns$__$bound_to$_t_struct$_Role_$6_storage_ptr_$", + "typeString": "function (struct Roles.Role storage pointer,address)" + } + }, + "id": 709, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1377:29:6", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 710, + "nodeType": "ExpressionStatement", + "src": "1377:29:6" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 712, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 702, + "src": "1440:7:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 711, + "name": "WhitelistedRemoved", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 625, + "src": "1421:18:6", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 713, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1421:27:6", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 714, + "nodeType": "EmitStatement", + "src": "1416:32:6" + } + ] + }, + "documentation": null, + "id": 716, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_removeWhitelisted", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 703, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 702, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 716, + "src": "1341:15:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 701, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1341:7:6", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1340:17:6" + }, + "returnParameters": { + "id": 704, + "nodeType": "ParameterList", + "parameters": [], + "src": "1367:0:6" + }, + "scope": 717, + "src": "1313:142:6", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + } + ], + "scope": 718, + "src": "396:1061:6" + } + ], + "src": "0:1458:6" + }, + "legacyAST": { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/access/roles/WhitelistedRole.sol", + "exportedSymbols": { + "WhitelistedRole": [ + 717 + ] + }, + "id": 718, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 610, + "literals": [ + "solidity", + "^", + "0.5", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "0:23:6" + }, + { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/access/Roles.sol", + "file": "../Roles.sol", + "id": 611, + "nodeType": "ImportDirective", + "scope": 718, + "sourceUnit": 94, + "src": "25:22:6", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "/home/nventuro/dev/openzeppelin-solidity/contracts/access/roles/WhitelistAdminRole.sol", + "file": "./WhitelistAdminRole.sol", + "id": 612, + "nodeType": "ImportDirective", + "scope": 718, + "sourceUnit": 609, + "src": "48:34:6", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 613, + "name": "WhitelistAdminRole", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 608, + "src": "424:18:6", + "typeDescriptions": { + "typeIdentifier": "t_contract$_WhitelistAdminRole_$608", + "typeString": "contract WhitelistAdminRole" + } + }, + "id": 614, + "nodeType": "InheritanceSpecifier", + "src": "424:18:6" + } + ], + "contractDependencies": [ + 608 + ], + "contractKind": "contract", + "documentation": "@title WhitelistedRole\n@dev Whitelisted accounts have been approved by a WhitelistAdmin to perform certain actions (e.g. participate in a\ncrowdsale). This role is special in that the only accounts that can add it are WhitelistAdmins (who can also remove\nit), and not Whitelisteds themselves.", + "fullyImplemented": true, + "id": 717, + "linearizedBaseContracts": [ + 717, + 608 + ], + "name": "WhitelistedRole", + "nodeType": "ContractDefinition", + "nodes": [ + { + "id": 617, + "libraryName": { + "contractScope": null, + "id": 615, + "name": "Roles", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 93, + "src": "455:5:6", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Roles_$93", + "typeString": "library Roles" + } + }, + "nodeType": "UsingForDirective", + "src": "449:27:6", + "typeName": { + "contractScope": null, + "id": 616, + "name": "Roles.Role", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 6, + "src": "465:10:6", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$6_storage_ptr", + "typeString": "struct Roles.Role" + } + } + }, + { + "anonymous": false, + "documentation": null, + "id": 621, + "name": "WhitelistedAdded", + "nodeType": "EventDefinition", + "parameters": { + "id": 620, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 619, + "indexed": true, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 621, + "src": "505:23:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 618, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "505:7:6", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "504:25:6" + }, + "src": "482:48:6" + }, + { + "anonymous": false, + "documentation": null, + "id": 625, + "name": "WhitelistedRemoved", + "nodeType": "EventDefinition", + "parameters": { + "id": 624, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 623, + "indexed": true, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 625, + "src": "560:23:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 622, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "560:7:6", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "559:25:6" + }, + "src": "535:50:6" + }, + { + "constant": false, + "id": 627, + "name": "_whitelisteds", + "nodeType": "VariableDeclaration", + "scope": 717, + "src": "591:32:6", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$6_storage", + "typeString": "struct Roles.Role" + }, + "typeName": { + "contractScope": null, + "id": 626, + "name": "Roles.Role", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 6, + "src": "591:10:6", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$6_storage_ptr", + "typeString": "struct Roles.Role" + } + }, + "value": null, + "visibility": "private" + }, + { + "body": { + "id": 637, + "nodeType": "Block", + "src": "657:62:6", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 631, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6845, + "src": "689:3:6", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 632, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "689:10:6", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "id": 630, + "name": "isWhitelisted", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 651, + "src": "675:13:6", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$", + "typeString": "function (address) view returns (bool)" + } + }, + "id": 633, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "675:25:6", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 629, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6848, + 6849 + ], + "referencedDeclaration": 6848, + "src": "667:7:6", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 634, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "667:34:6", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 635, + "nodeType": "ExpressionStatement", + "src": "667:34:6" + }, + { + "id": 636, + "nodeType": "PlaceholderStatement", + "src": "711:1:6" + } + ] + }, + "documentation": null, + "id": 638, + "name": "onlyWhitelisted", + "nodeType": "ModifierDefinition", + "parameters": { + "id": 628, + "nodeType": "ParameterList", + "parameters": [], + "src": "654:2:6" + }, + "src": "630:89:6", + "visibility": "internal" + }, + { + "body": { + "id": 650, + "nodeType": "Block", + "src": "792:50:6", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 647, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 640, + "src": "827:7:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 645, + "name": "_whitelisteds", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 627, + "src": "809:13:6", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$6_storage", + "typeString": "struct Roles.Role storage ref" + } + }, + "id": 646, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "has", + "nodeType": "MemberAccess", + "referencedDeclaration": 92, + "src": "809:17:6", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_Role_$6_storage_ptr_$_t_address_$returns$_t_bool_$bound_to$_t_struct$_Role_$6_storage_ptr_$", + "typeString": "function (struct Roles.Role storage pointer,address) view returns (bool)" + } + }, + "id": 648, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "809:26:6", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 644, + "id": 649, + "nodeType": "Return", + "src": "802:33:6" + } + ] + }, + "documentation": null, + "id": 651, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "isWhitelisted", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 641, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 640, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 651, + "src": "748:15:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 639, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "748:7:6", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "747:17:6" + }, + "returnParameters": { + "id": 644, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 643, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 651, + "src": "786:4:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 642, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "786:4:6", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "785:6:6" + }, + "scope": 717, + "src": "725:117:6", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 662, + "nodeType": "Block", + "src": "915:41:6", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 659, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 653, + "src": "941:7:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 658, + "name": "_addWhitelisted", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 700, + "src": "925:15:6", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 660, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "925:24:6", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 661, + "nodeType": "ExpressionStatement", + "src": "925:24:6" + } + ] + }, + "documentation": null, + "id": 663, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": null, + "id": 656, + "modifierName": { + "argumentTypes": null, + "id": 655, + "name": "onlyWhitelistAdmin", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 541, + "src": "896:18:6", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "896:18:6" + } + ], + "name": "addWhitelisted", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 654, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 653, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 663, + "src": "872:15:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 652, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "872:7:6", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "871:17:6" + }, + "returnParameters": { + "id": 657, + "nodeType": "ParameterList", + "parameters": [], + "src": "915:0:6" + }, + "scope": 717, + "src": "848:108:6", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 674, + "nodeType": "Block", + "src": "1032:44:6", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 671, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 665, + "src": "1061:7:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 670, + "name": "_removeWhitelisted", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 716, + "src": "1042:18:6", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 672, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1042:27:6", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 673, + "nodeType": "ExpressionStatement", + "src": "1042:27:6" + } + ] + }, + "documentation": null, + "id": 675, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": null, + "id": 668, + "modifierName": { + "argumentTypes": null, + "id": 667, + "name": "onlyWhitelistAdmin", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 541, + "src": "1013:18:6", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "1013:18:6" + } + ], + "name": "removeWhitelisted", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 666, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 665, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 675, + "src": "989:15:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 664, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "989:7:6", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "988:17:6" + }, + "returnParameters": { + "id": 669, + "nodeType": "ParameterList", + "parameters": [], + "src": "1032:0:6" + }, + "scope": 717, + "src": "962:114:6", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 683, + "nodeType": "Block", + "src": "1120:47:6", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 679, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6845, + "src": "1149:3:6", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 680, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "1149:10:6", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "id": 678, + "name": "_removeWhitelisted", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 716, + "src": "1130:18:6", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 681, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1130:30:6", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 682, + "nodeType": "ExpressionStatement", + "src": "1130:30:6" + } + ] + }, + "documentation": null, + "id": 684, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "renounceWhitelisted", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 676, + "nodeType": "ParameterList", + "parameters": [], + "src": "1110:2:6" + }, + "returnParameters": { + "id": 677, + "nodeType": "ParameterList", + "parameters": [], + "src": "1120:0:6" + }, + "scope": 717, + "src": "1082:85:6", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 699, + "nodeType": "Block", + "src": "1224:83:6", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 692, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 686, + "src": "1252:7:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 689, + "name": "_whitelisteds", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 627, + "src": "1234:13:6", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$6_storage", + "typeString": "struct Roles.Role storage ref" + } + }, + "id": 691, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 38, + "src": "1234:17:6", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Role_$6_storage_ptr_$_t_address_$returns$__$bound_to$_t_struct$_Role_$6_storage_ptr_$", + "typeString": "function (struct Roles.Role storage pointer,address)" + } + }, + "id": 693, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1234:26:6", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 694, + "nodeType": "ExpressionStatement", + "src": "1234:26:6" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 696, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 686, + "src": "1292:7:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 695, + "name": "WhitelistedAdded", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 621, + "src": "1275:16:6", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 697, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1275:25:6", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 698, + "nodeType": "EmitStatement", + "src": "1270:30:6" + } + ] + }, + "documentation": null, + "id": 700, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_addWhitelisted", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 687, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 686, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 700, + "src": "1198:15:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 685, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1198:7:6", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1197:17:6" + }, + "returnParameters": { + "id": 688, + "nodeType": "ParameterList", + "parameters": [], + "src": "1224:0:6" + }, + "scope": 717, + "src": "1173:134:6", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 715, + "nodeType": "Block", + "src": "1367:88:6", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 708, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 702, + "src": "1398:7:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 705, + "name": "_whitelisteds", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 627, + "src": "1377:13:6", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Role_$6_storage", + "typeString": "struct Roles.Role storage ref" + } + }, + "id": 707, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "remove", + "nodeType": "MemberAccess", + "referencedDeclaration": 69, + "src": "1377:20:6", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Role_$6_storage_ptr_$_t_address_$returns$__$bound_to$_t_struct$_Role_$6_storage_ptr_$", + "typeString": "function (struct Roles.Role storage pointer,address)" + } + }, + "id": 709, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1377:29:6", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 710, + "nodeType": "ExpressionStatement", + "src": "1377:29:6" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 712, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 702, + "src": "1440:7:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 711, + "name": "WhitelistedRemoved", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 625, + "src": "1421:18:6", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 713, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1421:27:6", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 714, + "nodeType": "EmitStatement", + "src": "1416:32:6" + } + ] + }, + "documentation": null, + "id": 716, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_removeWhitelisted", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 703, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 702, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 716, + "src": "1341:15:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 701, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1341:7:6", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1340:17:6" + }, + "returnParameters": { + "id": 704, + "nodeType": "ParameterList", + "parameters": [], + "src": "1367:0:6" + }, + "scope": 717, + "src": "1313:142:6", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + } + ], + "scope": 718, + "src": "396:1061:6" + } + ], + "src": "0:1458:6" + }, + "compiler": { + "name": "solc", + "version": "0.5.0+commit.1d4f565a.Emscripten.clang" + }, + "networks": {}, + "schemaVersion": "3.0.0", + "updatedAt": "2019-01-04T21:44:02.869Z", + "devdoc": { + "details": "Whitelisted accounts have been approved by a WhitelistAdmin to perform certain actions (e.g. participate in a crowdsale). This role is special in that the only accounts that can add it are WhitelistAdmins (who can also remove it), and not Whitelisteds themselves.", + "methods": {}, + "title": "WhitelistedRole" + }, + "userdoc": { + "methods": {} + } +} \ No newline at end of file diff --git a/node_modules/openzeppelin-solidity/contracts/.npmignore b/node_modules/openzeppelin-solidity/contracts/.npmignore new file mode 100644 index 0000000..e792d8b --- /dev/null +++ b/node_modules/openzeppelin-solidity/contracts/.npmignore @@ -0,0 +1,2 @@ +mocks +examples diff --git a/node_modules/openzeppelin-solidity/contracts/ARCHITECTURE.md b/node_modules/openzeppelin-solidity/contracts/ARCHITECTURE.md new file mode 100644 index 0000000..bfb6cff --- /dev/null +++ b/node_modules/openzeppelin-solidity/contracts/ARCHITECTURE.md @@ -0,0 +1,27 @@ +## Architecture + +The following provides visibility into how OpenZeppelin's contracts are organized: + +- **access** - Smart contracts that enable functionality that can be used for selective restrictions and basic authorization control functions. +- **crowdsale** - A collection of smart contracts used to manage token crowdsales that allow investors to purchase tokens with ETH. Includes a base contract which implements fundamental crowdsale functionality in its simplest form. The base contract can be extended in order to satisfy your crowdsale’s specific requirements. + - **distribution** - Includes extensions of the base crowdsale contract which can be used to customize the completion of a crowdsale. + - **emission** - Includes extensions of the base crowdsale contract which can be used to mint and manage how tokens are issued to purchasers. + - **price** - Includes extensions of the crowdsale contract that can be used to manage changes in token prices. + - **validation** - Includes extensions of the crowdsale contract that can be used to enforce restraints and limit access to token purchases. +- **examples** - A collection of simple smart contracts that demonstrate how to add new features to base contracts through multiple inheritance. +- **introspection** - An interface that can be used to make a contract comply with the ERC-165 standard as well as a contract that implements ERC-165 using a lookup table. +- **lifecycle** - A collection of base contracts used to manage the existence and behavior of your contracts and their funds. +- **math** - Libraries with safety checks on operations that throw on errors. +- **mocks** - A collection of abstract contracts that are primarily used for unit testing. They also serve as good usage examples and demonstrate how to combine contracts with inheritance when developing your own custom applications. +- **ownership** - A collection of smart contracts that can be used to manage contract and token ownership +- **payment** - A collection of smart contracts that can be used to manage payments through escrow arrangements, withdrawals, and claims. Includes support for both single payees and multiple payees. +- **proposals** - A collection of smart contracts that reflect community Ethereum Improvement Proposals (EIPs). These contracts are under development and standardization. They are not recommended for production, but they are useful for experimentation with pending EIP standards. Go [here](https://github.com/OpenZeppelin/openzeppelin-solidity/wiki/ERC-Process) for more information. + +- **token** - A collection of approved ERC standard tokens -- their interfaces and implementations. + - **ERC20** - A standard interface for fungible tokens: + - *Interfaces* - Includes the ERC-20 token standard basic interface. I.e., what the contract’s ABI can represent. + - *Implementations* - Includes ERC-20 token implementations that include all required and some optional ERC-20 functionality. + - **ERC721** - A standard interface for non-fungible tokens + - *Interfaces* - Includes the ERC-721 token standard basic interface. I.e., what the contract’s ABI can represent. + - *Implementations* - Includes ERC-721 token implementations that include all required and some optional ERC-721 functionality. + diff --git a/node_modules/openzeppelin-solidity/contracts/access/Roles.sol b/node_modules/openzeppelin-solidity/contracts/access/Roles.sol new file mode 100644 index 0000000..63148d1 --- /dev/null +++ b/node_modules/openzeppelin-solidity/contracts/access/Roles.sol @@ -0,0 +1,40 @@ +pragma solidity ^0.5.0; + +/** + * @title Roles + * @dev Library for managing addresses assigned to a Role. + */ +library Roles { + struct Role { + mapping (address => bool) bearer; + } + + /** + * @dev give an account access to this role + */ + function add(Role storage role, address account) internal { + require(account != address(0)); + require(!has(role, account)); + + role.bearer[account] = true; + } + + /** + * @dev remove an account's access to this role + */ + function remove(Role storage role, address account) internal { + require(account != address(0)); + require(has(role, account)); + + role.bearer[account] = false; + } + + /** + * @dev check if an account has this role + * @return bool + */ + function has(Role storage role, address account) internal view returns (bool) { + require(account != address(0)); + return role.bearer[account]; + } +} diff --git a/node_modules/openzeppelin-solidity/contracts/access/roles/CapperRole.sol b/node_modules/openzeppelin-solidity/contracts/access/roles/CapperRole.sol new file mode 100644 index 0000000..94bc6e2 --- /dev/null +++ b/node_modules/openzeppelin-solidity/contracts/access/roles/CapperRole.sol @@ -0,0 +1,43 @@ +pragma solidity ^0.5.0; + +import "../Roles.sol"; + +contract CapperRole { + using Roles for Roles.Role; + + event CapperAdded(address indexed account); + event CapperRemoved(address indexed account); + + Roles.Role private _cappers; + + constructor () internal { + _addCapper(msg.sender); + } + + modifier onlyCapper() { + require(isCapper(msg.sender)); + _; + } + + function isCapper(address account) public view returns (bool) { + return _cappers.has(account); + } + + function addCapper(address account) public onlyCapper { + _addCapper(account); + } + + function renounceCapper() public { + _removeCapper(msg.sender); + } + + function _addCapper(address account) internal { + _cappers.add(account); + emit CapperAdded(account); + } + + function _removeCapper(address account) internal { + _cappers.remove(account); + emit CapperRemoved(account); + } +} diff --git a/node_modules/openzeppelin-solidity/contracts/access/roles/MinterRole.sol b/node_modules/openzeppelin-solidity/contracts/access/roles/MinterRole.sol new file mode 100644 index 0000000..61e70f6 --- /dev/null +++ b/node_modules/openzeppelin-solidity/contracts/access/roles/MinterRole.sol @@ -0,0 +1,43 @@ +pragma solidity ^0.5.0; + +import "../Roles.sol"; + +contract MinterRole { + using Roles for Roles.Role; + + event MinterAdded(address indexed account); + event MinterRemoved(address indexed account); + + Roles.Role private _minters; + + constructor () internal { + _addMinter(msg.sender); + } + + modifier onlyMinter() { + require(isMinter(msg.sender)); + _; + } + + function isMinter(address account) public view returns (bool) { + return _minters.has(account); + } + + function addMinter(address account) public onlyMinter { + _addMinter(account); + } + + function renounceMinter() public { + _removeMinter(msg.sender); + } + + function _addMinter(address account) internal { + _minters.add(account); + emit MinterAdded(account); + } + + function _removeMinter(address account) internal { + _minters.remove(account); + emit MinterRemoved(account); + } +} diff --git a/node_modules/openzeppelin-solidity/contracts/access/roles/PauserRole.sol b/node_modules/openzeppelin-solidity/contracts/access/roles/PauserRole.sol new file mode 100644 index 0000000..2882d0e --- /dev/null +++ b/node_modules/openzeppelin-solidity/contracts/access/roles/PauserRole.sol @@ -0,0 +1,43 @@ +pragma solidity ^0.5.0; + +import "../Roles.sol"; + +contract PauserRole { + using Roles for Roles.Role; + + event PauserAdded(address indexed account); + event PauserRemoved(address indexed account); + + Roles.Role private _pausers; + + constructor () internal { + _addPauser(msg.sender); + } + + modifier onlyPauser() { + require(isPauser(msg.sender)); + _; + } + + function isPauser(address account) public view returns (bool) { + return _pausers.has(account); + } + + function addPauser(address account) public onlyPauser { + _addPauser(account); + } + + function renouncePauser() public { + _removePauser(msg.sender); + } + + function _addPauser(address account) internal { + _pausers.add(account); + emit PauserAdded(account); + } + + function _removePauser(address account) internal { + _pausers.remove(account); + emit PauserRemoved(account); + } +} diff --git a/node_modules/openzeppelin-solidity/contracts/access/roles/SignerRole.sol b/node_modules/openzeppelin-solidity/contracts/access/roles/SignerRole.sol new file mode 100644 index 0000000..8021cfd --- /dev/null +++ b/node_modules/openzeppelin-solidity/contracts/access/roles/SignerRole.sol @@ -0,0 +1,43 @@ +pragma solidity ^0.5.0; + +import "../Roles.sol"; + +contract SignerRole { + using Roles for Roles.Role; + + event SignerAdded(address indexed account); + event SignerRemoved(address indexed account); + + Roles.Role private _signers; + + constructor () internal { + _addSigner(msg.sender); + } + + modifier onlySigner() { + require(isSigner(msg.sender)); + _; + } + + function isSigner(address account) public view returns (bool) { + return _signers.has(account); + } + + function addSigner(address account) public onlySigner { + _addSigner(account); + } + + function renounceSigner() public { + _removeSigner(msg.sender); + } + + function _addSigner(address account) internal { + _signers.add(account); + emit SignerAdded(account); + } + + function _removeSigner(address account) internal { + _signers.remove(account); + emit SignerRemoved(account); + } +} diff --git a/node_modules/openzeppelin-solidity/contracts/access/roles/WhitelistAdminRole.sol b/node_modules/openzeppelin-solidity/contracts/access/roles/WhitelistAdminRole.sol new file mode 100644 index 0000000..8af7412 --- /dev/null +++ b/node_modules/openzeppelin-solidity/contracts/access/roles/WhitelistAdminRole.sol @@ -0,0 +1,47 @@ +pragma solidity ^0.5.0; + +import "../Roles.sol"; + +/** + * @title WhitelistAdminRole + * @dev WhitelistAdmins are responsible for assigning and removing Whitelisted accounts. + */ +contract WhitelistAdminRole { + using Roles for Roles.Role; + + event WhitelistAdminAdded(address indexed account); + event WhitelistAdminRemoved(address indexed account); + + Roles.Role private _whitelistAdmins; + + constructor () internal { + _addWhitelistAdmin(msg.sender); + } + + modifier onlyWhitelistAdmin() { + require(isWhitelistAdmin(msg.sender)); + _; + } + + function isWhitelistAdmin(address account) public view returns (bool) { + return _whitelistAdmins.has(account); + } + + function addWhitelistAdmin(address account) public onlyWhitelistAdmin { + _addWhitelistAdmin(account); + } + + function renounceWhitelistAdmin() public { + _removeWhitelistAdmin(msg.sender); + } + + function _addWhitelistAdmin(address account) internal { + _whitelistAdmins.add(account); + emit WhitelistAdminAdded(account); + } + + function _removeWhitelistAdmin(address account) internal { + _whitelistAdmins.remove(account); + emit WhitelistAdminRemoved(account); + } +} diff --git a/node_modules/openzeppelin-solidity/contracts/access/roles/WhitelistedRole.sol b/node_modules/openzeppelin-solidity/contracts/access/roles/WhitelistedRole.sol new file mode 100644 index 0000000..3ba5ae0 --- /dev/null +++ b/node_modules/openzeppelin-solidity/contracts/access/roles/WhitelistedRole.sol @@ -0,0 +1,50 @@ +pragma solidity ^0.5.0; + +import "../Roles.sol"; +import "./WhitelistAdminRole.sol"; + +/** + * @title WhitelistedRole + * @dev Whitelisted accounts have been approved by a WhitelistAdmin to perform certain actions (e.g. participate in a + * crowdsale). This role is special in that the only accounts that can add it are WhitelistAdmins (who can also remove + * it), and not Whitelisteds themselves. + */ +contract WhitelistedRole is WhitelistAdminRole { + using Roles for Roles.Role; + + event WhitelistedAdded(address indexed account); + event WhitelistedRemoved(address indexed account); + + Roles.Role private _whitelisteds; + + modifier onlyWhitelisted() { + require(isWhitelisted(msg.sender)); + _; + } + + function isWhitelisted(address account) public view returns (bool) { + return _whitelisteds.has(account); + } + + function addWhitelisted(address account) public onlyWhitelistAdmin { + _addWhitelisted(account); + } + + function removeWhitelisted(address account) public onlyWhitelistAdmin { + _removeWhitelisted(account); + } + + function renounceWhitelisted() public { + _removeWhitelisted(msg.sender); + } + + function _addWhitelisted(address account) internal { + _whitelisteds.add(account); + emit WhitelistedAdded(account); + } + + function _removeWhitelisted(address account) internal { + _whitelisteds.remove(account); + emit WhitelistedRemoved(account); + } +} diff --git a/node_modules/openzeppelin-solidity/contracts/crowdsale/Crowdsale.sol b/node_modules/openzeppelin-solidity/contracts/crowdsale/Crowdsale.sol new file mode 100644 index 0000000..fab17d1 --- /dev/null +++ b/node_modules/openzeppelin-solidity/contracts/crowdsale/Crowdsale.sol @@ -0,0 +1,198 @@ +pragma solidity ^0.5.0; + +import "../token/ERC20/IERC20.sol"; +import "../math/SafeMath.sol"; +import "../token/ERC20/SafeERC20.sol"; +import "../utils/ReentrancyGuard.sol"; + +/** + * @title Crowdsale + * @dev Crowdsale is a base contract for managing a token crowdsale, + * allowing investors to purchase tokens with ether. This contract implements + * such functionality in its most fundamental form and can be extended to provide additional + * functionality and/or custom behavior. + * The external interface represents the basic interface for purchasing tokens, and conform + * the base architecture for crowdsales. They are *not* intended to be modified / overridden. + * The internal interface conforms the extensible and modifiable surface of crowdsales. Override + * the methods to add functionality. Consider using 'super' where appropriate to concatenate + * behavior. + */ +contract Crowdsale is ReentrancyGuard { + using SafeMath for uint256; + using SafeERC20 for IERC20; + + // The token being sold + IERC20 private _token; + + // Address where funds are collected + address payable private _wallet; + + // How many token units a buyer gets per wei. + // The rate is the conversion between wei and the smallest and indivisible token unit. + // So, if you are using a rate of 1 with a ERC20Detailed token with 3 decimals called TOK + // 1 wei will give you 1 unit, or 0.001 TOK. + uint256 private _rate; + + // Amount of wei raised + uint256 private _weiRaised; + + /** + * Event for token purchase logging + * @param purchaser who paid for the tokens + * @param beneficiary who got the tokens + * @param value weis paid for purchase + * @param amount amount of tokens purchased + */ + event TokensPurchased(address indexed purchaser, address indexed beneficiary, uint256 value, uint256 amount); + + /** + * @param rate Number of token units a buyer gets per wei + * @dev The rate is the conversion between wei and the smallest and indivisible + * token unit. So, if you are using a rate of 1 with a ERC20Detailed token + * with 3 decimals called TOK, 1 wei will give you 1 unit, or 0.001 TOK. + * @param wallet Address where collected funds will be forwarded to + * @param token Address of the token being sold + */ + constructor (uint256 rate, address payable wallet, IERC20 token) public { + require(rate > 0); + require(wallet != address(0)); + require(address(token) != address(0)); + + _rate = rate; + _wallet = wallet; + _token = token; + } + + /** + * @dev fallback function ***DO NOT OVERRIDE*** + * Note that other contracts will transfer fund with a base gas stipend + * of 2300, which is not enough to call buyTokens. Consider calling + * buyTokens directly when purchasing tokens from a contract. + */ + function () external payable { + buyTokens(msg.sender); + } + + /** + * @return the token being sold. + */ + function token() public view returns (IERC20) { + return _token; + } + + /** + * @return the address where funds are collected. + */ + function wallet() public view returns (address payable) { + return _wallet; + } + + /** + * @return the number of token units a buyer gets per wei. + */ + function rate() public view returns (uint256) { + return _rate; + } + + /** + * @return the amount of wei raised. + */ + function weiRaised() public view returns (uint256) { + return _weiRaised; + } + + /** + * @dev low level token purchase ***DO NOT OVERRIDE*** + * This function has a non-reentrancy guard, so it shouldn't be called by + * another `nonReentrant` function. + * @param beneficiary Recipient of the token purchase + */ + function buyTokens(address beneficiary) public nonReentrant payable { + uint256 weiAmount = msg.value; + _preValidatePurchase(beneficiary, weiAmount); + + // calculate token amount to be created + uint256 tokens = _getTokenAmount(weiAmount); + + // update state + _weiRaised = _weiRaised.add(weiAmount); + + _processPurchase(beneficiary, tokens); + emit TokensPurchased(msg.sender, beneficiary, weiAmount, tokens); + + _updatePurchasingState(beneficiary, weiAmount); + + _forwardFunds(); + _postValidatePurchase(beneficiary, weiAmount); + } + + /** + * @dev Validation of an incoming purchase. Use require statements to revert state when conditions are not met. + * Use `super` in contracts that inherit from Crowdsale to extend their validations. + * Example from CappedCrowdsale.sol's _preValidatePurchase method: + * super._preValidatePurchase(beneficiary, weiAmount); + * require(weiRaised().add(weiAmount) <= cap); + * @param beneficiary Address performing the token purchase + * @param weiAmount Value in wei involved in the purchase + */ + function _preValidatePurchase(address beneficiary, uint256 weiAmount) internal view { + require(beneficiary != address(0)); + require(weiAmount != 0); + } + + /** + * @dev Validation of an executed purchase. Observe state and use revert statements to undo rollback when valid + * conditions are not met. + * @param beneficiary Address performing the token purchase + * @param weiAmount Value in wei involved in the purchase + */ + function _postValidatePurchase(address beneficiary, uint256 weiAmount) internal view { + // solhint-disable-previous-line no-empty-blocks + } + + /** + * @dev Source of tokens. Override this method to modify the way in which the crowdsale ultimately gets and sends + * its tokens. + * @param beneficiary Address performing the token purchase + * @param tokenAmount Number of tokens to be emitted + */ + function _deliverTokens(address beneficiary, uint256 tokenAmount) internal { + _token.safeTransfer(beneficiary, tokenAmount); + } + + /** + * @dev Executed when a purchase has been validated and is ready to be executed. Doesn't necessarily emit/send + * tokens. + * @param beneficiary Address receiving the tokens + * @param tokenAmount Number of tokens to be purchased + */ + function _processPurchase(address beneficiary, uint256 tokenAmount) internal { + _deliverTokens(beneficiary, tokenAmount); + } + + /** + * @dev Override for extensions that require an internal state to check for validity (current user contributions, + * etc.) + * @param beneficiary Address receiving the tokens + * @param weiAmount Value in wei involved in the purchase + */ + function _updatePurchasingState(address beneficiary, uint256 weiAmount) internal { + // solhint-disable-previous-line no-empty-blocks + } + + /** + * @dev Override to extend the way in which ether is converted to tokens. + * @param weiAmount Value in wei to be converted into tokens + * @return Number of tokens that can be purchased with the specified _weiAmount + */ + function _getTokenAmount(uint256 weiAmount) internal view returns (uint256) { + return weiAmount.mul(_rate); + } + + /** + * @dev Determines how ETH is stored/forwarded on purchases. + */ + function _forwardFunds() internal { + _wallet.transfer(msg.value); + } +} diff --git a/node_modules/openzeppelin-solidity/contracts/crowdsale/distribution/FinalizableCrowdsale.sol b/node_modules/openzeppelin-solidity/contracts/crowdsale/distribution/FinalizableCrowdsale.sol new file mode 100644 index 0000000..f904e22 --- /dev/null +++ b/node_modules/openzeppelin-solidity/contracts/crowdsale/distribution/FinalizableCrowdsale.sol @@ -0,0 +1,51 @@ +pragma solidity ^0.5.0; + +import "../../math/SafeMath.sol"; +import "../validation/TimedCrowdsale.sol"; + +/** + * @title FinalizableCrowdsale + * @dev Extension of Crowdsale with a one-off finalization action, where one + * can do extra work after finishing. + */ +contract FinalizableCrowdsale is TimedCrowdsale { + using SafeMath for uint256; + + bool private _finalized; + + event CrowdsaleFinalized(); + + constructor () internal { + _finalized = false; + } + + /** + * @return true if the crowdsale is finalized, false otherwise. + */ + function finalized() public view returns (bool) { + return _finalized; + } + + /** + * @dev Must be called after crowdsale ends, to do some extra finalization + * work. Calls the contract's finalization function. + */ + function finalize() public { + require(!_finalized); + require(hasClosed()); + + _finalized = true; + + _finalization(); + emit CrowdsaleFinalized(); + } + + /** + * @dev Can be overridden to add finalization logic. The overriding function + * should call super._finalization() to ensure the chain of finalization is + * executed entirely. + */ + function _finalization() internal { + // solhint-disable-previous-line no-empty-blocks + } +} diff --git a/node_modules/openzeppelin-solidity/contracts/crowdsale/distribution/PostDeliveryCrowdsale.sol b/node_modules/openzeppelin-solidity/contracts/crowdsale/distribution/PostDeliveryCrowdsale.sol new file mode 100644 index 0000000..6e10fa5 --- /dev/null +++ b/node_modules/openzeppelin-solidity/contracts/crowdsale/distribution/PostDeliveryCrowdsale.sol @@ -0,0 +1,43 @@ +pragma solidity ^0.5.0; + +import "../validation/TimedCrowdsale.sol"; +import "../../math/SafeMath.sol"; + +/** + * @title PostDeliveryCrowdsale + * @dev Crowdsale that locks tokens from withdrawal until it ends. + */ +contract PostDeliveryCrowdsale is TimedCrowdsale { + using SafeMath for uint256; + + mapping(address => uint256) private _balances; + + /** + * @dev Withdraw tokens only after crowdsale ends. + * @param beneficiary Whose tokens will be withdrawn. + */ + function withdrawTokens(address beneficiary) public { + require(hasClosed()); + uint256 amount = _balances[beneficiary]; + require(amount > 0); + _balances[beneficiary] = 0; + _deliverTokens(beneficiary, amount); + } + + /** + * @return the balance of an account. + */ + function balanceOf(address account) public view returns (uint256) { + return _balances[account]; + } + + /** + * @dev Overrides parent by storing balances instead of issuing tokens right away. + * @param beneficiary Token purchaser + * @param tokenAmount Amount of tokens purchased + */ + function _processPurchase(address beneficiary, uint256 tokenAmount) internal { + _balances[beneficiary] = _balances[beneficiary].add(tokenAmount); + } + +} diff --git a/node_modules/openzeppelin-solidity/contracts/crowdsale/distribution/RefundableCrowdsale.sol b/node_modules/openzeppelin-solidity/contracts/crowdsale/distribution/RefundableCrowdsale.sol new file mode 100644 index 0000000..732103a --- /dev/null +++ b/node_modules/openzeppelin-solidity/contracts/crowdsale/distribution/RefundableCrowdsale.sol @@ -0,0 +1,82 @@ +pragma solidity ^0.5.0; + +import "../../math/SafeMath.sol"; +import "./FinalizableCrowdsale.sol"; +import "../../payment/escrow/RefundEscrow.sol"; + +/** + * @title RefundableCrowdsale + * @dev Extension of Crowdsale contract that adds a funding goal, and the possibility of users getting a refund if goal + * is not met. + * + * Deprecated, use RefundablePostDeliveryCrowdsale instead. Note that if you allow tokens to be traded before the goal + * is met, then an attack is possible in which the attacker purchases tokens from the crowdsale and when they sees that + * the goal is unlikely to be met, they sell their tokens (possibly at a discount). The attacker will be refunded when + * the crowdsale is finalized, and the users that purchased from them will be left with worthless tokens. + */ +contract RefundableCrowdsale is FinalizableCrowdsale { + using SafeMath for uint256; + + // minimum amount of funds to be raised in weis + uint256 private _goal; + + // refund escrow used to hold funds while crowdsale is running + RefundEscrow private _escrow; + + /** + * @dev Constructor, creates RefundEscrow. + * @param goal Funding goal + */ + constructor (uint256 goal) public { + require(goal > 0); + _escrow = new RefundEscrow(wallet()); + _goal = goal; + } + + /** + * @return minimum amount of funds to be raised in wei. + */ + function goal() public view returns (uint256) { + return _goal; + } + + /** + * @dev Investors can claim refunds here if crowdsale is unsuccessful + * @param refundee Whose refund will be claimed. + */ + function claimRefund(address payable refundee) public { + require(finalized()); + require(!goalReached()); + + _escrow.withdraw(refundee); + } + + /** + * @dev Checks whether funding goal was reached. + * @return Whether funding goal was reached + */ + function goalReached() public view returns (bool) { + return weiRaised() >= _goal; + } + + /** + * @dev escrow finalization task, called when finalize() is called + */ + function _finalization() internal { + if (goalReached()) { + _escrow.close(); + _escrow.beneficiaryWithdraw(); + } else { + _escrow.enableRefunds(); + } + + super._finalization(); + } + + /** + * @dev Overrides Crowdsale fund forwarding, sending funds to escrow. + */ + function _forwardFunds() internal { + _escrow.deposit.value(msg.value)(msg.sender); + } +} diff --git a/node_modules/openzeppelin-solidity/contracts/crowdsale/distribution/RefundablePostDeliveryCrowdsale.sol b/node_modules/openzeppelin-solidity/contracts/crowdsale/distribution/RefundablePostDeliveryCrowdsale.sol new file mode 100644 index 0000000..be4c5b6 --- /dev/null +++ b/node_modules/openzeppelin-solidity/contracts/crowdsale/distribution/RefundablePostDeliveryCrowdsale.sol @@ -0,0 +1,20 @@ +pragma solidity ^0.5.0; + +import "./RefundableCrowdsale.sol"; +import "./PostDeliveryCrowdsale.sol"; + + +/** + * @title RefundablePostDeliveryCrowdsale + * @dev Extension of RefundableCrowdsale contract that only delivers the tokens + * once the crowdsale has closed and the goal met, preventing refunds to be issued + * to token holders. + */ +contract RefundablePostDeliveryCrowdsale is RefundableCrowdsale, PostDeliveryCrowdsale { + function withdrawTokens(address beneficiary) public { + require(finalized()); + require(goalReached()); + + super.withdrawTokens(beneficiary); + } +} diff --git a/node_modules/openzeppelin-solidity/contracts/crowdsale/emission/AllowanceCrowdsale.sol b/node_modules/openzeppelin-solidity/contracts/crowdsale/emission/AllowanceCrowdsale.sol new file mode 100644 index 0000000..b4f3ace --- /dev/null +++ b/node_modules/openzeppelin-solidity/contracts/crowdsale/emission/AllowanceCrowdsale.sol @@ -0,0 +1,51 @@ +pragma solidity ^0.5.0; + +import "../Crowdsale.sol"; +import "../../token/ERC20/IERC20.sol"; +import "../../token/ERC20/SafeERC20.sol"; +import "../../math/SafeMath.sol"; +import "../../math/Math.sol"; + +/** + * @title AllowanceCrowdsale + * @dev Extension of Crowdsale where tokens are held by a wallet, which approves an allowance to the crowdsale. + */ +contract AllowanceCrowdsale is Crowdsale { + using SafeMath for uint256; + using SafeERC20 for IERC20; + + address private _tokenWallet; + + /** + * @dev Constructor, takes token wallet address. + * @param tokenWallet Address holding the tokens, which has approved allowance to the crowdsale + */ + constructor (address tokenWallet) public { + require(tokenWallet != address(0)); + _tokenWallet = tokenWallet; + } + + /** + * @return the address of the wallet that will hold the tokens. + */ + function tokenWallet() public view returns (address) { + return _tokenWallet; + } + + /** + * @dev Checks the amount of tokens left in the allowance. + * @return Amount of tokens left in the allowance + */ + function remainingTokens() public view returns (uint256) { + return Math.min(token().balanceOf(_tokenWallet), token().allowance(_tokenWallet, address(this))); + } + + /** + * @dev Overrides parent behavior by transferring tokens from wallet. + * @param beneficiary Token purchaser + * @param tokenAmount Amount of tokens purchased + */ + function _deliverTokens(address beneficiary, uint256 tokenAmount) internal { + token().safeTransferFrom(_tokenWallet, beneficiary, tokenAmount); + } +} diff --git a/node_modules/openzeppelin-solidity/contracts/crowdsale/emission/MintedCrowdsale.sol b/node_modules/openzeppelin-solidity/contracts/crowdsale/emission/MintedCrowdsale.sol new file mode 100644 index 0000000..f239735 --- /dev/null +++ b/node_modules/openzeppelin-solidity/contracts/crowdsale/emission/MintedCrowdsale.sol @@ -0,0 +1,21 @@ +pragma solidity ^0.5.0; + +import "../Crowdsale.sol"; +import "../../token/ERC20/ERC20Mintable.sol"; + +/** + * @title MintedCrowdsale + * @dev Extension of Crowdsale contract whose tokens are minted in each purchase. + * Token ownership should be transferred to MintedCrowdsale for minting. + */ +contract MintedCrowdsale is Crowdsale { + /** + * @dev Overrides delivery by minting tokens upon purchase. + * @param beneficiary Token purchaser + * @param tokenAmount Number of tokens to be minted + */ + function _deliverTokens(address beneficiary, uint256 tokenAmount) internal { + // Potentially dangerous assumption about the type of the token. + require(ERC20Mintable(address(token())).mint(beneficiary, tokenAmount)); + } +} diff --git a/node_modules/openzeppelin-solidity/contracts/crowdsale/price/IncreasingPriceCrowdsale.sol b/node_modules/openzeppelin-solidity/contracts/crowdsale/price/IncreasingPriceCrowdsale.sol new file mode 100644 index 0000000..941cfe0 --- /dev/null +++ b/node_modules/openzeppelin-solidity/contracts/crowdsale/price/IncreasingPriceCrowdsale.sol @@ -0,0 +1,78 @@ +pragma solidity ^0.5.0; + +import "../validation/TimedCrowdsale.sol"; +import "../../math/SafeMath.sol"; + +/** + * @title IncreasingPriceCrowdsale + * @dev Extension of Crowdsale contract that increases the price of tokens linearly in time. + * Note that what should be provided to the constructor is the initial and final _rates_, that is, + * the amount of tokens per wei contributed. Thus, the initial rate must be greater than the final rate. + */ +contract IncreasingPriceCrowdsale is TimedCrowdsale { + using SafeMath for uint256; + + uint256 private _initialRate; + uint256 private _finalRate; + + /** + * @dev Constructor, takes initial and final rates of tokens received per wei contributed. + * @param initialRate Number of tokens a buyer gets per wei at the start of the crowdsale + * @param finalRate Number of tokens a buyer gets per wei at the end of the crowdsale + */ + constructor (uint256 initialRate, uint256 finalRate) public { + require(finalRate > 0); + require(initialRate > finalRate); + _initialRate = initialRate; + _finalRate = finalRate; + } + + /** + * The base rate function is overridden to revert, since this crowdsale doens't use it, and + * all calls to it are a mistake. + */ + function rate() public view returns (uint256) { + revert(); + } + + /** + * @return the initial rate of the crowdsale. + */ + function initialRate() public view returns (uint256) { + return _initialRate; + } + + /** + * @return the final rate of the crowdsale. + */ + function finalRate() public view returns (uint256) { + return _finalRate; + } + + /** + * @dev Returns the rate of tokens per wei at the present time. + * Note that, as price _increases_ with time, the rate _decreases_. + * @return The number of tokens a buyer gets per wei at a given time + */ + function getCurrentRate() public view returns (uint256) { + if (!isOpen()) { + return 0; + } + + // solhint-disable-next-line not-rely-on-time + uint256 elapsedTime = block.timestamp.sub(openingTime()); + uint256 timeRange = closingTime().sub(openingTime()); + uint256 rateRange = _initialRate.sub(_finalRate); + return _initialRate.sub(elapsedTime.mul(rateRange).div(timeRange)); + } + + /** + * @dev Overrides parent method taking into account variable rate. + * @param weiAmount The value in wei to be converted into tokens + * @return The number of tokens _weiAmount wei will buy at present time + */ + function _getTokenAmount(uint256 weiAmount) internal view returns (uint256) { + uint256 currentRate = getCurrentRate(); + return currentRate.mul(weiAmount); + } +} diff --git a/node_modules/openzeppelin-solidity/contracts/crowdsale/validation/CappedCrowdsale.sol b/node_modules/openzeppelin-solidity/contracts/crowdsale/validation/CappedCrowdsale.sol new file mode 100644 index 0000000..2d21c04 --- /dev/null +++ b/node_modules/openzeppelin-solidity/contracts/crowdsale/validation/CappedCrowdsale.sol @@ -0,0 +1,48 @@ +pragma solidity ^0.5.0; + +import "../../math/SafeMath.sol"; +import "../Crowdsale.sol"; + +/** + * @title CappedCrowdsale + * @dev Crowdsale with a limit for total contributions. + */ +contract CappedCrowdsale is Crowdsale { + using SafeMath for uint256; + + uint256 private _cap; + + /** + * @dev Constructor, takes maximum amount of wei accepted in the crowdsale. + * @param cap Max amount of wei to be contributed + */ + constructor (uint256 cap) public { + require(cap > 0); + _cap = cap; + } + + /** + * @return the cap of the crowdsale. + */ + function cap() public view returns (uint256) { + return _cap; + } + + /** + * @dev Checks whether the cap has been reached. + * @return Whether the cap was reached + */ + function capReached() public view returns (bool) { + return weiRaised() >= _cap; + } + + /** + * @dev Extend parent behavior requiring purchase to respect the funding cap. + * @param beneficiary Token purchaser + * @param weiAmount Amount of wei contributed + */ + function _preValidatePurchase(address beneficiary, uint256 weiAmount) internal view { + super._preValidatePurchase(beneficiary, weiAmount); + require(weiRaised().add(weiAmount) <= _cap); + } +} diff --git a/node_modules/openzeppelin-solidity/contracts/crowdsale/validation/IndividuallyCappedCrowdsale.sol b/node_modules/openzeppelin-solidity/contracts/crowdsale/validation/IndividuallyCappedCrowdsale.sol new file mode 100644 index 0000000..34bc095 --- /dev/null +++ b/node_modules/openzeppelin-solidity/contracts/crowdsale/validation/IndividuallyCappedCrowdsale.sol @@ -0,0 +1,63 @@ +pragma solidity ^0.5.0; + +import "../../math/SafeMath.sol"; +import "../Crowdsale.sol"; +import "../../access/roles/CapperRole.sol"; + +/** + * @title IndividuallyCappedCrowdsale + * @dev Crowdsale with per-beneficiary caps. + */ +contract IndividuallyCappedCrowdsale is Crowdsale, CapperRole { + using SafeMath for uint256; + + mapping(address => uint256) private _contributions; + mapping(address => uint256) private _caps; + + /** + * @dev Sets a specific beneficiary's maximum contribution. + * @param beneficiary Address to be capped + * @param cap Wei limit for individual contribution + */ + function setCap(address beneficiary, uint256 cap) external onlyCapper { + _caps[beneficiary] = cap; + } + + /** + * @dev Returns the cap of a specific beneficiary. + * @param beneficiary Address whose cap is to be checked + * @return Current cap for individual beneficiary + */ + function getCap(address beneficiary) public view returns (uint256) { + return _caps[beneficiary]; + } + + /** + * @dev Returns the amount contributed so far by a specific beneficiary. + * @param beneficiary Address of contributor + * @return Beneficiary contribution so far + */ + function getContribution(address beneficiary) public view returns (uint256) { + return _contributions[beneficiary]; + } + + /** + * @dev Extend parent behavior requiring purchase to respect the beneficiary's funding cap. + * @param beneficiary Token purchaser + * @param weiAmount Amount of wei contributed + */ + function _preValidatePurchase(address beneficiary, uint256 weiAmount) internal view { + super._preValidatePurchase(beneficiary, weiAmount); + require(_contributions[beneficiary].add(weiAmount) <= _caps[beneficiary]); + } + + /** + * @dev Extend parent behavior to update beneficiary contributions + * @param beneficiary Token purchaser + * @param weiAmount Amount of wei contributed + */ + function _updatePurchasingState(address beneficiary, uint256 weiAmount) internal { + super._updatePurchasingState(beneficiary, weiAmount); + _contributions[beneficiary] = _contributions[beneficiary].add(weiAmount); + } +} diff --git a/node_modules/openzeppelin-solidity/contracts/crowdsale/validation/PausableCrowdsale.sol b/node_modules/openzeppelin-solidity/contracts/crowdsale/validation/PausableCrowdsale.sol new file mode 100644 index 0000000..cc89aeb --- /dev/null +++ b/node_modules/openzeppelin-solidity/contracts/crowdsale/validation/PausableCrowdsale.sol @@ -0,0 +1,21 @@ +pragma solidity ^0.5.0; + +import "../Crowdsale.sol"; +import "../../lifecycle/Pausable.sol"; + +/** + * @title PausableCrowdsale + * @dev Extension of Crowdsale contract where purchases can be paused and unpaused by the pauser role. + */ +contract PausableCrowdsale is Crowdsale, Pausable { + /** + * @dev Validation of an incoming purchase. Use require statements to revert state when conditions are not met. + * Use super to concatenate validations. + * Adds the validation that the crowdsale must not be paused. + * @param _beneficiary Address performing the token purchase + * @param _weiAmount Value in wei involved in the purchase + */ + function _preValidatePurchase(address _beneficiary, uint256 _weiAmount) internal view whenNotPaused { + return super._preValidatePurchase(_beneficiary, _weiAmount); + } +} diff --git a/node_modules/openzeppelin-solidity/contracts/crowdsale/validation/TimedCrowdsale.sol b/node_modules/openzeppelin-solidity/contracts/crowdsale/validation/TimedCrowdsale.sol new file mode 100644 index 0000000..a672066 --- /dev/null +++ b/node_modules/openzeppelin-solidity/contracts/crowdsale/validation/TimedCrowdsale.sol @@ -0,0 +1,77 @@ +pragma solidity ^0.5.0; + +import "../../math/SafeMath.sol"; +import "../Crowdsale.sol"; + +/** + * @title TimedCrowdsale + * @dev Crowdsale accepting contributions only within a time frame. + */ +contract TimedCrowdsale is Crowdsale { + using SafeMath for uint256; + + uint256 private _openingTime; + uint256 private _closingTime; + + /** + * @dev Reverts if not in crowdsale time range. + */ + modifier onlyWhileOpen { + require(isOpen()); + _; + } + + /** + * @dev Constructor, takes crowdsale opening and closing times. + * @param openingTime Crowdsale opening time + * @param closingTime Crowdsale closing time + */ + constructor (uint256 openingTime, uint256 closingTime) public { + // solhint-disable-next-line not-rely-on-time + require(openingTime >= block.timestamp); + require(closingTime > openingTime); + + _openingTime = openingTime; + _closingTime = closingTime; + } + + /** + * @return the crowdsale opening time. + */ + function openingTime() public view returns (uint256) { + return _openingTime; + } + + /** + * @return the crowdsale closing time. + */ + function closingTime() public view returns (uint256) { + return _closingTime; + } + + /** + * @return true if the crowdsale is open, false otherwise. + */ + function isOpen() public view returns (bool) { + // solhint-disable-next-line not-rely-on-time + return block.timestamp >= _openingTime && block.timestamp <= _closingTime; + } + + /** + * @dev Checks whether the period in which the crowdsale is open has already elapsed. + * @return Whether crowdsale period has elapsed + */ + function hasClosed() public view returns (bool) { + // solhint-disable-next-line not-rely-on-time + return block.timestamp > _closingTime; + } + + /** + * @dev Extend parent behavior requiring to be within contributing period + * @param beneficiary Token purchaser + * @param weiAmount Amount of wei contributed + */ + function _preValidatePurchase(address beneficiary, uint256 weiAmount) internal onlyWhileOpen view { + super._preValidatePurchase(beneficiary, weiAmount); + } +} diff --git a/node_modules/openzeppelin-solidity/contracts/crowdsale/validation/WhitelistCrowdsale.sol b/node_modules/openzeppelin-solidity/contracts/crowdsale/validation/WhitelistCrowdsale.sol new file mode 100644 index 0000000..16e2878 --- /dev/null +++ b/node_modules/openzeppelin-solidity/contracts/crowdsale/validation/WhitelistCrowdsale.sol @@ -0,0 +1,21 @@ +pragma solidity ^0.5.0; +import "../Crowdsale.sol"; +import "../../access/roles/WhitelistedRole.sol"; + + +/** + * @title WhitelistCrowdsale + * @dev Crowdsale in which only whitelisted users can contribute. + */ +contract WhitelistCrowdsale is WhitelistedRole, Crowdsale { + /** + * @dev Extend parent behavior requiring beneficiary to be whitelisted. Note that no + * restriction is imposed on the account sending the transaction. + * @param _beneficiary Token beneficiary + * @param _weiAmount Amount of wei contributed + */ + function _preValidatePurchase(address _beneficiary, uint256 _weiAmount) internal view { + require(isWhitelisted(_beneficiary)); + super._preValidatePurchase(_beneficiary, _weiAmount); + } +} diff --git a/node_modules/openzeppelin-solidity/contracts/cryptography/ECDSA.sol b/node_modules/openzeppelin-solidity/contracts/cryptography/ECDSA.sol new file mode 100644 index 0000000..432a23c --- /dev/null +++ b/node_modules/openzeppelin-solidity/contracts/cryptography/ECDSA.sol @@ -0,0 +1,59 @@ +pragma solidity ^0.5.0; + +/** + * @title Elliptic curve signature operations + * @dev Based on https://gist.github.com/axic/5b33912c6f61ae6fd96d6c4a47afde6d + * TODO Remove this library once solidity supports passing a signature to ecrecover. + * See https://github.com/ethereum/solidity/issues/864 + */ + +library ECDSA { + /** + * @dev Recover signer address from a message by using their signature + * @param hash bytes32 message, the hash is the signed message. What is recovered is the signer address. + * @param signature bytes signature, the signature is generated using web3.eth.sign() + */ + function recover(bytes32 hash, bytes memory signature) internal pure returns (address) { + bytes32 r; + bytes32 s; + uint8 v; + + // Check the signature length + if (signature.length != 65) { + return (address(0)); + } + + // Divide the signature in r, s and v variables + // ecrecover takes the signature parameters, and the only way to get them + // currently is to use assembly. + // solhint-disable-next-line no-inline-assembly + assembly { + r := mload(add(signature, 0x20)) + s := mload(add(signature, 0x40)) + v := byte(0, mload(add(signature, 0x60))) + } + + // Version of signature should be 27 or 28, but 0 and 1 are also possible versions + if (v < 27) { + v += 27; + } + + // If the version is correct return the signer address + if (v != 27 && v != 28) { + return (address(0)); + } else { + return ecrecover(hash, v, r, s); + } + } + + /** + * toEthSignedMessageHash + * @dev prefix a bytes32 value with "\x19Ethereum Signed Message:" + * and hash the result + */ + function toEthSignedMessageHash(bytes32 hash) internal pure returns (bytes32) { + // 32 is the length in bytes of hash, + // enforced by the type signature above + return keccak256(abi.encodePacked("\x19Ethereum Signed Message:\n32", hash)); + } +} diff --git a/node_modules/openzeppelin-solidity/contracts/cryptography/MerkleProof.sol b/node_modules/openzeppelin-solidity/contracts/cryptography/MerkleProof.sol new file mode 100644 index 0000000..2a964c8 --- /dev/null +++ b/node_modules/openzeppelin-solidity/contracts/cryptography/MerkleProof.sol @@ -0,0 +1,34 @@ +pragma solidity ^0.5.0; + +/** + * @title MerkleProof + * @dev Merkle proof verification based on + * https://github.com/ameensol/merkle-tree-solidity/blob/master/src/MerkleProof.sol + */ +library MerkleProof { + /** + * @dev Verifies a Merkle proof proving the existence of a leaf in a Merkle tree. Assumes that each pair of leaves + * and each pair of pre-images are sorted. + * @param proof Merkle proof containing sibling hashes on the branch from the leaf to the root of the Merkle tree + * @param root Merkle root + * @param leaf Leaf of Merkle tree + */ + function verify(bytes32[] memory proof, bytes32 root, bytes32 leaf) internal pure returns (bool) { + bytes32 computedHash = leaf; + + for (uint256 i = 0; i < proof.length; i++) { + bytes32 proofElement = proof[i]; + + if (computedHash < proofElement) { + // Hash(current computed hash + current element of the proof) + computedHash = keccak256(abi.encodePacked(computedHash, proofElement)); + } else { + // Hash(current element of the proof + current computed hash) + computedHash = keccak256(abi.encodePacked(proofElement, computedHash)); + } + } + + // Check if the computed hash (root) is equal to the provided root + return computedHash == root; + } +} diff --git a/node_modules/openzeppelin-solidity/contracts/drafts/.gitkeep b/node_modules/openzeppelin-solidity/contracts/drafts/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/node_modules/openzeppelin-solidity/contracts/drafts/Counter.sol b/node_modules/openzeppelin-solidity/contracts/drafts/Counter.sol new file mode 100644 index 0000000..af8f1e4 --- /dev/null +++ b/node_modules/openzeppelin-solidity/contracts/drafts/Counter.sol @@ -0,0 +1,24 @@ +pragma solidity ^0.5.0; + +/** + * @title Counter + * @author Matt Condon (@shrugs) + * @dev Provides an incrementing uint256 id acquired by the `Counter#next` getter. + * Use this for issuing ERC721 ids or keeping track of request ids, anything you want, really. + * + * Include with `using Counter for Counter.Counter;` + * @notice Does not allow an Id of 0, which is popularly used to signify a null state in solidity. + * Does not protect from overflows, but if you have 2^256 ids, you have other problems. + * (But actually, it's generally impossible to increment a counter this many times, energy wise + * so it's not something you have to worry about.) + */ +library Counter { + struct Counter { + uint256 current; // default: 0 + } + + function next(Counter storage index) internal returns (uint256) { + index.current += 1; + return index.current; + } +} diff --git a/node_modules/openzeppelin-solidity/contracts/drafts/ERC1046/TokenMetadata.sol b/node_modules/openzeppelin-solidity/contracts/drafts/ERC1046/TokenMetadata.sol new file mode 100644 index 0000000..6b00d62 --- /dev/null +++ b/node_modules/openzeppelin-solidity/contracts/drafts/ERC1046/TokenMetadata.sol @@ -0,0 +1,24 @@ +pragma solidity ^0.5.0; + +import "../../token/ERC20/IERC20.sol"; + +/** + * @title ERC-1047 Token Metadata + * @dev See https://eips.ethereum.org/EIPS/eip-1046 + * @dev tokenURI must respond with a URI that implements https://eips.ethereum.org/EIPS/eip-1047 + */ +contract ERC20TokenMetadata is IERC20 { + function tokenURI() external view returns (string memory); +} + +contract ERC20WithMetadata is ERC20TokenMetadata { + string private _tokenURI; + + constructor (string memory tokenURI) public { + _tokenURI = tokenURI; + } + + function tokenURI() external view returns (string memory) { + return _tokenURI; + } +} diff --git a/node_modules/openzeppelin-solidity/contracts/drafts/ERC20Migrator.sol b/node_modules/openzeppelin-solidity/contracts/drafts/ERC20Migrator.sol new file mode 100644 index 0000000..ae07399 --- /dev/null +++ b/node_modules/openzeppelin-solidity/contracts/drafts/ERC20Migrator.sol @@ -0,0 +1,100 @@ +pragma solidity ^0.5.0; + +import "../token/ERC20/IERC20.sol"; +import "../token/ERC20/ERC20Mintable.sol"; +import "../token/ERC20/SafeERC20.sol"; +import "../math/Math.sol"; + +/** + * @title ERC20Migrator + * @dev This contract can be used to migrate an ERC20 token from one + * contract to another, where each token holder has to opt-in to the migration. + * To opt-in, users must approve for this contract the number of tokens they + * want to migrate. Once the allowance is set up, anyone can trigger the + * migration to the new token contract. In this way, token holders "turn in" + * their old balance and will be minted an equal amount in the new token. + * The new token contract must be mintable. For the precise interface refer to + * OpenZeppelin's ERC20Mintable, but the only functions that are needed are + * `isMinter(address)` and `mint(address, amount)`. The migrator will check + * that it is a minter for the token. + * The balance from the legacy token will be transfered to the migrator, as it + * is migrated, and remain there forever. + * Although this contract can be used in many different scenarios, the main + * motivation was to provide a way to migrate ERC20 tokens into an upgradeable + * version of it using ZeppelinOS. To read more about how this can be done + * using this implementation, please follow the official documentation site of + * ZeppelinOS: https://docs.zeppelinos.org/docs/erc20_onboarding.html + * Example of usage: + * ``` + * const migrator = await ERC20Migrator.new(legacyToken.address); + * await newToken.addMinter(migrator.address); + * await migrator.beginMigration(newToken.address); + * ``` + */ +contract ERC20Migrator { + using SafeERC20 for IERC20; + + /// Address of the old token contract + IERC20 private _legacyToken; + + /// Address of the new token contract + ERC20Mintable private _newToken; + + /** + * @param legacyToken address of the old token contract + */ + constructor (IERC20 legacyToken) public { + require(address(legacyToken) != address(0)); + _legacyToken = legacyToken; + } + + /** + * @dev Returns the legacy token that is being migrated. + */ + function legacyToken() public view returns (IERC20) { + return _legacyToken; + } + + /** + * @dev Returns the new token to which we are migrating. + */ + function newToken() public view returns (IERC20) { + return _newToken; + } + + /** + * @dev Begins the migration by setting which is the new token that will be + * minted. This contract must be a minter for the new token. + * @param newToken the token that will be minted + */ + function beginMigration(ERC20Mintable newToken) public { + require(address(_newToken) == address(0)); + require(address(newToken) != address(0)); + require(newToken.isMinter(address(this))); + + _newToken = newToken; + } + + /** + * @dev Transfers part of an account's balance in the old token to this + * contract, and mints the same amount of new tokens for that account. + * @param account whose tokens will be migrated + * @param amount amount of tokens to be migrated + */ + function migrate(address account, uint256 amount) public { + _legacyToken.safeTransferFrom(account, address(this), amount); + _newToken.mint(account, amount); + } + + /** + * @dev Transfers all of an account's allowed balance in the old token to + * this contract, and mints the same amount of new tokens for that account. + * @param account whose tokens will be migrated + */ + function migrateAll(address account) public { + uint256 balance = _legacyToken.balanceOf(account); + uint256 allowance = _legacyToken.allowance(account, address(this)); + uint256 amount = Math.min(balance, allowance); + migrate(account, amount); + } +} diff --git a/node_modules/openzeppelin-solidity/contracts/drafts/SignatureBouncer.sol b/node_modules/openzeppelin-solidity/contracts/drafts/SignatureBouncer.sol new file mode 100644 index 0000000..a5ec7f7 --- /dev/null +++ b/node_modules/openzeppelin-solidity/contracts/drafts/SignatureBouncer.sol @@ -0,0 +1,120 @@ +pragma solidity ^0.5.0; + +import "../access/roles/SignerRole.sol"; +import "../cryptography/ECDSA.sol"; + +/** + * @title SignatureBouncer + * @author PhABC, Shrugs and aflesher + * @dev SignatureBouncer allows users to submit a signature as a permission to + * do an action. + * If the signature is from one of the authorized signer addresses, the + * signature is valid. + * Note that SignatureBouncer offers no protection against replay attacks, users + * must add this themselves! + * + * Signer addresses can be individual servers signing grants or different + * users within a decentralized club that have permission to invite other + * members. This technique is useful for whitelists and airdrops; instead of + * putting all valid addresses on-chain, simply sign a grant of the form + * keccak256(abi.encodePacked(`:contractAddress` + `:granteeAddress`)) using a + * valid signer address. + * Then restrict access to your crowdsale/whitelist/airdrop using the + * `onlyValidSignature` modifier (or implement your own using _isValidSignature). + * In addition to `onlyValidSignature`, `onlyValidSignatureAndMethod` and + * `onlyValidSignatureAndData` can be used to restrict access to only a given + * method or a given method with given parameters respectively. + * See the tests in SignatureBouncer.test.js for specific usage examples. + * + * @notice A method that uses the `onlyValidSignatureAndData` modifier must make + * the _signature parameter the "last" parameter. You cannot sign a message that + * has its own signature in it so the last 128 bytes of msg.data (which + * represents the length of the _signature data and the _signaature data itself) + * is ignored when validating. Also non fixed sized parameters make constructing + * the data in the signature much more complex. + * See https://ethereum.stackexchange.com/a/50616 for more details. + */ +contract SignatureBouncer is SignerRole { + using ECDSA for bytes32; + + // Function selectors are 4 bytes long, as documented in + // https://solidity.readthedocs.io/en/v0.4.24/abi-spec.html#function-selector + uint256 private constant _METHOD_ID_SIZE = 4; + // Signature size is 65 bytes (tightly packed v + r + s), but gets padded to 96 bytes + uint256 private constant _SIGNATURE_SIZE = 96; + + constructor () internal { + // solhint-disable-previous-line no-empty-blocks + } + + /** + * @dev requires that a valid signature of a signer was provided + */ + modifier onlyValidSignature(bytes memory signature) { + require(_isValidSignature(msg.sender, signature)); + _; + } + + /** + * @dev requires that a valid signature with a specifed method of a signer was provided + */ + modifier onlyValidSignatureAndMethod(bytes memory signature) { + require(_isValidSignatureAndMethod(msg.sender, signature)); + _; + } + + /** + * @dev requires that a valid signature with a specifed method and params of a signer was provided + */ + modifier onlyValidSignatureAndData(bytes memory signature) { + require(_isValidSignatureAndData(msg.sender, signature)); + _; + } + + /** + * @dev is the signature of `this + sender` from a signer? + * @return bool + */ + function _isValidSignature(address account, bytes memory signature) internal view returns (bool) { + return _isValidDataHash(keccak256(abi.encodePacked(address(this), account)), signature); + } + + /** + * @dev is the signature of `this + sender + methodId` from a signer? + * @return bool + */ + function _isValidSignatureAndMethod(address account, bytes memory signature) internal view returns (bool) { + bytes memory data = new bytes(_METHOD_ID_SIZE); + for (uint i = 0; i < data.length; i++) { + data[i] = msg.data[i]; + } + return _isValidDataHash(keccak256(abi.encodePacked(address(this), account, data)), signature); + } + + /** + * @dev is the signature of `this + sender + methodId + params(s)` from a signer? + * @notice the signature parameter of the method being validated must be the "last" parameter + * @return bool + */ + function _isValidSignatureAndData(address account, bytes memory signature) internal view returns (bool) { + require(msg.data.length > _SIGNATURE_SIZE); + + bytes memory data = new bytes(msg.data.length - _SIGNATURE_SIZE); + for (uint i = 0; i < data.length; i++) { + data[i] = msg.data[i]; + } + + return _isValidDataHash(keccak256(abi.encodePacked(address(this), account, data)), signature); + } + + /** + * @dev internal function to convert a hash to an eth signed message + * and then recover the signature and check it against the signer role + * @return bool + */ + function _isValidDataHash(bytes32 hash, bytes memory signature) internal view returns (bool) { + address signer = hash.toEthSignedMessageHash().recover(signature); + + return signer != address(0) && isSigner(signer); + } +} diff --git a/node_modules/openzeppelin-solidity/contracts/drafts/SignedSafeMath.sol b/node_modules/openzeppelin-solidity/contracts/drafts/SignedSafeMath.sol new file mode 100644 index 0000000..4e6ab0a --- /dev/null +++ b/node_modules/openzeppelin-solidity/contracts/drafts/SignedSafeMath.sol @@ -0,0 +1,60 @@ +pragma solidity ^0.5.0; + +/** + * @title SignedSafeMath + * @dev Signed math operations with safety checks that revert on error + */ +library SignedSafeMath { + int256 constant private INT256_MIN = -2**255; + + /** + * @dev Multiplies two signed integers, reverts on overflow. + */ + function mul(int256 a, int256 b) internal pure returns (int256) { + // Gas optimization: this is cheaper than requiring 'a' not being zero, but the + // benefit is lost if 'b' is also tested. + // See: https://github.com/OpenZeppelin/openzeppelin-solidity/pull/522 + if (a == 0) { + return 0; + } + + require(!(a == -1 && b == INT256_MIN)); // This is the only case of overflow not detected by the check below + + int256 c = a * b; + require(c / a == b); + + return c; + } + + /** + * @dev Integer division of two signed integers truncating the quotient, reverts on division by zero. + */ + function div(int256 a, int256 b) internal pure returns (int256) { + require(b != 0); // Solidity only automatically asserts when dividing by 0 + require(!(b == -1 && a == INT256_MIN)); // This is the only case of overflow + + int256 c = a / b; + + return c; + } + + /** + * @dev Subtracts two signed integers, reverts on overflow. + */ + function sub(int256 a, int256 b) internal pure returns (int256) { + int256 c = a - b; + require((b >= 0 && c <= a) || (b < 0 && c > a)); + + return c; + } + + /** + * @dev Adds two signed integers, reverts on overflow. + */ + function add(int256 a, int256 b) internal pure returns (int256) { + int256 c = a + b; + require((b >= 0 && c >= a) || (b < 0 && c < a)); + + return c; + } +} diff --git a/node_modules/openzeppelin-solidity/contracts/drafts/TokenVesting.sol b/node_modules/openzeppelin-solidity/contracts/drafts/TokenVesting.sol new file mode 100644 index 0000000..3b42df8 --- /dev/null +++ b/node_modules/openzeppelin-solidity/contracts/drafts/TokenVesting.sol @@ -0,0 +1,172 @@ +pragma solidity ^0.5.0; + +import "../token/ERC20/SafeERC20.sol"; +import "../ownership/Ownable.sol"; +import "../math/SafeMath.sol"; + +/** + * @title TokenVesting + * @dev A token holder contract that can release its token balance gradually like a + * typical vesting scheme, with a cliff and vesting period. Optionally revocable by the + * owner. + */ +contract TokenVesting is Ownable { + // The vesting schedule is time-based (i.e. using block timestamps as opposed to e.g. block numbers), and is + // therefore sensitive to timestamp manipulation (which is something miners can do, to a certain degree). Therefore, + // it is recommended to avoid using short time durations (less than a minute). Typical vesting schemes, with a cliff + // period of a year and a duration of four years, are safe to use. + // solhint-disable not-rely-on-time + + using SafeMath for uint256; + using SafeERC20 for IERC20; + + event TokensReleased(address token, uint256 amount); + event TokenVestingRevoked(address token); + + // beneficiary of tokens after they are released + address private _beneficiary; + + // Durations and timestamps are expressed in UNIX time, the same units as block.timestamp. + uint256 private _cliff; + uint256 private _start; + uint256 private _duration; + + bool private _revocable; + + mapping (address => uint256) private _released; + mapping (address => bool) private _revoked; + + /** + * @dev Creates a vesting contract that vests its balance of any ERC20 token to the + * beneficiary, gradually in a linear fashion until start + duration. By then all + * of the balance will have vested. + * @param beneficiary address of the beneficiary to whom vested tokens are transferred + * @param cliffDuration duration in seconds of the cliff in which tokens will begin to vest + * @param start the time (as Unix time) at which point vesting starts + * @param duration duration in seconds of the period in which the tokens will vest + * @param revocable whether the vesting is revocable or not + */ + constructor (address beneficiary, uint256 start, uint256 cliffDuration, uint256 duration, bool revocable) public { + require(beneficiary != address(0)); + require(cliffDuration <= duration); + require(duration > 0); + require(start.add(duration) > block.timestamp); + + _beneficiary = beneficiary; + _revocable = revocable; + _duration = duration; + _cliff = start.add(cliffDuration); + _start = start; + } + + /** + * @return the beneficiary of the tokens. + */ + function beneficiary() public view returns (address) { + return _beneficiary; + } + + /** + * @return the cliff time of the token vesting. + */ + function cliff() public view returns (uint256) { + return _cliff; + } + + /** + * @return the start time of the token vesting. + */ + function start() public view returns (uint256) { + return _start; + } + + /** + * @return the duration of the token vesting. + */ + function duration() public view returns (uint256) { + return _duration; + } + + /** + * @return true if the vesting is revocable. + */ + function revocable() public view returns (bool) { + return _revocable; + } + + /** + * @return the amount of the token released. + */ + function released(address token) public view returns (uint256) { + return _released[token]; + } + + /** + * @return true if the token is revoked. + */ + function revoked(address token) public view returns (bool) { + return _revoked[token]; + } + + /** + * @notice Transfers vested tokens to beneficiary. + * @param token ERC20 token which is being vested + */ + function release(IERC20 token) public { + uint256 unreleased = _releasableAmount(token); + + require(unreleased > 0); + + _released[address(token)] = _released[address(token)].add(unreleased); + + token.safeTransfer(_beneficiary, unreleased); + + emit TokensReleased(address(token), unreleased); + } + + /** + * @notice Allows the owner to revoke the vesting. Tokens already vested + * remain in the contract, the rest are returned to the owner. + * @param token ERC20 token which is being vested + */ + function revoke(IERC20 token) public onlyOwner { + require(_revocable); + require(!_revoked[address(token)]); + + uint256 balance = token.balanceOf(address(this)); + + uint256 unreleased = _releasableAmount(token); + uint256 refund = balance.sub(unreleased); + + _revoked[address(token)] = true; + + token.safeTransfer(owner(), refund); + + emit TokenVestingRevoked(address(token)); + } + + /** + * @dev Calculates the amount that has already vested but hasn't been released yet. + * @param token ERC20 token which is being vested + */ + function _releasableAmount(IERC20 token) private view returns (uint256) { + return _vestedAmount(token).sub(_released[address(token)]); + } + + /** + * @dev Calculates the amount that has already vested. + * @param token ERC20 token which is being vested + */ + function _vestedAmount(IERC20 token) private view returns (uint256) { + uint256 currentBalance = token.balanceOf(address(this)); + uint256 totalBalance = currentBalance.add(_released[address(token)]); + + if (block.timestamp < _cliff) { + return 0; + } else if (block.timestamp >= _start.add(_duration) || _revoked[address(token)]) { + return totalBalance; + } else { + return totalBalance.mul(block.timestamp.sub(_start)).div(_duration); + } + } +} diff --git a/node_modules/openzeppelin-solidity/contracts/introspection/ERC165.sol b/node_modules/openzeppelin-solidity/contracts/introspection/ERC165.sol new file mode 100644 index 0000000..9b57ba2 --- /dev/null +++ b/node_modules/openzeppelin-solidity/contracts/introspection/ERC165.sol @@ -0,0 +1,44 @@ +pragma solidity ^0.5.0; + +import "./IERC165.sol"; + +/** + * @title ERC165 + * @author Matt Condon (@shrugs) + * @dev Implements ERC165 using a lookup table. + */ +contract ERC165 is IERC165 { + bytes4 private constant _INTERFACE_ID_ERC165 = 0x01ffc9a7; + /** + * 0x01ffc9a7 === + * bytes4(keccak256('supportsInterface(bytes4)')) + */ + + /** + * @dev a mapping of interface id to whether or not it's supported + */ + mapping(bytes4 => bool) private _supportedInterfaces; + + /** + * @dev A contract implementing SupportsInterfaceWithLookup + * implement ERC165 itself + */ + constructor () internal { + _registerInterface(_INTERFACE_ID_ERC165); + } + + /** + * @dev implement supportsInterface(bytes4) using a lookup table + */ + function supportsInterface(bytes4 interfaceId) external view returns (bool) { + return _supportedInterfaces[interfaceId]; + } + + /** + * @dev internal method for registering an interface + */ + function _registerInterface(bytes4 interfaceId) internal { + require(interfaceId != 0xffffffff); + _supportedInterfaces[interfaceId] = true; + } +} diff --git a/node_modules/openzeppelin-solidity/contracts/introspection/ERC165Checker.sol b/node_modules/openzeppelin-solidity/contracts/introspection/ERC165Checker.sol new file mode 100644 index 0000000..f6034d4 --- /dev/null +++ b/node_modules/openzeppelin-solidity/contracts/introspection/ERC165Checker.sol @@ -0,0 +1,123 @@ +pragma solidity ^0.5.0; + +/** + * @title ERC165Checker + * @dev Use `using ERC165Checker for address`; to include this library + * https://github.com/ethereum/EIPs/blob/master/EIPS/eip-165.md + */ +library ERC165Checker { + // As per the EIP-165 spec, no interface should ever match 0xffffffff + bytes4 private constant _INTERFACE_ID_INVALID = 0xffffffff; + + bytes4 private constant _INTERFACE_ID_ERC165 = 0x01ffc9a7; + /** + * 0x01ffc9a7 === + * bytes4(keccak256('supportsInterface(bytes4)')) + */ + + /** + * @notice Query if a contract supports ERC165 + * @param account The address of the contract to query for support of ERC165 + * @return true if the contract at account implements ERC165 + */ + function _supportsERC165(address account) internal view returns (bool) { + // Any contract that implements ERC165 must explicitly indicate support of + // InterfaceId_ERC165 and explicitly indicate non-support of InterfaceId_Invalid + return _supportsERC165Interface(account, _INTERFACE_ID_ERC165) && + !_supportsERC165Interface(account, _INTERFACE_ID_INVALID); + } + + /** + * @notice Query if a contract implements an interface, also checks support of ERC165 + * @param account The address of the contract to query for support of an interface + * @param interfaceId The interface identifier, as specified in ERC-165 + * @return true if the contract at account indicates support of the interface with + * identifier interfaceId, false otherwise + * @dev Interface identification is specified in ERC-165. + */ + function _supportsInterface(address account, bytes4 interfaceId) internal view returns (bool) { + // query support of both ERC165 as per the spec and support of _interfaceId + return _supportsERC165(account) && + _supportsERC165Interface(account, interfaceId); + } + + /** + * @notice Query if a contract implements interfaces, also checks support of ERC165 + * @param account The address of the contract to query for support of an interface + * @param interfaceIds A list of interface identifiers, as specified in ERC-165 + * @return true if the contract at account indicates support all interfaces in the + * interfaceIds list, false otherwise + * @dev Interface identification is specified in ERC-165. + */ + function _supportsAllInterfaces(address account, bytes4[] memory interfaceIds) internal view returns (bool) { + // query support of ERC165 itself + if (!_supportsERC165(account)) { + return false; + } + + // query support of each interface in _interfaceIds + for (uint256 i = 0; i < interfaceIds.length; i++) { + if (!_supportsERC165Interface(account, interfaceIds[i])) { + return false; + } + } + + // all interfaces supported + return true; + } + + /** + * @notice Query if a contract implements an interface, does not check ERC165 support + * @param account The address of the contract to query for support of an interface + * @param interfaceId The interface identifier, as specified in ERC-165 + * @return true if the contract at account indicates support of the interface with + * identifier interfaceId, false otherwise + * @dev Assumes that account contains a contract that supports ERC165, otherwise + * the behavior of this method is undefined. This precondition can be checked + * with the `supportsERC165` method in this library. + * Interface identification is specified in ERC-165. + */ + function _supportsERC165Interface(address account, bytes4 interfaceId) private view returns (bool) { + // success determines whether the staticcall succeeded and result determines + // whether the contract at account indicates support of _interfaceId + (bool success, bool result) = _callERC165SupportsInterface(account, interfaceId); + + return (success && result); + } + + /** + * @notice Calls the function with selector 0x01ffc9a7 (ERC165) and suppresses throw + * @param account The address of the contract to query for support of an interface + * @param interfaceId The interface identifier, as specified in ERC-165 + * @return success true if the STATICCALL succeeded, false otherwise + * @return result true if the STATICCALL succeeded and the contract at account + * indicates support of the interface with identifier interfaceId, false otherwise + */ + function _callERC165SupportsInterface(address account, bytes4 interfaceId) + private + view + returns (bool success, bool result) + { + bytes memory encodedParams = abi.encodeWithSelector(_INTERFACE_ID_ERC165, interfaceId); + + // solhint-disable-next-line no-inline-assembly + assembly { + let encodedParams_data := add(0x20, encodedParams) + let encodedParams_size := mload(encodedParams) + + let output := mload(0x40) // Find empty storage location using "free memory pointer" + mstore(output, 0x0) + + success := staticcall( + 30000, // 30k gas + account, // To addr + encodedParams_data, + encodedParams_size, + output, + 0x20 // Outputs are 32 bytes long + ) + + result := mload(output) // Load the result + } + } +} diff --git a/node_modules/openzeppelin-solidity/contracts/introspection/IERC165.sol b/node_modules/openzeppelin-solidity/contracts/introspection/IERC165.sol new file mode 100644 index 0000000..393e6fb --- /dev/null +++ b/node_modules/openzeppelin-solidity/contracts/introspection/IERC165.sol @@ -0,0 +1,15 @@ +pragma solidity ^0.5.0; + +/** + * @title IERC165 + * @dev https://github.com/ethereum/EIPs/blob/master/EIPS/eip-165.md + */ +interface IERC165 { + /** + * @notice Query if a contract implements an interface + * @param interfaceId The interface identifier, as specified in ERC-165 + * @dev Interface identification is specified in ERC-165. This function + * uses less than 30,000 gas. + */ + function supportsInterface(bytes4 interfaceId) external view returns (bool); +} diff --git a/node_modules/openzeppelin-solidity/contracts/lifecycle/Pausable.sol b/node_modules/openzeppelin-solidity/contracts/lifecycle/Pausable.sol new file mode 100644 index 0000000..9c72989 --- /dev/null +++ b/node_modules/openzeppelin-solidity/contracts/lifecycle/Pausable.sol @@ -0,0 +1,57 @@ +pragma solidity ^0.5.0; + +import "../access/roles/PauserRole.sol"; + +/** + * @title Pausable + * @dev Base contract which allows children to implement an emergency stop mechanism. + */ +contract Pausable is PauserRole { + event Paused(address account); + event Unpaused(address account); + + bool private _paused; + + constructor () internal { + _paused = false; + } + + /** + * @return true if the contract is paused, false otherwise. + */ + function paused() public view returns (bool) { + return _paused; + } + + /** + * @dev Modifier to make a function callable only when the contract is not paused. + */ + modifier whenNotPaused() { + require(!_paused); + _; + } + + /** + * @dev Modifier to make a function callable only when the contract is paused. + */ + modifier whenPaused() { + require(_paused); + _; + } + + /** + * @dev called by the owner to pause, triggers stopped state + */ + function pause() public onlyPauser whenNotPaused { + _paused = true; + emit Paused(msg.sender); + } + + /** + * @dev called by the owner to unpause, returns to normal state + */ + function unpause() public onlyPauser whenPaused { + _paused = false; + emit Unpaused(msg.sender); + } +} diff --git a/node_modules/openzeppelin-solidity/contracts/math/Math.sol b/node_modules/openzeppelin-solidity/contracts/math/Math.sol new file mode 100644 index 0000000..1cdc075 --- /dev/null +++ b/node_modules/openzeppelin-solidity/contracts/math/Math.sol @@ -0,0 +1,31 @@ +pragma solidity ^0.5.0; + +/** + * @title Math + * @dev Assorted math operations + */ +library Math { + /** + * @dev Returns the largest of two numbers. + */ + function max(uint256 a, uint256 b) internal pure returns (uint256) { + return a >= b ? a : b; + } + + /** + * @dev Returns the smallest of two numbers. + */ + function min(uint256 a, uint256 b) internal pure returns (uint256) { + return a < b ? a : b; + } + + /** + * @dev Calculates the average of two numbers. Since these are integers, + * averages of an even and odd number cannot be represented, and will be + * rounded down. + */ + function average(uint256 a, uint256 b) internal pure returns (uint256) { + // (a + b) / 2 can overflow, so we distribute + return (a / 2) + (b / 2) + ((a % 2 + b % 2) / 2); + } +} diff --git a/node_modules/openzeppelin-solidity/contracts/math/SafeMath.sol b/node_modules/openzeppelin-solidity/contracts/math/SafeMath.sol new file mode 100644 index 0000000..54ab43a --- /dev/null +++ b/node_modules/openzeppelin-solidity/contracts/math/SafeMath.sol @@ -0,0 +1,65 @@ +pragma solidity ^0.5.0; + +/** + * @title SafeMath + * @dev Unsigned math operations with safety checks that revert on error + */ +library SafeMath { + /** + * @dev Multiplies two unsigned integers, reverts on overflow. + */ + function mul(uint256 a, uint256 b) internal pure returns (uint256) { + // Gas optimization: this is cheaper than requiring 'a' not being zero, but the + // benefit is lost if 'b' is also tested. + // See: https://github.com/OpenZeppelin/openzeppelin-solidity/pull/522 + if (a == 0) { + return 0; + } + + uint256 c = a * b; + require(c / a == b); + + return c; + } + + /** + * @dev Integer division of two unsigned integers truncating the quotient, reverts on division by zero. + */ + function div(uint256 a, uint256 b) internal pure returns (uint256) { + // Solidity only automatically asserts when dividing by 0 + require(b > 0); + uint256 c = a / b; + // assert(a == b * c + a % b); // There is no case in which this doesn't hold + + return c; + } + + /** + * @dev Subtracts two unsigned integers, reverts on overflow (i.e. if subtrahend is greater than minuend). + */ + function sub(uint256 a, uint256 b) internal pure returns (uint256) { + require(b <= a); + uint256 c = a - b; + + return c; + } + + /** + * @dev Adds two unsigned integers, reverts on overflow. + */ + function add(uint256 a, uint256 b) internal pure returns (uint256) { + uint256 c = a + b; + require(c >= a); + + return c; + } + + /** + * @dev Divides two unsigned integers and returns the remainder (unsigned integer modulo), + * reverts when dividing by zero. + */ + function mod(uint256 a, uint256 b) internal pure returns (uint256) { + require(b != 0); + return a % b; + } +} diff --git a/node_modules/openzeppelin-solidity/contracts/ownership/Ownable.sol b/node_modules/openzeppelin-solidity/contracts/ownership/Ownable.sol new file mode 100644 index 0000000..4d3558f --- /dev/null +++ b/node_modules/openzeppelin-solidity/contracts/ownership/Ownable.sol @@ -0,0 +1,72 @@ +pragma solidity ^0.5.0; + +/** + * @title Ownable + * @dev The Ownable contract has an owner address, and provides basic authorization control + * functions, this simplifies the implementation of "user permissions". + */ +contract Ownable { + address private _owner; + + event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); + + /** + * @dev The Ownable constructor sets the original `owner` of the contract to the sender + * account. + */ + constructor () internal { + _owner = msg.sender; + emit OwnershipTransferred(address(0), _owner); + } + + /** + * @return the address of the owner. + */ + function owner() public view returns (address) { + return _owner; + } + + /** + * @dev Throws if called by any account other than the owner. + */ + modifier onlyOwner() { + require(isOwner()); + _; + } + + /** + * @return true if `msg.sender` is the owner of the contract. + */ + function isOwner() public view returns (bool) { + return msg.sender == _owner; + } + + /** + * @dev Allows the current owner to relinquish control of the contract. + * @notice Renouncing to ownership will leave the contract without an owner. + * It will not be possible to call the functions with the `onlyOwner` + * modifier anymore. + */ + function renounceOwnership() public onlyOwner { + emit OwnershipTransferred(_owner, address(0)); + _owner = address(0); + } + + /** + * @dev Allows the current owner to transfer control of the contract to a newOwner. + * @param newOwner The address to transfer ownership to. + */ + function transferOwnership(address newOwner) public onlyOwner { + _transferOwnership(newOwner); + } + + /** + * @dev Transfers control of the contract to a newOwner. + * @param newOwner The address to transfer ownership to. + */ + function _transferOwnership(address newOwner) internal { + require(newOwner != address(0)); + emit OwnershipTransferred(_owner, newOwner); + _owner = newOwner; + } +} diff --git a/node_modules/openzeppelin-solidity/contracts/ownership/Secondary.sol b/node_modules/openzeppelin-solidity/contracts/ownership/Secondary.sol new file mode 100644 index 0000000..3ca57e4 --- /dev/null +++ b/node_modules/openzeppelin-solidity/contracts/ownership/Secondary.sol @@ -0,0 +1,46 @@ +pragma solidity ^0.5.0; + +/** + * @title Secondary + * @dev A Secondary contract can only be used by its primary account (the one that created it) + */ +contract Secondary { + address private _primary; + + event PrimaryTransferred( + address recipient + ); + + /** + * @dev Sets the primary account to the one that is creating the Secondary contract. + */ + constructor () internal { + _primary = msg.sender; + emit PrimaryTransferred(_primary); + } + + /** + * @dev Reverts if called from any account other than the primary. + */ + modifier onlyPrimary() { + require(msg.sender == _primary); + _; + } + + /** + * @return the address of the primary. + */ + function primary() public view returns (address) { + return _primary; + } + + /** + * @dev Transfers contract to a new primary. + * @param recipient The address of new primary. + */ + function transferPrimary(address recipient) public onlyPrimary { + require(recipient != address(0)); + _primary = recipient; + emit PrimaryTransferred(_primary); + } +} diff --git a/node_modules/openzeppelin-solidity/contracts/payment/PaymentSplitter.sol b/node_modules/openzeppelin-solidity/contracts/payment/PaymentSplitter.sol new file mode 100644 index 0000000..280e4b9 --- /dev/null +++ b/node_modules/openzeppelin-solidity/contracts/payment/PaymentSplitter.sol @@ -0,0 +1,112 @@ +pragma solidity ^0.5.0; + +import "../math/SafeMath.sol"; + +/** + * @title PaymentSplitter + * @dev This contract can be used when payments need to be received by a group + * of people and split proportionately to some number of shares they own. + */ +contract PaymentSplitter { + using SafeMath for uint256; + + event PayeeAdded(address account, uint256 shares); + event PaymentReleased(address to, uint256 amount); + event PaymentReceived(address from, uint256 amount); + + uint256 private _totalShares; + uint256 private _totalReleased; + + mapping(address => uint256) private _shares; + mapping(address => uint256) private _released; + address[] private _payees; + + /** + * @dev Constructor + */ + constructor (address[] memory payees, uint256[] memory shares) public payable { + require(payees.length == shares.length); + require(payees.length > 0); + + for (uint256 i = 0; i < payees.length; i++) { + _addPayee(payees[i], shares[i]); + } + } + + /** + * @dev payable fallback + */ + function () external payable { + emit PaymentReceived(msg.sender, msg.value); + } + + /** + * @return the total shares of the contract. + */ + function totalShares() public view returns (uint256) { + return _totalShares; + } + + /** + * @return the total amount already released. + */ + function totalReleased() public view returns (uint256) { + return _totalReleased; + } + + /** + * @return the shares of an account. + */ + function shares(address account) public view returns (uint256) { + return _shares[account]; + } + + /** + * @return the amount already released to an account. + */ + function released(address account) public view returns (uint256) { + return _released[account]; + } + + /** + * @return the address of a payee. + */ + function payee(uint256 index) public view returns (address) { + return _payees[index]; + } + + /** + * @dev Release one of the payee's proportional payment. + * @param account Whose payments will be released. + */ + function release(address payable account) public { + require(_shares[account] > 0); + + uint256 totalReceived = address(this).balance.add(_totalReleased); + uint256 payment = totalReceived.mul(_shares[account]).div(_totalShares).sub(_released[account]); + + require(payment != 0); + + _released[account] = _released[account].add(payment); + _totalReleased = _totalReleased.add(payment); + + account.transfer(payment); + emit PaymentReleased(account, payment); + } + + /** + * @dev Add a new payee to the contract. + * @param account The address of the payee to add. + * @param shares_ The number of shares owned by the payee. + */ + function _addPayee(address account, uint256 shares_) private { + require(account != address(0)); + require(shares_ > 0); + require(_shares[account] == 0); + + _payees.push(account); + _shares[account] = shares_; + _totalShares = _totalShares.add(shares_); + emit PayeeAdded(account, shares_); + } +} diff --git a/node_modules/openzeppelin-solidity/contracts/payment/PullPayment.sol b/node_modules/openzeppelin-solidity/contracts/payment/PullPayment.sol new file mode 100644 index 0000000..ad961e4 --- /dev/null +++ b/node_modules/openzeppelin-solidity/contracts/payment/PullPayment.sol @@ -0,0 +1,41 @@ +pragma solidity ^0.5.0; + +import "./escrow/Escrow.sol"; + +/** + * @title PullPayment + * @dev Base contract supporting async send for pull payments. Inherit from this + * contract and use _asyncTransfer instead of send or transfer. + */ +contract PullPayment { + Escrow private _escrow; + + constructor () internal { + _escrow = new Escrow(); + } + + /** + * @dev Withdraw accumulated balance. + * @param payee Whose balance will be withdrawn. + */ + function withdrawPayments(address payable payee) public { + _escrow.withdraw(payee); + } + + /** + * @dev Returns the credit owed to an address. + * @param dest The creditor's address. + */ + function payments(address dest) public view returns (uint256) { + return _escrow.depositsOf(dest); + } + + /** + * @dev Called by the payer to store the sent amount as credit to be pulled. + * @param dest The destination address of the funds. + * @param amount The amount to transfer. + */ + function _asyncTransfer(address dest, uint256 amount) internal { + _escrow.deposit.value(amount)(dest); + } +} diff --git a/node_modules/openzeppelin-solidity/contracts/payment/escrow/ConditionalEscrow.sol b/node_modules/openzeppelin-solidity/contracts/payment/escrow/ConditionalEscrow.sol new file mode 100644 index 0000000..268d731 --- /dev/null +++ b/node_modules/openzeppelin-solidity/contracts/payment/escrow/ConditionalEscrow.sol @@ -0,0 +1,22 @@ +pragma solidity ^0.5.0; + +import "./Escrow.sol"; + +/** + * @title ConditionalEscrow + * @dev Base abstract escrow to only allow withdrawal if a condition is met. + * @dev Intended usage: See Escrow.sol. Same usage guidelines apply here. + */ +contract ConditionalEscrow is Escrow { + /** + * @dev Returns whether an address is allowed to withdraw their funds. To be + * implemented by derived contracts. + * @param payee The destination address of the funds. + */ + function withdrawalAllowed(address payee) public view returns (bool); + + function withdraw(address payable payee) public { + require(withdrawalAllowed(payee)); + super.withdraw(payee); + } +} diff --git a/node_modules/openzeppelin-solidity/contracts/payment/escrow/Escrow.sol b/node_modules/openzeppelin-solidity/contracts/payment/escrow/Escrow.sol new file mode 100644 index 0000000..c010add --- /dev/null +++ b/node_modules/openzeppelin-solidity/contracts/payment/escrow/Escrow.sol @@ -0,0 +1,54 @@ +pragma solidity ^0.5.0; + +import "../../math/SafeMath.sol"; +import "../../ownership/Secondary.sol"; + + /** + * @title Escrow + * @dev Base escrow contract, holds funds designated for a payee until they + * withdraw them. + * @dev Intended usage: This contract (and derived escrow contracts) should be a + * standalone contract, that only interacts with the contract that instantiated + * it. That way, it is guaranteed that all Ether will be handled according to + * the Escrow rules, and there is no need to check for payable functions or + * transfers in the inheritance tree. The contract that uses the escrow as its + * payment method should be its primary, and provide public methods redirecting + * to the escrow's deposit and withdraw. + */ +contract Escrow is Secondary { + using SafeMath for uint256; + + event Deposited(address indexed payee, uint256 weiAmount); + event Withdrawn(address indexed payee, uint256 weiAmount); + + mapping(address => uint256) private _deposits; + + function depositsOf(address payee) public view returns (uint256) { + return _deposits[payee]; + } + + /** + * @dev Stores the sent amount as credit to be withdrawn. + * @param payee The destination address of the funds. + */ + function deposit(address payee) public onlyPrimary payable { + uint256 amount = msg.value; + _deposits[payee] = _deposits[payee].add(amount); + + emit Deposited(payee, amount); + } + + /** + * @dev Withdraw accumulated balance for a payee. + * @param payee The address whose funds will be withdrawn and transferred to. + */ + function withdraw(address payable payee) public onlyPrimary { + uint256 payment = _deposits[payee]; + + _deposits[payee] = 0; + + payee.transfer(payment); + + emit Withdrawn(payee, payment); + } +} diff --git a/node_modules/openzeppelin-solidity/contracts/payment/escrow/RefundEscrow.sol b/node_modules/openzeppelin-solidity/contracts/payment/escrow/RefundEscrow.sol new file mode 100644 index 0000000..0c9cd99 --- /dev/null +++ b/node_modules/openzeppelin-solidity/contracts/payment/escrow/RefundEscrow.sol @@ -0,0 +1,92 @@ +pragma solidity ^0.5.0; + +import "./ConditionalEscrow.sol"; + +/** + * @title RefundEscrow + * @dev Escrow that holds funds for a beneficiary, deposited from multiple + * parties. + * @dev Intended usage: See Escrow.sol. Same usage guidelines apply here. + * @dev The primary account (that is, the contract that instantiates this + * contract) may deposit, close the deposit period, and allow for either + * withdrawal by the beneficiary, or refunds to the depositors. All interactions + * with RefundEscrow will be made through the primary contract. See the + * RefundableCrowdsale contract for an example of RefundEscrow’s use. + */ +contract RefundEscrow is ConditionalEscrow { + enum State { Active, Refunding, Closed } + + event RefundsClosed(); + event RefundsEnabled(); + + State private _state; + address payable private _beneficiary; + + /** + * @dev Constructor. + * @param beneficiary The beneficiary of the deposits. + */ + constructor (address payable beneficiary) public { + require(beneficiary != address(0)); + _beneficiary = beneficiary; + _state = State.Active; + } + + /** + * @return the current state of the escrow. + */ + function state() public view returns (State) { + return _state; + } + + /** + * @return the beneficiary of the escrow. + */ + function beneficiary() public view returns (address) { + return _beneficiary; + } + + /** + * @dev Stores funds that may later be refunded. + * @param refundee The address funds will be sent to if a refund occurs. + */ + function deposit(address refundee) public payable { + require(_state == State.Active); + super.deposit(refundee); + } + + /** + * @dev Allows for the beneficiary to withdraw their funds, rejecting + * further deposits. + */ + function close() public onlyPrimary { + require(_state == State.Active); + _state = State.Closed; + emit RefundsClosed(); + } + + /** + * @dev Allows for refunds to take place, rejecting further deposits. + */ + function enableRefunds() public onlyPrimary { + require(_state == State.Active); + _state = State.Refunding; + emit RefundsEnabled(); + } + + /** + * @dev Withdraws the beneficiary's funds. + */ + function beneficiaryWithdraw() public { + require(_state == State.Closed); + _beneficiary.transfer(address(this).balance); + } + + /** + * @dev Returns whether refundees can withdraw their deposits (be refunded). The overriden function receives a + * 'payee' argument, but we ignore it here since the condition is global, not per-payee. + */ + function withdrawalAllowed(address) public view returns (bool) { + return _state == State.Refunding; + } +} diff --git a/node_modules/openzeppelin-solidity/contracts/token/ERC20/ERC20.sol b/node_modules/openzeppelin-solidity/contracts/token/ERC20/ERC20.sol new file mode 100644 index 0000000..30f9642 --- /dev/null +++ b/node_modules/openzeppelin-solidity/contracts/token/ERC20/ERC20.sol @@ -0,0 +1,187 @@ +pragma solidity ^0.5.0; + +import "./IERC20.sol"; +import "../../math/SafeMath.sol"; + +/** + * @title Standard ERC20 token + * + * @dev Implementation of the basic standard token. + * https://github.com/ethereum/EIPs/blob/master/EIPS/eip-20.md + * Originally based on code by FirstBlood: + * https://github.com/Firstbloodio/token/blob/master/smart_contract/FirstBloodToken.sol + * + * This implementation emits additional Approval events, allowing applications to reconstruct the allowance status for + * all accounts just by listening to said events. Note that this isn't required by the specification, and other + * compliant implementations may not do it. + */ +contract ERC20 is IERC20 { + using SafeMath for uint256; + + mapping (address => uint256) private _balances; + + mapping (address => mapping (address => uint256)) private _allowed; + + uint256 private _totalSupply; + + /** + * @dev Total number of tokens in existence + */ + function totalSupply() public view returns (uint256) { + return _totalSupply; + } + + /** + * @dev Gets the balance of the specified address. + * @param owner The address to query the balance of. + * @return An uint256 representing the amount owned by the passed address. + */ + function balanceOf(address owner) public view returns (uint256) { + return _balances[owner]; + } + + /** + * @dev Function to check the amount of tokens that an owner allowed to a spender. + * @param owner address The address which owns the funds. + * @param spender address The address which will spend the funds. + * @return A uint256 specifying the amount of tokens still available for the spender. + */ + function allowance(address owner, address spender) public view returns (uint256) { + return _allowed[owner][spender]; + } + + /** + * @dev Transfer token for a specified address + * @param to The address to transfer to. + * @param value The amount to be transferred. + */ + function transfer(address to, uint256 value) public returns (bool) { + _transfer(msg.sender, to, value); + return true; + } + + /** + * @dev Approve the passed address to spend the specified amount of tokens on behalf of msg.sender. + * Beware that changing an allowance with this method brings the risk that someone may use both the old + * and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this + * race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: + * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 + * @param spender The address which will spend the funds. + * @param value The amount of tokens to be spent. + */ + function approve(address spender, uint256 value) public returns (bool) { + require(spender != address(0)); + + _allowed[msg.sender][spender] = value; + emit Approval(msg.sender, spender, value); + return true; + } + + /** + * @dev Transfer tokens from one address to another. + * Note that while this function emits an Approval event, this is not required as per the specification, + * and other compliant implementations may not emit the event. + * @param from address The address which you want to send tokens from + * @param to address The address which you want to transfer to + * @param value uint256 the amount of tokens to be transferred + */ + function transferFrom(address from, address to, uint256 value) public returns (bool) { + _allowed[from][msg.sender] = _allowed[from][msg.sender].sub(value); + _transfer(from, to, value); + emit Approval(from, msg.sender, _allowed[from][msg.sender]); + return true; + } + + /** + * @dev Increase the amount of tokens that an owner allowed to a spender. + * approve should be called when allowed_[_spender] == 0. To increment + * allowed value is better to use this function to avoid 2 calls (and wait until + * the first transaction is mined) + * From MonolithDAO Token.sol + * Emits an Approval event. + * @param spender The address which will spend the funds. + * @param addedValue The amount of tokens to increase the allowance by. + */ + function increaseAllowance(address spender, uint256 addedValue) public returns (bool) { + require(spender != address(0)); + + _allowed[msg.sender][spender] = _allowed[msg.sender][spender].add(addedValue); + emit Approval(msg.sender, spender, _allowed[msg.sender][spender]); + return true; + } + + /** + * @dev Decrease the amount of tokens that an owner allowed to a spender. + * approve should be called when allowed_[_spender] == 0. To decrement + * allowed value is better to use this function to avoid 2 calls (and wait until + * the first transaction is mined) + * From MonolithDAO Token.sol + * Emits an Approval event. + * @param spender The address which will spend the funds. + * @param subtractedValue The amount of tokens to decrease the allowance by. + */ + function decreaseAllowance(address spender, uint256 subtractedValue) public returns (bool) { + require(spender != address(0)); + + _allowed[msg.sender][spender] = _allowed[msg.sender][spender].sub(subtractedValue); + emit Approval(msg.sender, spender, _allowed[msg.sender][spender]); + return true; + } + + /** + * @dev Transfer token for a specified addresses + * @param from The address to transfer from. + * @param to The address to transfer to. + * @param value The amount to be transferred. + */ + function _transfer(address from, address to, uint256 value) internal { + require(to != address(0)); + + _balances[from] = _balances[from].sub(value); + _balances[to] = _balances[to].add(value); + emit Transfer(from, to, value); + } + + /** + * @dev Internal function that mints an amount of the token and assigns it to + * an account. This encapsulates the modification of balances such that the + * proper events are emitted. + * @param account The account that will receive the created tokens. + * @param value The amount that will be created. + */ + function _mint(address account, uint256 value) internal { + require(account != address(0)); + + _totalSupply = _totalSupply.add(value); + _balances[account] = _balances[account].add(value); + emit Transfer(address(0), account, value); + } + + /** + * @dev Internal function that burns an amount of the token of a given + * account. + * @param account The account whose tokens will be burnt. + * @param value The amount that will be burnt. + */ + function _burn(address account, uint256 value) internal { + require(account != address(0)); + + _totalSupply = _totalSupply.sub(value); + _balances[account] = _balances[account].sub(value); + emit Transfer(account, address(0), value); + } + + /** + * @dev Internal function that burns an amount of the token of a given + * account, deducting from the sender's allowance for said account. Uses the + * internal burn function. + * Emits an Approval event (reflecting the reduced allowance). + * @param account The account whose tokens will be burnt. + * @param value The amount that will be burnt. + */ + function _burnFrom(address account, uint256 value) internal { + _allowed[account][msg.sender] = _allowed[account][msg.sender].sub(value); + _burn(account, value); + emit Approval(account, msg.sender, _allowed[account][msg.sender]); + } +} diff --git a/node_modules/openzeppelin-solidity/contracts/token/ERC20/ERC20Burnable.sol b/node_modules/openzeppelin-solidity/contracts/token/ERC20/ERC20Burnable.sol new file mode 100644 index 0000000..3242757 --- /dev/null +++ b/node_modules/openzeppelin-solidity/contracts/token/ERC20/ERC20Burnable.sol @@ -0,0 +1,26 @@ +pragma solidity ^0.5.0; + +import "./ERC20.sol"; + +/** + * @title Burnable Token + * @dev Token that can be irreversibly burned (destroyed). + */ +contract ERC20Burnable is ERC20 { + /** + * @dev Burns a specific amount of tokens. + * @param value The amount of token to be burned. + */ + function burn(uint256 value) public { + _burn(msg.sender, value); + } + + /** + * @dev Burns a specific amount of tokens from the target address and decrements allowance + * @param from address The address which you want to send tokens from + * @param value uint256 The amount of token to be burned + */ + function burnFrom(address from, uint256 value) public { + _burnFrom(from, value); + } +} diff --git a/node_modules/openzeppelin-solidity/contracts/token/ERC20/ERC20Capped.sol b/node_modules/openzeppelin-solidity/contracts/token/ERC20/ERC20Capped.sol new file mode 100644 index 0000000..3d4a2f1 --- /dev/null +++ b/node_modules/openzeppelin-solidity/contracts/token/ERC20/ERC20Capped.sol @@ -0,0 +1,28 @@ +pragma solidity ^0.5.0; + +import "./ERC20Mintable.sol"; + +/** + * @title Capped token + * @dev Mintable token with a token cap. + */ +contract ERC20Capped is ERC20Mintable { + uint256 private _cap; + + constructor (uint256 cap) public { + require(cap > 0); + _cap = cap; + } + + /** + * @return the cap for the token minting. + */ + function cap() public view returns (uint256) { + return _cap; + } + + function _mint(address account, uint256 value) internal { + require(totalSupply().add(value) <= _cap); + super._mint(account, value); + } +} diff --git a/node_modules/openzeppelin-solidity/contracts/token/ERC20/ERC20Detailed.sol b/node_modules/openzeppelin-solidity/contracts/token/ERC20/ERC20Detailed.sol new file mode 100644 index 0000000..71c0b01 --- /dev/null +++ b/node_modules/openzeppelin-solidity/contracts/token/ERC20/ERC20Detailed.sol @@ -0,0 +1,42 @@ +pragma solidity ^0.5.0; + +import "./IERC20.sol"; + +/** + * @title ERC20Detailed token + * @dev The decimals are only for visualization purposes. + * All the operations are done using the smallest and indivisible token unit, + * just as on Ethereum all the operations are done in wei. + */ +contract ERC20Detailed is IERC20 { + string private _name; + string private _symbol; + uint8 private _decimals; + + constructor (string memory name, string memory symbol, uint8 decimals) public { + _name = name; + _symbol = symbol; + _decimals = decimals; + } + + /** + * @return the name of the token. + */ + function name() public view returns (string memory) { + return _name; + } + + /** + * @return the symbol of the token. + */ + function symbol() public view returns (string memory) { + return _symbol; + } + + /** + * @return the number of decimals of the token. + */ + function decimals() public view returns (uint8) { + return _decimals; + } +} diff --git a/node_modules/openzeppelin-solidity/contracts/token/ERC20/ERC20Mintable.sol b/node_modules/openzeppelin-solidity/contracts/token/ERC20/ERC20Mintable.sol new file mode 100644 index 0000000..c6c0d64 --- /dev/null +++ b/node_modules/openzeppelin-solidity/contracts/token/ERC20/ERC20Mintable.sol @@ -0,0 +1,21 @@ +pragma solidity ^0.5.0; + +import "./ERC20.sol"; +import "../../access/roles/MinterRole.sol"; + +/** + * @title ERC20Mintable + * @dev ERC20 minting logic + */ +contract ERC20Mintable is ERC20, MinterRole { + /** + * @dev Function to mint tokens + * @param to The address that will receive the minted tokens. + * @param value The amount of tokens to mint. + * @return A boolean that indicates if the operation was successful. + */ + function mint(address to, uint256 value) public onlyMinter returns (bool) { + _mint(to, value); + return true; + } +} diff --git a/node_modules/openzeppelin-solidity/contracts/token/ERC20/ERC20Pausable.sol b/node_modules/openzeppelin-solidity/contracts/token/ERC20/ERC20Pausable.sol new file mode 100644 index 0000000..a27de25 --- /dev/null +++ b/node_modules/openzeppelin-solidity/contracts/token/ERC20/ERC20Pausable.sol @@ -0,0 +1,30 @@ +pragma solidity ^0.5.0; + +import "./ERC20.sol"; +import "../../lifecycle/Pausable.sol"; + +/** + * @title Pausable token + * @dev ERC20 modified with pausable transfers. + **/ +contract ERC20Pausable is ERC20, Pausable { + function transfer(address to, uint256 value) public whenNotPaused returns (bool) { + return super.transfer(to, value); + } + + function transferFrom(address from, address to, uint256 value) public whenNotPaused returns (bool) { + return super.transferFrom(from, to, value); + } + + function approve(address spender, uint256 value) public whenNotPaused returns (bool) { + return super.approve(spender, value); + } + + function increaseAllowance(address spender, uint addedValue) public whenNotPaused returns (bool success) { + return super.increaseAllowance(spender, addedValue); + } + + function decreaseAllowance(address spender, uint subtractedValue) public whenNotPaused returns (bool success) { + return super.decreaseAllowance(spender, subtractedValue); + } +} diff --git a/node_modules/openzeppelin-solidity/contracts/token/ERC20/IERC20.sol b/node_modules/openzeppelin-solidity/contracts/token/ERC20/IERC20.sol new file mode 100644 index 0000000..af4a485 --- /dev/null +++ b/node_modules/openzeppelin-solidity/contracts/token/ERC20/IERC20.sol @@ -0,0 +1,23 @@ +pragma solidity ^0.5.0; + +/** + * @title ERC20 interface + * @dev see https://github.com/ethereum/EIPs/issues/20 + */ +interface IERC20 { + function transfer(address to, uint256 value) external returns (bool); + + function approve(address spender, uint256 value) external returns (bool); + + function transferFrom(address from, address to, uint256 value) external returns (bool); + + function totalSupply() external view returns (uint256); + + function balanceOf(address who) external view returns (uint256); + + function allowance(address owner, address spender) external view returns (uint256); + + event Transfer(address indexed from, address indexed to, uint256 value); + + event Approval(address indexed owner, address indexed spender, uint256 value); +} diff --git a/node_modules/openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol b/node_modules/openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol new file mode 100644 index 0000000..25ac9ba --- /dev/null +++ b/node_modules/openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol @@ -0,0 +1,40 @@ +pragma solidity ^0.5.0; + +import "./IERC20.sol"; +import "../../math/SafeMath.sol"; + +/** + * @title SafeERC20 + * @dev Wrappers around ERC20 operations that throw on failure. + * To use this library you can add a `using SafeERC20 for ERC20;` statement to your contract, + * which allows you to call the safe operations as `token.safeTransfer(...)`, etc. + */ +library SafeERC20 { + using SafeMath for uint256; + + function safeTransfer(IERC20 token, address to, uint256 value) internal { + require(token.transfer(to, value)); + } + + function safeTransferFrom(IERC20 token, address from, address to, uint256 value) internal { + require(token.transferFrom(from, to, value)); + } + + function safeApprove(IERC20 token, address spender, uint256 value) internal { + // safeApprove should only be called when setting an initial allowance, + // or when resetting it to zero. To increase and decrease it, use + // 'safeIncreaseAllowance' and 'safeDecreaseAllowance' + require((value == 0) || (token.allowance(msg.sender, spender) == 0)); + require(token.approve(spender, value)); + } + + function safeIncreaseAllowance(IERC20 token, address spender, uint256 value) internal { + uint256 newAllowance = token.allowance(address(this), spender).add(value); + require(token.approve(spender, newAllowance)); + } + + function safeDecreaseAllowance(IERC20 token, address spender, uint256 value) internal { + uint256 newAllowance = token.allowance(address(this), spender).sub(value); + require(token.approve(spender, newAllowance)); + } +} diff --git a/node_modules/openzeppelin-solidity/contracts/token/ERC20/TokenTimelock.sol b/node_modules/openzeppelin-solidity/contracts/token/ERC20/TokenTimelock.sol new file mode 100644 index 0000000..fb56a33 --- /dev/null +++ b/node_modules/openzeppelin-solidity/contracts/token/ERC20/TokenTimelock.sol @@ -0,0 +1,63 @@ +pragma solidity ^0.5.0; + +import "./SafeERC20.sol"; + +/** + * @title TokenTimelock + * @dev TokenTimelock is a token holder contract that will allow a + * beneficiary to extract the tokens after a given release time + */ +contract TokenTimelock { + using SafeERC20 for IERC20; + + // ERC20 basic token contract being held + IERC20 private _token; + + // beneficiary of tokens after they are released + address private _beneficiary; + + // timestamp when token release is enabled + uint256 private _releaseTime; + + constructor (IERC20 token, address beneficiary, uint256 releaseTime) public { + // solhint-disable-next-line not-rely-on-time + require(releaseTime > block.timestamp); + _token = token; + _beneficiary = beneficiary; + _releaseTime = releaseTime; + } + + /** + * @return the token being held. + */ + function token() public view returns (IERC20) { + return _token; + } + + /** + * @return the beneficiary of the tokens. + */ + function beneficiary() public view returns (address) { + return _beneficiary; + } + + /** + * @return the time when the tokens are released. + */ + function releaseTime() public view returns (uint256) { + return _releaseTime; + } + + /** + * @notice Transfers tokens held by timelock to beneficiary. + */ + function release() public { + // solhint-disable-next-line not-rely-on-time + require(block.timestamp >= _releaseTime); + + uint256 amount = _token.balanceOf(address(this)); + require(amount > 0); + + _token.safeTransfer(_beneficiary, amount); + } +} diff --git a/node_modules/openzeppelin-solidity/contracts/token/ERC721/ERC721.sol b/node_modules/openzeppelin-solidity/contracts/token/ERC721/ERC721.sol new file mode 100644 index 0000000..7c51ce6 --- /dev/null +++ b/node_modules/openzeppelin-solidity/contracts/token/ERC721/ERC721.sol @@ -0,0 +1,285 @@ +pragma solidity ^0.5.0; + +import "./IERC721.sol"; +import "./IERC721Receiver.sol"; +import "../../math/SafeMath.sol"; +import "../../utils/Address.sol"; +import "../../introspection/ERC165.sol"; + +/** + * @title ERC721 Non-Fungible Token Standard basic implementation + * @dev see https://github.com/ethereum/EIPs/blob/master/EIPS/eip-721.md + */ +contract ERC721 is ERC165, IERC721 { + using SafeMath for uint256; + using Address for address; + + // Equals to `bytes4(keccak256("onERC721Received(address,address,uint256,bytes)"))` + // which can be also obtained as `IERC721Receiver(0).onERC721Received.selector` + bytes4 private constant _ERC721_RECEIVED = 0x150b7a02; + + // Mapping from token ID to owner + mapping (uint256 => address) private _tokenOwner; + + // Mapping from token ID to approved address + mapping (uint256 => address) private _tokenApprovals; + + // Mapping from owner to number of owned token + mapping (address => uint256) private _ownedTokensCount; + + // Mapping from owner to operator approvals + mapping (address => mapping (address => bool)) private _operatorApprovals; + + bytes4 private constant _INTERFACE_ID_ERC721 = 0x80ac58cd; + /* + * 0x80ac58cd === + * bytes4(keccak256('balanceOf(address)')) ^ + * bytes4(keccak256('ownerOf(uint256)')) ^ + * bytes4(keccak256('approve(address,uint256)')) ^ + * bytes4(keccak256('getApproved(uint256)')) ^ + * bytes4(keccak256('setApprovalForAll(address,bool)')) ^ + * bytes4(keccak256('isApprovedForAll(address,address)')) ^ + * bytes4(keccak256('transferFrom(address,address,uint256)')) ^ + * bytes4(keccak256('safeTransferFrom(address,address,uint256)')) ^ + * bytes4(keccak256('safeTransferFrom(address,address,uint256,bytes)')) + */ + + constructor () public { + // register the supported interfaces to conform to ERC721 via ERC165 + _registerInterface(_INTERFACE_ID_ERC721); + } + + /** + * @dev Gets the balance of the specified address + * @param owner address to query the balance of + * @return uint256 representing the amount owned by the passed address + */ + function balanceOf(address owner) public view returns (uint256) { + require(owner != address(0)); + return _ownedTokensCount[owner]; + } + + /** + * @dev Gets the owner of the specified token ID + * @param tokenId uint256 ID of the token to query the owner of + * @return owner address currently marked as the owner of the given token ID + */ + function ownerOf(uint256 tokenId) public view returns (address) { + address owner = _tokenOwner[tokenId]; + require(owner != address(0)); + return owner; + } + + /** + * @dev Approves another address to transfer the given token ID + * The zero address indicates there is no approved address. + * There can only be one approved address per token at a given time. + * Can only be called by the token owner or an approved operator. + * @param to address to be approved for the given token ID + * @param tokenId uint256 ID of the token to be approved + */ + function approve(address to, uint256 tokenId) public { + address owner = ownerOf(tokenId); + require(to != owner); + require(msg.sender == owner || isApprovedForAll(owner, msg.sender)); + + _tokenApprovals[tokenId] = to; + emit Approval(owner, to, tokenId); + } + + /** + * @dev Gets the approved address for a token ID, or zero if no address set + * Reverts if the token ID does not exist. + * @param tokenId uint256 ID of the token to query the approval of + * @return address currently approved for the given token ID + */ + function getApproved(uint256 tokenId) public view returns (address) { + require(_exists(tokenId)); + return _tokenApprovals[tokenId]; + } + + /** + * @dev Sets or unsets the approval of a given operator + * An operator is allowed to transfer all tokens of the sender on their behalf + * @param to operator address to set the approval + * @param approved representing the status of the approval to be set + */ + function setApprovalForAll(address to, bool approved) public { + require(to != msg.sender); + _operatorApprovals[msg.sender][to] = approved; + emit ApprovalForAll(msg.sender, to, approved); + } + + /** + * @dev Tells whether an operator is approved by a given owner + * @param owner owner address which you want to query the approval of + * @param operator operator address which you want to query the approval of + * @return bool whether the given operator is approved by the given owner + */ + function isApprovedForAll(address owner, address operator) public view returns (bool) { + return _operatorApprovals[owner][operator]; + } + + /** + * @dev Transfers the ownership of a given token ID to another address + * Usage of this method is discouraged, use `safeTransferFrom` whenever possible + * Requires the msg sender to be the owner, approved, or operator + * @param from current owner of the token + * @param to address to receive the ownership of the given token ID + * @param tokenId uint256 ID of the token to be transferred + */ + function transferFrom(address from, address to, uint256 tokenId) public { + require(_isApprovedOrOwner(msg.sender, tokenId)); + + _transferFrom(from, to, tokenId); + } + + /** + * @dev Safely transfers the ownership of a given token ID to another address + * If the target address is a contract, it must implement `onERC721Received`, + * which is called upon a safe transfer, and return the magic value + * `bytes4(keccak256("onERC721Received(address,address,uint256,bytes)"))`; otherwise, + * the transfer is reverted. + * + * Requires the msg sender to be the owner, approved, or operator + * @param from current owner of the token + * @param to address to receive the ownership of the given token ID + * @param tokenId uint256 ID of the token to be transferred + */ + function safeTransferFrom(address from, address to, uint256 tokenId) public { + safeTransferFrom(from, to, tokenId, ""); + } + + /** + * @dev Safely transfers the ownership of a given token ID to another address + * If the target address is a contract, it must implement `onERC721Received`, + * which is called upon a safe transfer, and return the magic value + * `bytes4(keccak256("onERC721Received(address,address,uint256,bytes)"))`; otherwise, + * the transfer is reverted. + * Requires the msg sender to be the owner, approved, or operator + * @param from current owner of the token + * @param to address to receive the ownership of the given token ID + * @param tokenId uint256 ID of the token to be transferred + * @param _data bytes data to send along with a safe transfer check + */ + function safeTransferFrom(address from, address to, uint256 tokenId, bytes memory _data) public { + transferFrom(from, to, tokenId); + require(_checkOnERC721Received(from, to, tokenId, _data)); + } + + /** + * @dev Returns whether the specified token exists + * @param tokenId uint256 ID of the token to query the existence of + * @return whether the token exists + */ + function _exists(uint256 tokenId) internal view returns (bool) { + address owner = _tokenOwner[tokenId]; + return owner != address(0); + } + + /** + * @dev Returns whether the given spender can transfer a given token ID + * @param spender address of the spender to query + * @param tokenId uint256 ID of the token to be transferred + * @return bool whether the msg.sender is approved for the given token ID, + * is an operator of the owner, or is the owner of the token + */ + function _isApprovedOrOwner(address spender, uint256 tokenId) internal view returns (bool) { + address owner = ownerOf(tokenId); + return (spender == owner || getApproved(tokenId) == spender || isApprovedForAll(owner, spender)); + } + + /** + * @dev Internal function to mint a new token + * Reverts if the given token ID already exists + * @param to The address that will own the minted token + * @param tokenId uint256 ID of the token to be minted + */ + function _mint(address to, uint256 tokenId) internal { + require(to != address(0)); + require(!_exists(tokenId)); + + _tokenOwner[tokenId] = to; + _ownedTokensCount[to] = _ownedTokensCount[to].add(1); + + emit Transfer(address(0), to, tokenId); + } + + /** + * @dev Internal function to burn a specific token + * Reverts if the token does not exist + * Deprecated, use _burn(uint256) instead. + * @param owner owner of the token to burn + * @param tokenId uint256 ID of the token being burned + */ + function _burn(address owner, uint256 tokenId) internal { + require(ownerOf(tokenId) == owner); + + _clearApproval(tokenId); + + _ownedTokensCount[owner] = _ownedTokensCount[owner].sub(1); + _tokenOwner[tokenId] = address(0); + + emit Transfer(owner, address(0), tokenId); + } + + /** + * @dev Internal function to burn a specific token + * Reverts if the token does not exist + * @param tokenId uint256 ID of the token being burned + */ + function _burn(uint256 tokenId) internal { + _burn(ownerOf(tokenId), tokenId); + } + + /** + * @dev Internal function to transfer ownership of a given token ID to another address. + * As opposed to transferFrom, this imposes no restrictions on msg.sender. + * @param from current owner of the token + * @param to address to receive the ownership of the given token ID + * @param tokenId uint256 ID of the token to be transferred + */ + function _transferFrom(address from, address to, uint256 tokenId) internal { + require(ownerOf(tokenId) == from); + require(to != address(0)); + + _clearApproval(tokenId); + + _ownedTokensCount[from] = _ownedTokensCount[from].sub(1); + _ownedTokensCount[to] = _ownedTokensCount[to].add(1); + + _tokenOwner[tokenId] = to; + + emit Transfer(from, to, tokenId); + } + + /** + * @dev Internal function to invoke `onERC721Received` on a target address + * The call is not executed if the target address is not a contract + * @param from address representing the previous owner of the given token ID + * @param to target address that will receive the tokens + * @param tokenId uint256 ID of the token to be transferred + * @param _data bytes optional data to send along with the call + * @return whether the call correctly returned the expected magic value + */ + function _checkOnERC721Received(address from, address to, uint256 tokenId, bytes memory _data) + internal returns (bool) + { + if (!to.isContract()) { + return true; + } + + bytes4 retval = IERC721Receiver(to).onERC721Received(msg.sender, from, tokenId, _data); + return (retval == _ERC721_RECEIVED); + } + + /** + * @dev Private function to clear current approval of a given token ID + * @param tokenId uint256 ID of the token to be transferred + */ + function _clearApproval(uint256 tokenId) private { + if (_tokenApprovals[tokenId] != address(0)) { + _tokenApprovals[tokenId] = address(0); + } + } +} diff --git a/node_modules/openzeppelin-solidity/contracts/token/ERC721/ERC721Burnable.sol b/node_modules/openzeppelin-solidity/contracts/token/ERC721/ERC721Burnable.sol new file mode 100644 index 0000000..21bdc51 --- /dev/null +++ b/node_modules/openzeppelin-solidity/contracts/token/ERC721/ERC721Burnable.sol @@ -0,0 +1,18 @@ +pragma solidity ^0.5.0; + +import "./ERC721.sol"; + +/** + * @title ERC721 Burnable Token + * @dev ERC721 Token that can be irreversibly burned (destroyed). + */ +contract ERC721Burnable is ERC721 { + /** + * @dev Burns a specific ERC721 token. + * @param tokenId uint256 id of the ERC721 token to be burned. + */ + function burn(uint256 tokenId) public { + require(_isApprovedOrOwner(msg.sender, tokenId)); + _burn(tokenId); + } +} diff --git a/node_modules/openzeppelin-solidity/contracts/token/ERC721/ERC721Enumerable.sol b/node_modules/openzeppelin-solidity/contracts/token/ERC721/ERC721Enumerable.sol new file mode 100644 index 0000000..282e987 --- /dev/null +++ b/node_modules/openzeppelin-solidity/contracts/token/ERC721/ERC721Enumerable.sol @@ -0,0 +1,198 @@ +pragma solidity ^0.5.0; + +import "./IERC721Enumerable.sol"; +import "./ERC721.sol"; +import "../../introspection/ERC165.sol"; + +/** + * @title ERC-721 Non-Fungible Token with optional enumeration extension logic + * @dev See https://github.com/ethereum/EIPs/blob/master/EIPS/eip-721.md + */ +contract ERC721Enumerable is ERC165, ERC721, IERC721Enumerable { + // Mapping from owner to list of owned token IDs + mapping(address => uint256[]) private _ownedTokens; + + // Mapping from token ID to index of the owner tokens list + mapping(uint256 => uint256) private _ownedTokensIndex; + + // Array with all token ids, used for enumeration + uint256[] private _allTokens; + + // Mapping from token id to position in the allTokens array + mapping(uint256 => uint256) private _allTokensIndex; + + bytes4 private constant _INTERFACE_ID_ERC721_ENUMERABLE = 0x780e9d63; + /** + * 0x780e9d63 === + * bytes4(keccak256('totalSupply()')) ^ + * bytes4(keccak256('tokenOfOwnerByIndex(address,uint256)')) ^ + * bytes4(keccak256('tokenByIndex(uint256)')) + */ + + /** + * @dev Constructor function + */ + constructor () public { + // register the supported interface to conform to ERC721 via ERC165 + _registerInterface(_INTERFACE_ID_ERC721_ENUMERABLE); + } + + /** + * @dev Gets the token ID at a given index of the tokens list of the requested owner + * @param owner address owning the tokens list to be accessed + * @param index uint256 representing the index to be accessed of the requested tokens list + * @return uint256 token ID at the given index of the tokens list owned by the requested address + */ + function tokenOfOwnerByIndex(address owner, uint256 index) public view returns (uint256) { + require(index < balanceOf(owner)); + return _ownedTokens[owner][index]; + } + + /** + * @dev Gets the total amount of tokens stored by the contract + * @return uint256 representing the total amount of tokens + */ + function totalSupply() public view returns (uint256) { + return _allTokens.length; + } + + /** + * @dev Gets the token ID at a given index of all the tokens in this contract + * Reverts if the index is greater or equal to the total number of tokens + * @param index uint256 representing the index to be accessed of the tokens list + * @return uint256 token ID at the given index of the tokens list + */ + function tokenByIndex(uint256 index) public view returns (uint256) { + require(index < totalSupply()); + return _allTokens[index]; + } + + /** + * @dev Internal function to transfer ownership of a given token ID to another address. + * As opposed to transferFrom, this imposes no restrictions on msg.sender. + * @param from current owner of the token + * @param to address to receive the ownership of the given token ID + * @param tokenId uint256 ID of the token to be transferred + */ + function _transferFrom(address from, address to, uint256 tokenId) internal { + super._transferFrom(from, to, tokenId); + + _removeTokenFromOwnerEnumeration(from, tokenId); + + _addTokenToOwnerEnumeration(to, tokenId); + } + + /** + * @dev Internal function to mint a new token + * Reverts if the given token ID already exists + * @param to address the beneficiary that will own the minted token + * @param tokenId uint256 ID of the token to be minted + */ + function _mint(address to, uint256 tokenId) internal { + super._mint(to, tokenId); + + _addTokenToOwnerEnumeration(to, tokenId); + + _addTokenToAllTokensEnumeration(tokenId); + } + + /** + * @dev Internal function to burn a specific token + * Reverts if the token does not exist + * Deprecated, use _burn(uint256) instead + * @param owner owner of the token to burn + * @param tokenId uint256 ID of the token being burned + */ + function _burn(address owner, uint256 tokenId) internal { + super._burn(owner, tokenId); + + _removeTokenFromOwnerEnumeration(owner, tokenId); + // Since tokenId will be deleted, we can clear its slot in _ownedTokensIndex to trigger a gas refund + _ownedTokensIndex[tokenId] = 0; + + _removeTokenFromAllTokensEnumeration(tokenId); + } + + /** + * @dev Gets the list of token IDs of the requested owner + * @param owner address owning the tokens + * @return uint256[] List of token IDs owned by the requested address + */ + function _tokensOfOwner(address owner) internal view returns (uint256[] storage) { + return _ownedTokens[owner]; + } + + /** + * @dev Private function to add a token to this extension's ownership-tracking data structures. + * @param to address representing the new owner of the given token ID + * @param tokenId uint256 ID of the token to be added to the tokens list of the given address + */ + function _addTokenToOwnerEnumeration(address to, uint256 tokenId) private { + _ownedTokensIndex[tokenId] = _ownedTokens[to].length; + _ownedTokens[to].push(tokenId); + } + + /** + * @dev Private function to add a token to this extension's token tracking data structures. + * @param tokenId uint256 ID of the token to be added to the tokens list + */ + function _addTokenToAllTokensEnumeration(uint256 tokenId) private { + _allTokensIndex[tokenId] = _allTokens.length; + _allTokens.push(tokenId); + } + + /** + * @dev Private function to remove a token from this extension's ownership-tracking data structures. Note that + * while the token is not assigned a new owner, the _ownedTokensIndex mapping is _not_ updated: this allows for + * gas optimizations e.g. when performing a transfer operation (avoiding double writes). + * This has O(1) time complexity, but alters the order of the _ownedTokens array. + * @param from address representing the previous owner of the given token ID + * @param tokenId uint256 ID of the token to be removed from the tokens list of the given address + */ + function _removeTokenFromOwnerEnumeration(address from, uint256 tokenId) private { + // To prevent a gap in from's tokens array, we store the last token in the index of the token to delete, and + // then delete the last slot (swap and pop). + + uint256 lastTokenIndex = _ownedTokens[from].length.sub(1); + uint256 tokenIndex = _ownedTokensIndex[tokenId]; + + // When the token to delete is the last token, the swap operation is unnecessary + if (tokenIndex != lastTokenIndex) { + uint256 lastTokenId = _ownedTokens[from][lastTokenIndex]; + + _ownedTokens[from][tokenIndex] = lastTokenId; // Move the last token to the slot of the to-delete token + _ownedTokensIndex[lastTokenId] = tokenIndex; // Update the moved token's index + } + + // This also deletes the contents at the last position of the array + _ownedTokens[from].length--; + + // Note that _ownedTokensIndex[tokenId] hasn't been cleared: it still points to the old slot (now occcupied by + // lasTokenId, or just over the end of the array if the token was the last one). + } + + /** + * @dev Private function to remove a token from this extension's token tracking data structures. + * This has O(1) time complexity, but alters the order of the _allTokens array. + * @param tokenId uint256 ID of the token to be removed from the tokens list + */ + function _removeTokenFromAllTokensEnumeration(uint256 tokenId) private { + // To prevent a gap in the tokens array, we store the last token in the index of the token to delete, and + // then delete the last slot (swap and pop). + + uint256 lastTokenIndex = _allTokens.length.sub(1); + uint256 tokenIndex = _allTokensIndex[tokenId]; + + // When the token to delete is the last token, the swap operation is unnecessary. However, since this occurs so + // rarely (when the last minted token is burnt) that we still do the swap here to avoid the gas cost of adding + // an 'if' statement (like in _removeTokenFromOwnerEnumeration) + uint256 lastTokenId = _allTokens[lastTokenIndex]; + + _allTokens[tokenIndex] = lastTokenId; // Move the last token to the slot of the to-delete token + _allTokensIndex[lastTokenId] = tokenIndex; // Update the moved token's index + + // This also deletes the contents at the last position of the array + _allTokens.length--; + _allTokensIndex[tokenId] = 0; + } +} diff --git a/node_modules/openzeppelin-solidity/contracts/token/ERC721/ERC721Full.sol b/node_modules/openzeppelin-solidity/contracts/token/ERC721/ERC721Full.sol new file mode 100644 index 0000000..f4e8042 --- /dev/null +++ b/node_modules/openzeppelin-solidity/contracts/token/ERC721/ERC721Full.sol @@ -0,0 +1,17 @@ +pragma solidity ^0.5.0; + +import "./ERC721.sol"; +import "./ERC721Enumerable.sol"; +import "./ERC721Metadata.sol"; + +/** + * @title Full ERC721 Token + * This implementation includes all the required and some optional functionality of the ERC721 standard + * Moreover, it includes approve all functionality using operator terminology + * @dev see https://github.com/ethereum/EIPs/blob/master/EIPS/eip-721.md + */ +contract ERC721Full is ERC721, ERC721Enumerable, ERC721Metadata { + constructor (string memory name, string memory symbol) public ERC721Metadata(name, symbol) { + // solhint-disable-previous-line no-empty-blocks + } +} diff --git a/node_modules/openzeppelin-solidity/contracts/token/ERC721/ERC721Holder.sol b/node_modules/openzeppelin-solidity/contracts/token/ERC721/ERC721Holder.sol new file mode 100644 index 0000000..bcc10d7 --- /dev/null +++ b/node_modules/openzeppelin-solidity/contracts/token/ERC721/ERC721Holder.sol @@ -0,0 +1,9 @@ +pragma solidity ^0.5.0; + +import "./IERC721Receiver.sol"; + +contract ERC721Holder is IERC721Receiver { + function onERC721Received(address, address, uint256, bytes memory) public returns (bytes4) { + return this.onERC721Received.selector; + } +} diff --git a/node_modules/openzeppelin-solidity/contracts/token/ERC721/ERC721Metadata.sol b/node_modules/openzeppelin-solidity/contracts/token/ERC721/ERC721Metadata.sol new file mode 100644 index 0000000..4159329 --- /dev/null +++ b/node_modules/openzeppelin-solidity/contracts/token/ERC721/ERC721Metadata.sol @@ -0,0 +1,88 @@ +pragma solidity ^0.5.0; + +import "./ERC721.sol"; +import "./IERC721Metadata.sol"; +import "../../introspection/ERC165.sol"; + +contract ERC721Metadata is ERC165, ERC721, IERC721Metadata { + // Token name + string private _name; + + // Token symbol + string private _symbol; + + // Optional mapping for token URIs + mapping(uint256 => string) private _tokenURIs; + + bytes4 private constant _INTERFACE_ID_ERC721_METADATA = 0x5b5e139f; + /** + * 0x5b5e139f === + * bytes4(keccak256('name()')) ^ + * bytes4(keccak256('symbol()')) ^ + * bytes4(keccak256('tokenURI(uint256)')) + */ + + /** + * @dev Constructor function + */ + constructor (string memory name, string memory symbol) public { + _name = name; + _symbol = symbol; + + // register the supported interfaces to conform to ERC721 via ERC165 + _registerInterface(_INTERFACE_ID_ERC721_METADATA); + } + + /** + * @dev Gets the token name + * @return string representing the token name + */ + function name() external view returns (string memory) { + return _name; + } + + /** + * @dev Gets the token symbol + * @return string representing the token symbol + */ + function symbol() external view returns (string memory) { + return _symbol; + } + + /** + * @dev Returns an URI for a given token ID + * Throws if the token ID does not exist. May return an empty string. + * @param tokenId uint256 ID of the token to query + */ + function tokenURI(uint256 tokenId) external view returns (string memory) { + require(_exists(tokenId)); + return _tokenURIs[tokenId]; + } + + /** + * @dev Internal function to set the token URI for a given token + * Reverts if the token ID does not exist + * @param tokenId uint256 ID of the token to set its URI + * @param uri string URI to assign + */ + function _setTokenURI(uint256 tokenId, string memory uri) internal { + require(_exists(tokenId)); + _tokenURIs[tokenId] = uri; + } + + /** + * @dev Internal function to burn a specific token + * Reverts if the token does not exist + * Deprecated, use _burn(uint256) instead + * @param owner owner of the token to burn + * @param tokenId uint256 ID of the token being burned by the msg.sender + */ + function _burn(address owner, uint256 tokenId) internal { + super._burn(owner, tokenId); + + // Clear metadata (if any) + if (bytes(_tokenURIs[tokenId]).length != 0) { + delete _tokenURIs[tokenId]; + } + } +} diff --git a/node_modules/openzeppelin-solidity/contracts/token/ERC721/ERC721MetadataMintable.sol b/node_modules/openzeppelin-solidity/contracts/token/ERC721/ERC721MetadataMintable.sol new file mode 100644 index 0000000..01a1a51 --- /dev/null +++ b/node_modules/openzeppelin-solidity/contracts/token/ERC721/ERC721MetadataMintable.sol @@ -0,0 +1,24 @@ +pragma solidity ^0.5.0; + +import "./ERC721Metadata.sol"; +import "../../access/roles/MinterRole.sol"; + + +/** + * @title ERC721MetadataMintable + * @dev ERC721 minting logic with metadata + */ +contract ERC721MetadataMintable is ERC721, ERC721Metadata, MinterRole { + /** + * @dev Function to mint tokens + * @param to The address that will receive the minted tokens. + * @param tokenId The token id to mint. + * @param tokenURI The token URI of the minted token. + * @return A boolean that indicates if the operation was successful. + */ + function mintWithTokenURI(address to, uint256 tokenId, string memory tokenURI) public onlyMinter returns (bool) { + _mint(to, tokenId); + _setTokenURI(tokenId, tokenURI); + return true; + } +} diff --git a/node_modules/openzeppelin-solidity/contracts/token/ERC721/ERC721Mintable.sol b/node_modules/openzeppelin-solidity/contracts/token/ERC721/ERC721Mintable.sol new file mode 100644 index 0000000..7e7503d --- /dev/null +++ b/node_modules/openzeppelin-solidity/contracts/token/ERC721/ERC721Mintable.sol @@ -0,0 +1,21 @@ +pragma solidity ^0.5.0; + +import "./ERC721.sol"; +import "../../access/roles/MinterRole.sol"; + +/** + * @title ERC721Mintable + * @dev ERC721 minting logic + */ +contract ERC721Mintable is ERC721, MinterRole { + /** + * @dev Function to mint tokens + * @param to The address that will receive the minted tokens. + * @param tokenId The token id to mint. + * @return A boolean that indicates if the operation was successful. + */ + function mint(address to, uint256 tokenId) public onlyMinter returns (bool) { + _mint(to, tokenId); + return true; + } +} diff --git a/node_modules/openzeppelin-solidity/contracts/token/ERC721/ERC721Pausable.sol b/node_modules/openzeppelin-solidity/contracts/token/ERC721/ERC721Pausable.sol new file mode 100644 index 0000000..656df23 --- /dev/null +++ b/node_modules/openzeppelin-solidity/contracts/token/ERC721/ERC721Pausable.sol @@ -0,0 +1,22 @@ +pragma solidity ^0.5.0; + +import "./ERC721.sol"; +import "../../lifecycle/Pausable.sol"; + +/** + * @title ERC721 Non-Fungible Pausable token + * @dev ERC721 modified with pausable transfers. + **/ +contract ERC721Pausable is ERC721, Pausable { + function approve(address to, uint256 tokenId) public whenNotPaused { + super.approve(to, tokenId); + } + + function setApprovalForAll(address to, bool approved) public whenNotPaused { + super.setApprovalForAll(to, approved); + } + + function transferFrom(address from, address to, uint256 tokenId) public whenNotPaused { + super.transferFrom(from, to, tokenId); + } +} diff --git a/node_modules/openzeppelin-solidity/contracts/token/ERC721/IERC721.sol b/node_modules/openzeppelin-solidity/contracts/token/ERC721/IERC721.sol new file mode 100644 index 0000000..4aa3038 --- /dev/null +++ b/node_modules/openzeppelin-solidity/contracts/token/ERC721/IERC721.sol @@ -0,0 +1,27 @@ +pragma solidity ^0.5.0; + +import "../../introspection/IERC165.sol"; + +/** + * @title ERC721 Non-Fungible Token Standard basic interface + * @dev see https://github.com/ethereum/EIPs/blob/master/EIPS/eip-721.md + */ +contract IERC721 is IERC165 { + event Transfer(address indexed from, address indexed to, uint256 indexed tokenId); + event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId); + event ApprovalForAll(address indexed owner, address indexed operator, bool approved); + + function balanceOf(address owner) public view returns (uint256 balance); + function ownerOf(uint256 tokenId) public view returns (address owner); + + function approve(address to, uint256 tokenId) public; + function getApproved(uint256 tokenId) public view returns (address operator); + + function setApprovalForAll(address operator, bool _approved) public; + function isApprovedForAll(address owner, address operator) public view returns (bool); + + function transferFrom(address from, address to, uint256 tokenId) public; + function safeTransferFrom(address from, address to, uint256 tokenId) public; + + function safeTransferFrom(address from, address to, uint256 tokenId, bytes memory data) public; +} diff --git a/node_modules/openzeppelin-solidity/contracts/token/ERC721/IERC721Enumerable.sol b/node_modules/openzeppelin-solidity/contracts/token/ERC721/IERC721Enumerable.sol new file mode 100644 index 0000000..80df93f --- /dev/null +++ b/node_modules/openzeppelin-solidity/contracts/token/ERC721/IERC721Enumerable.sol @@ -0,0 +1,14 @@ +pragma solidity ^0.5.0; + +import "./IERC721.sol"; + +/** + * @title ERC-721 Non-Fungible Token Standard, optional enumeration extension + * @dev See https://github.com/ethereum/EIPs/blob/master/EIPS/eip-721.md + */ +contract IERC721Enumerable is IERC721 { + function totalSupply() public view returns (uint256); + function tokenOfOwnerByIndex(address owner, uint256 index) public view returns (uint256 tokenId); + + function tokenByIndex(uint256 index) public view returns (uint256); +} diff --git a/node_modules/openzeppelin-solidity/contracts/token/ERC721/IERC721Full.sol b/node_modules/openzeppelin-solidity/contracts/token/ERC721/IERC721Full.sol new file mode 100644 index 0000000..17f5938 --- /dev/null +++ b/node_modules/openzeppelin-solidity/contracts/token/ERC721/IERC721Full.sol @@ -0,0 +1,13 @@ +pragma solidity ^0.5.0; + +import "./IERC721.sol"; +import "./IERC721Enumerable.sol"; +import "./IERC721Metadata.sol"; + +/** + * @title ERC-721 Non-Fungible Token Standard, full implementation interface + * @dev See https://github.com/ethereum/EIPs/blob/master/EIPS/eip-721.md + */ +contract IERC721Full is IERC721, IERC721Enumerable, IERC721Metadata { + // solhint-disable-previous-line no-empty-blocks +} diff --git a/node_modules/openzeppelin-solidity/contracts/token/ERC721/IERC721Metadata.sol b/node_modules/openzeppelin-solidity/contracts/token/ERC721/IERC721Metadata.sol new file mode 100644 index 0000000..ee87a15 --- /dev/null +++ b/node_modules/openzeppelin-solidity/contracts/token/ERC721/IERC721Metadata.sol @@ -0,0 +1,13 @@ +pragma solidity ^0.5.0; + +import "./IERC721.sol"; + +/** + * @title ERC-721 Non-Fungible Token Standard, optional metadata extension + * @dev See https://github.com/ethereum/EIPs/blob/master/EIPS/eip-721.md + */ +contract IERC721Metadata is IERC721 { + function name() external view returns (string memory); + function symbol() external view returns (string memory); + function tokenURI(uint256 tokenId) external view returns (string memory); +} diff --git a/node_modules/openzeppelin-solidity/contracts/token/ERC721/IERC721Receiver.sol b/node_modules/openzeppelin-solidity/contracts/token/ERC721/IERC721Receiver.sol new file mode 100644 index 0000000..e2d0197 --- /dev/null +++ b/node_modules/openzeppelin-solidity/contracts/token/ERC721/IERC721Receiver.sol @@ -0,0 +1,25 @@ +pragma solidity ^0.5.0; + +/** + * @title ERC721 token receiver interface + * @dev Interface for any contract that wants to support safeTransfers + * from ERC721 asset contracts. + */ +contract IERC721Receiver { + /** + * @notice Handle the receipt of an NFT + * @dev The ERC721 smart contract calls this function on the recipient + * after a `safeTransfer`. This function MUST return the function selector, + * otherwise the caller will revert the transaction. The selector to be + * returned can be obtained as `this.onERC721Received.selector`. This + * function MAY throw to revert and reject the transfer. + * Note: the ERC721 contract address is always the message sender. + * @param operator The address which called `safeTransferFrom` function + * @param from The address which previously owned the token + * @param tokenId The NFT identifier which is being transferred + * @param data Additional data with no specified format + * @return `bytes4(keccak256("onERC721Received(address,address,uint256,bytes)"))` + */ + function onERC721Received(address operator, address from, uint256 tokenId, bytes memory data) + public returns (bytes4); +} diff --git a/node_modules/openzeppelin-solidity/contracts/utils/Address.sol b/node_modules/openzeppelin-solidity/contracts/utils/Address.sol new file mode 100644 index 0000000..5004672 --- /dev/null +++ b/node_modules/openzeppelin-solidity/contracts/utils/Address.sol @@ -0,0 +1,26 @@ +pragma solidity ^0.5.0; + +/** + * Utility library of inline functions on addresses + */ +library Address { + /** + * Returns whether the target address is a contract + * @dev This function will return false if invoked during the constructor of a contract, + * as the code is not actually created until after the constructor finishes. + * @param account address of the account to check + * @return whether the target address is a contract + */ + function isContract(address account) internal view returns (bool) { + uint256 size; + // XXX Currently there is no better way to check if there is a contract in an address + // than to check the size of the code at that address. + // See https://ethereum.stackexchange.com/a/14016/36603 + // for more details about how this works. + // TODO Check this again before the Serenity release, because all addresses will be + // contracts then. + // solhint-disable-next-line no-inline-assembly + assembly { size := extcodesize(account) } + return size > 0; + } +} diff --git a/node_modules/openzeppelin-solidity/contracts/utils/Arrays.sol b/node_modules/openzeppelin-solidity/contracts/utils/Arrays.sol new file mode 100644 index 0000000..c34154c --- /dev/null +++ b/node_modules/openzeppelin-solidity/contracts/utils/Arrays.sol @@ -0,0 +1,48 @@ +pragma solidity ^0.5.0; + +import "../math/Math.sol"; + + +/** + * @title Arrays + * @dev Utility library of inline array functions + */ +library Arrays { + /** + * @dev Upper bound search function which is kind of binary search algoritm. It searches sorted + * array to find index of the element value. If element is found then returns it's index otherwise + * it returns index of first element which is grater than searched value. If searched element is + * bigger than any array element function then returns first index after last element (i.e. all + * values inside the array are smaller than the target). Complexity O(log n). + * @param array The array sorted in ascending order. + * @param element The element's value to be find. + * @return The calculated index value. Returns 0 for empty array. + */ + function findUpperBound(uint256[] storage array, uint256 element) internal view returns (uint256) { + if (array.length == 0) { + return 0; + } + + uint256 low = 0; + uint256 high = array.length; + + while (low < high) { + uint256 mid = Math.average(low, high); + + // Note that mid will always be strictly less than high (i.e. it will be a valid array index) + // because Math.average rounds down (it does integer division with truncation). + if (array[mid] > element) { + high = mid; + } else { + low = mid + 1; + } + } + + // At this point `low` is the exclusive upper bound. We will return the inclusive upper bound. + if (low > 0 && array[low - 1] == element) { + return low - 1; + } else { + return low; + } + } +} diff --git a/node_modules/openzeppelin-solidity/contracts/utils/ReentrancyGuard.sol b/node_modules/openzeppelin-solidity/contracts/utils/ReentrancyGuard.sol new file mode 100644 index 0000000..86ab57c --- /dev/null +++ b/node_modules/openzeppelin-solidity/contracts/utils/ReentrancyGuard.sol @@ -0,0 +1,32 @@ +pragma solidity ^0.5.0; + +/** + * @title Helps contracts guard against reentrancy attacks. + * @author Remco Bloemen , Eenae + * @dev If you mark a function `nonReentrant`, you should also + * mark it `external`. + */ +contract ReentrancyGuard { + /// @dev counter to allow mutex lock with only one SSTORE operation + uint256 private _guardCounter; + + constructor () internal { + // The counter starts at one to prevent changing it from zero to a non-zero + // value, which is a more expensive operation. + _guardCounter = 1; + } + + /** + * @dev Prevents a contract from calling itself, directly or indirectly. + * Calling a `nonReentrant` function from another `nonReentrant` + * function is not supported. It is possible to prevent this from happening + * by making the `nonReentrant` function external, and make it call a + * `private` function that does the actual work. + */ + modifier nonReentrant() { + _guardCounter += 1; + uint256 localCounter = _guardCounter; + _; + require(localCounter == _guardCounter); + } +} diff --git a/node_modules/openzeppelin-solidity/package.json b/node_modules/openzeppelin-solidity/package.json new file mode 100644 index 0000000..76032d6 --- /dev/null +++ b/node_modules/openzeppelin-solidity/package.json @@ -0,0 +1,94 @@ +{ + "_args": [ + [ + "openzeppelin-solidity@2.1.1", + "/Users/talgya/DAPPS/smartpiggiesGithub/amerigo/explorer2" + ] + ], + "_from": "openzeppelin-solidity@2.1.1", + "_id": "openzeppelin-solidity@2.1.1", + "_inBundle": false, + "_integrity": "sha512-kvVI/2n3oYfVYP53rUw+q6QNPlorwYRFaGu/Zs+TWFw2tKlnrz7UXh0UTWYd3Sfbq6eOo4XXnGv4bgcKguOrWg==", + "_location": "/openzeppelin-solidity", + "_phantomChildren": {}, + "_requested": { + "type": "version", + "registry": true, + "raw": "openzeppelin-solidity@2.1.1", + "name": "openzeppelin-solidity", + "escapedName": "openzeppelin-solidity", + "rawSpec": "2.1.1", + "saveSpec": null, + "fetchSpec": "2.1.1" + }, + "_requiredBy": [ + "/" + ], + "_resolved": "https://registry.npmjs.org/openzeppelin-solidity/-/openzeppelin-solidity-2.1.1.tgz", + "_spec": "2.1.1", + "_where": "/Users/talgya/DAPPS/smartpiggiesGithub/amerigo/explorer2", + "author": { + "name": "OpenZeppelin Community", + "email": "maintainers@openzeppelin.org" + }, + "bugs": { + "url": "https://github.com/OpenZeppelin/zeppelin-solidity/issues" + }, + "dependencies": {}, + "description": "Secure Smart Contract library for Solidity", + "devDependencies": { + "chai": "^4.1.2", + "chai-bignumber": "^2.0.2", + "coveralls": "^3.0.1", + "eslint": "^4.19.1", + "eslint-config-standard": "^10.2.1", + "eslint-plugin-import": "^2.13.0", + "eslint-plugin-mocha-no-only": "^1.1.0", + "eslint-plugin-node": "^5.2.1", + "eslint-plugin-promise": "^3.8.0", + "eslint-plugin-standard": "^3.1.0", + "ethereumjs-util": "^6.0.0", + "ethjs-abi": "^0.2.1", + "ganache-cli": "6.1.8", + "pify": "^4.0.1", + "solhint": "^1.5.0", + "solidity-coverage": "^0.5.4", + "truffle": "^4.1.13", + "web3-utils": "^1.0.0-beta.34" + }, + "files": [ + "build", + "contracts", + "test" + ], + "homepage": "https://github.com/OpenZeppelin/zeppelin-solidity", + "keywords": [ + "solidity", + "ethereum", + "smart", + "contracts", + "security", + "zeppelin" + ], + "license": "MIT", + "name": "openzeppelin-solidity", + "repository": { + "type": "git", + "url": "git+https://github.com/OpenZeppelin/zeppelin-solidity.git" + }, + "scripts": { + "build": "scripts/build.sh", + "compile": "scripts/compile.sh", + "console": "truffle console", + "coverage": "scripts/coverage.sh", + "lint": "npm run lint:js && npm run lint:sol", + "lint:fix": "npm run lint:js:fix", + "lint:js": "eslint .", + "lint:js:fix": "eslint . --fix", + "lint:sol": "solhint --max-warnings 0 \"contracts/**/*.sol\"", + "prepack": "npm run build", + "test": "npm run compile && scripts/test.sh", + "version": "scripts/version.js" + }, + "version": "2.1.1" +} diff --git a/node_modules/openzeppelin-solidity/test/TESTING.md b/node_modules/openzeppelin-solidity/test/TESTING.md new file mode 100644 index 0000000..c5d87ca --- /dev/null +++ b/node_modules/openzeppelin-solidity/test/TESTING.md @@ -0,0 +1,3 @@ +## Testing + +Unit test are critical to the OpenZeppelin framework. They help ensure code quality and mitigate against security vulnerabilities. The directory structure within the `/tests` directory corresponds to the `/contracts` directory. OpenZeppelin uses Mocha’s JavaScript testing framework and Chai’s assertion library. To learn more about how to tests are structured, please reference OpenZeppelin’s Testing Guide. diff --git a/node_modules/openzeppelin-solidity/test/access/Roles.test.js b/node_modules/openzeppelin-solidity/test/access/Roles.test.js new file mode 100644 index 0000000..15fffec --- /dev/null +++ b/node_modules/openzeppelin-solidity/test/access/Roles.test.js @@ -0,0 +1,64 @@ +const shouldFail = require('../helpers/shouldFail'); +const { ZERO_ADDRESS } = require('../helpers/constants'); + +const RolesMock = artifacts.require('RolesMock'); + +require('./../helpers/setup'); + +contract('Roles', function ([_, authorized, otherAuthorized, anyone]) { + beforeEach(async function () { + this.roles = await RolesMock.new(); + }); + + it('reverts when querying roles for the null account', async function () { + await shouldFail.reverting(this.roles.has(ZERO_ADDRESS)); + }); + + context('initially', function () { + it('doesn\'t pre-assign roles', async function () { + (await this.roles.has(authorized)).should.equal(false); + (await this.roles.has(otherAuthorized)).should.equal(false); + (await this.roles.has(anyone)).should.equal(false); + }); + + describe('adding roles', function () { + it('adds roles to a single account', async function () { + await this.roles.add(authorized); + (await this.roles.has(authorized)).should.equal(true); + (await this.roles.has(anyone)).should.equal(false); + }); + + it('reverts when adding roles to an already assigned account', async function () { + await this.roles.add(authorized); + await shouldFail.reverting(this.roles.add(authorized)); + }); + + it('reverts when adding roles to the null account', async function () { + await shouldFail.reverting(this.roles.add(ZERO_ADDRESS)); + }); + }); + }); + + context('with added roles', function () { + beforeEach(async function () { + await this.roles.add(authorized); + await this.roles.add(otherAuthorized); + }); + + describe('removing roles', function () { + it('removes a single role', async function () { + await this.roles.remove(authorized); + (await this.roles.has(authorized)).should.equal(false); + (await this.roles.has(otherAuthorized)).should.equal(true); + }); + + it('reverts when removing unassigned roles', async function () { + await shouldFail.reverting(this.roles.remove(anyone)); + }); + + it('reverts when removing roles from the null account', async function () { + await shouldFail.reverting(this.roles.remove(ZERO_ADDRESS)); + }); + }); + }); +}); diff --git a/node_modules/openzeppelin-solidity/test/access/roles/CapperRole.test.js b/node_modules/openzeppelin-solidity/test/access/roles/CapperRole.test.js new file mode 100644 index 0000000..a79944a --- /dev/null +++ b/node_modules/openzeppelin-solidity/test/access/roles/CapperRole.test.js @@ -0,0 +1,11 @@ +const { shouldBehaveLikePublicRole } = require('../../access/roles/PublicRole.behavior'); +const CapperRoleMock = artifacts.require('CapperRoleMock'); + +contract('CapperRole', function ([_, capper, otherCapper, ...otherAccounts]) { + beforeEach(async function () { + this.contract = await CapperRoleMock.new({ from: capper }); + await this.contract.addCapper(otherCapper, { from: capper }); + }); + + shouldBehaveLikePublicRole(capper, otherCapper, otherAccounts, 'capper'); +}); diff --git a/node_modules/openzeppelin-solidity/test/access/roles/MinterRole.test.js b/node_modules/openzeppelin-solidity/test/access/roles/MinterRole.test.js new file mode 100644 index 0000000..b2e70b5 --- /dev/null +++ b/node_modules/openzeppelin-solidity/test/access/roles/MinterRole.test.js @@ -0,0 +1,11 @@ +const { shouldBehaveLikePublicRole } = require('../../access/roles/PublicRole.behavior'); +const MinterRoleMock = artifacts.require('MinterRoleMock'); + +contract('MinterRole', function ([_, minter, otherMinter, ...otherAccounts]) { + beforeEach(async function () { + this.contract = await MinterRoleMock.new({ from: minter }); + await this.contract.addMinter(otherMinter, { from: minter }); + }); + + shouldBehaveLikePublicRole(minter, otherMinter, otherAccounts, 'minter'); +}); diff --git a/node_modules/openzeppelin-solidity/test/access/roles/PauserRole.test.js b/node_modules/openzeppelin-solidity/test/access/roles/PauserRole.test.js new file mode 100644 index 0000000..927e46c --- /dev/null +++ b/node_modules/openzeppelin-solidity/test/access/roles/PauserRole.test.js @@ -0,0 +1,11 @@ +const { shouldBehaveLikePublicRole } = require('../../access/roles/PublicRole.behavior'); +const PauserRoleMock = artifacts.require('PauserRoleMock'); + +contract('PauserRole', function ([_, pauser, otherPauser, ...otherAccounts]) { + beforeEach(async function () { + this.contract = await PauserRoleMock.new({ from: pauser }); + await this.contract.addPauser(otherPauser, { from: pauser }); + }); + + shouldBehaveLikePublicRole(pauser, otherPauser, otherAccounts, 'pauser'); +}); diff --git a/node_modules/openzeppelin-solidity/test/access/roles/PublicRole.behavior.js b/node_modules/openzeppelin-solidity/test/access/roles/PublicRole.behavior.js new file mode 100644 index 0000000..d558c13 --- /dev/null +++ b/node_modules/openzeppelin-solidity/test/access/roles/PublicRole.behavior.js @@ -0,0 +1,121 @@ +const shouldFail = require('../../helpers/shouldFail'); +const { ZERO_ADDRESS } = require('../../helpers/constants'); +const expectEvent = require('../../helpers/expectEvent'); + +require('../../helpers/setup'); + +function capitalize (str) { + return str.replace(/\b\w/g, l => l.toUpperCase()); +} + +function shouldBehaveLikePublicRole (authorized, otherAuthorized, [anyone], rolename, manager) { + rolename = capitalize(rolename); + + describe('should behave like public role', function () { + beforeEach('check preconditions', async function () { + (await this.contract[`is${rolename}`](authorized)).should.equal(true); + (await this.contract[`is${rolename}`](otherAuthorized)).should.equal(true); + (await this.contract[`is${rolename}`](anyone)).should.equal(false); + }); + + if (manager === undefined) { // Managed roles are only assigned by the manager, and none are set at construction + it('emits events during construction', async function () { + await expectEvent.inConstruction(this.contract, `${rolename}Added`, { + account: authorized, + }); + }); + } + + it('reverts when querying roles for the null account', async function () { + await shouldFail.reverting(this.contract[`is${rolename}`](ZERO_ADDRESS)); + }); + + describe('access control', function () { + context('from authorized account', function () { + const from = authorized; + + it('allows access', async function () { + await this.contract[`only${rolename}Mock`]({ from }); + }); + }); + + context('from unauthorized account', function () { + const from = anyone; + + it('reverts', async function () { + await shouldFail.reverting(this.contract[`only${rolename}Mock`]({ from })); + }); + }); + }); + + describe('add', function () { + const from = manager === undefined ? authorized : manager; + + context(`from ${manager ? 'the manager' : 'a role-haver'} account`, function () { + it('adds role to a new account', async function () { + await this.contract[`add${rolename}`](anyone, { from }); + (await this.contract[`is${rolename}`](anyone)).should.equal(true); + }); + + it(`emits a ${rolename}Added event`, async function () { + const { logs } = await this.contract[`add${rolename}`](anyone, { from }); + expectEvent.inLogs(logs, `${rolename}Added`, { account: anyone }); + }); + + it('reverts when adding role to an already assigned account', async function () { + await shouldFail.reverting(this.contract[`add${rolename}`](authorized, { from })); + }); + + it('reverts when adding role to the null account', async function () { + await shouldFail.reverting(this.contract[`add${rolename}`](ZERO_ADDRESS, { from })); + }); + }); + }); + + describe('remove', function () { + // Non-managed roles have no restrictions on the mocked '_remove' function (exposed via 'remove'). + const from = manager || anyone; + + context(`from ${manager ? 'the manager' : 'any'} account`, function () { + it('removes role from an already assigned account', async function () { + await this.contract[`remove${rolename}`](authorized, { from }); + (await this.contract[`is${rolename}`](authorized)).should.equal(false); + (await this.contract[`is${rolename}`](otherAuthorized)).should.equal(true); + }); + + it(`emits a ${rolename}Removed event`, async function () { + const { logs } = await this.contract[`remove${rolename}`](authorized, { from }); + expectEvent.inLogs(logs, `${rolename}Removed`, { account: authorized }); + }); + + it('reverts when removing from an unassigned account', async function () { + await shouldFail.reverting(this.contract[`remove${rolename}`](anyone), { from }); + }); + + it('reverts when removing role from the null account', async function () { + await shouldFail.reverting(this.contract[`remove${rolename}`](ZERO_ADDRESS), { from }); + }); + }); + }); + + describe('renouncing roles', function () { + it('renounces an assigned role', async function () { + await this.contract[`renounce${rolename}`]({ from: authorized }); + (await this.contract[`is${rolename}`](authorized)).should.equal(false); + }); + + it(`emits a ${rolename}Removed event`, async function () { + const { logs } = await this.contract[`renounce${rolename}`]({ from: authorized }); + expectEvent.inLogs(logs, `${rolename}Removed`, { account: authorized }); + }); + + it('reverts when renouncing unassigned role', async function () { + await shouldFail.reverting(this.contract[`renounce${rolename}`]({ from: anyone })); + }); + }); + }); +} + +module.exports = { + shouldBehaveLikePublicRole, +}; diff --git a/node_modules/openzeppelin-solidity/test/access/roles/SignerRole.test.js b/node_modules/openzeppelin-solidity/test/access/roles/SignerRole.test.js new file mode 100644 index 0000000..317c100 --- /dev/null +++ b/node_modules/openzeppelin-solidity/test/access/roles/SignerRole.test.js @@ -0,0 +1,11 @@ +const { shouldBehaveLikePublicRole } = require('../../access/roles/PublicRole.behavior'); +const SignerRoleMock = artifacts.require('SignerRoleMock'); + +contract('SignerRole', function ([_, signer, otherSigner, ...otherAccounts]) { + beforeEach(async function () { + this.contract = await SignerRoleMock.new({ from: signer }); + await this.contract.addSigner(otherSigner, { from: signer }); + }); + + shouldBehaveLikePublicRole(signer, otherSigner, otherAccounts, 'signer'); +}); diff --git a/node_modules/openzeppelin-solidity/test/access/roles/WhitelistAdminRole.test.js b/node_modules/openzeppelin-solidity/test/access/roles/WhitelistAdminRole.test.js new file mode 100644 index 0000000..e59dcd8 --- /dev/null +++ b/node_modules/openzeppelin-solidity/test/access/roles/WhitelistAdminRole.test.js @@ -0,0 +1,11 @@ +const { shouldBehaveLikePublicRole } = require('../../access/roles/PublicRole.behavior'); +const WhitelistAdminRoleMock = artifacts.require('WhitelistAdminRoleMock'); + +contract('WhitelistAdminRole', function ([_, whitelistAdmin, otherWhitelistAdmin, ...otherAccounts]) { + beforeEach(async function () { + this.contract = await WhitelistAdminRoleMock.new({ from: whitelistAdmin }); + await this.contract.addWhitelistAdmin(otherWhitelistAdmin, { from: whitelistAdmin }); + }); + + shouldBehaveLikePublicRole(whitelistAdmin, otherWhitelistAdmin, otherAccounts, 'whitelistAdmin'); +}); diff --git a/node_modules/openzeppelin-solidity/test/access/roles/WhitelistedRole.test.js b/node_modules/openzeppelin-solidity/test/access/roles/WhitelistedRole.test.js new file mode 100644 index 0000000..e578f6f --- /dev/null +++ b/node_modules/openzeppelin-solidity/test/access/roles/WhitelistedRole.test.js @@ -0,0 +1,12 @@ +const { shouldBehaveLikePublicRole } = require('../../access/roles/PublicRole.behavior'); +const WhitelistedRoleMock = artifacts.require('WhitelistedRoleMock'); + +contract('WhitelistedRole', function ([_, whitelisted, otherWhitelisted, whitelistAdmin, ...otherAccounts]) { + beforeEach(async function () { + this.contract = await WhitelistedRoleMock.new({ from: whitelistAdmin }); + await this.contract.addWhitelisted(whitelisted, { from: whitelistAdmin }); + await this.contract.addWhitelisted(otherWhitelisted, { from: whitelistAdmin }); + }); + + shouldBehaveLikePublicRole(whitelisted, otherWhitelisted, otherAccounts, 'whitelisted', whitelistAdmin); +}); diff --git a/node_modules/openzeppelin-solidity/test/crowdsale/AllowanceCrowdsale.test.js b/node_modules/openzeppelin-solidity/test/crowdsale/AllowanceCrowdsale.test.js new file mode 100644 index 0000000..4a53c5f --- /dev/null +++ b/node_modules/openzeppelin-solidity/test/crowdsale/AllowanceCrowdsale.test.js @@ -0,0 +1,86 @@ +const expectEvent = require('../helpers/expectEvent'); +const { ether } = require('../helpers/ether'); +const shouldFail = require('../helpers/shouldFail'); +const { balanceDifference } = require('../helpers/balanceDifference'); +const { ZERO_ADDRESS } = require('../helpers/constants'); + +const { BigNumber } = require('../helpers/setup'); + +const AllowanceCrowdsaleImpl = artifacts.require('AllowanceCrowdsaleImpl'); +const SimpleToken = artifacts.require('SimpleToken'); + +contract('AllowanceCrowdsale', function ([_, investor, wallet, purchaser, tokenWallet]) { + const rate = new BigNumber(1); + const value = ether(0.42); + const expectedTokenAmount = rate.mul(value); + const tokenAllowance = new BigNumber('1e22'); + + beforeEach(async function () { + this.token = await SimpleToken.new({ from: tokenWallet }); + this.crowdsale = await AllowanceCrowdsaleImpl.new(rate, wallet, this.token.address, tokenWallet); + await this.token.approve(this.crowdsale.address, tokenAllowance, { from: tokenWallet }); + }); + + describe('accepting payments', function () { + it('should have token wallet', async function () { + (await this.crowdsale.tokenWallet()).should.be.equal(tokenWallet); + }); + + it('should accept sends', async function () { + await this.crowdsale.send(value); + }); + + it('should accept payments', async function () { + await this.crowdsale.buyTokens(investor, { value: value, from: purchaser }); + }); + }); + + describe('high-level purchase', function () { + it('should log purchase', async function () { + const { logs } = await this.crowdsale.sendTransaction({ value: value, from: investor }); + expectEvent.inLogs(logs, 'TokensPurchased', { + purchaser: investor, + beneficiary: investor, + value: value, + amount: expectedTokenAmount, + }); + }); + + it('should assign tokens to sender', async function () { + await this.crowdsale.sendTransaction({ value: value, from: investor }); + (await this.token.balanceOf(investor)).should.be.bignumber.equal(expectedTokenAmount); + }); + + it('should forward funds to wallet', async function () { + (await balanceDifference(wallet, () => + this.crowdsale.sendTransaction({ value, from: investor })) + ).should.be.bignumber.equal(value); + }); + }); + + describe('check remaining allowance', function () { + it('should report correct allowace left', async function () { + const remainingAllowance = tokenAllowance - expectedTokenAmount; + await this.crowdsale.buyTokens(investor, { value: value, from: purchaser }); + (await this.crowdsale.remainingTokens()).should.be.bignumber.equal(remainingAllowance); + }); + + context('when the allowance is larger than the token amount', function () { + beforeEach(async function () { + const amount = await this.token.balanceOf(tokenWallet); + await this.token.approve(this.crowdsale.address, amount.plus(1), { from: tokenWallet }); + }); + + it('should report the amount instead of the allowance', async function () { + (await this.crowdsale.remainingTokens()).should.be.bignumber.equal(await this.token.balanceOf(tokenWallet)); + }); + }); + }); + + describe('when token wallet is different from token address', function () { + it('creation reverts', async function () { + this.token = await SimpleToken.new({ from: tokenWallet }); + await shouldFail.reverting(AllowanceCrowdsaleImpl.new(rate, wallet, this.token.address, ZERO_ADDRESS)); + }); + }); +}); diff --git a/node_modules/openzeppelin-solidity/test/crowdsale/CappedCrowdsale.test.js b/node_modules/openzeppelin-solidity/test/crowdsale/CappedCrowdsale.test.js new file mode 100644 index 0000000..8199ec3 --- /dev/null +++ b/node_modules/openzeppelin-solidity/test/crowdsale/CappedCrowdsale.test.js @@ -0,0 +1,62 @@ +const { ether } = require('../helpers/ether'); +const shouldFail = require('../helpers/shouldFail'); + +const { BigNumber } = require('../helpers/setup'); + +const CappedCrowdsaleImpl = artifacts.require('CappedCrowdsaleImpl'); +const SimpleToken = artifacts.require('SimpleToken'); + +contract('CappedCrowdsale', function ([_, wallet]) { + const rate = new BigNumber(1); + const cap = ether(100); + const lessThanCap = ether(60); + const tokenSupply = new BigNumber('1e22'); + + beforeEach(async function () { + this.token = await SimpleToken.new(); + }); + + it('rejects a cap of zero', async function () { + await shouldFail.reverting(CappedCrowdsaleImpl.new(rate, wallet, this.token.address, 0)); + }); + + context('with crowdsale', function () { + beforeEach(async function () { + this.crowdsale = await CappedCrowdsaleImpl.new(rate, wallet, this.token.address, cap); + await this.token.transfer(this.crowdsale.address, tokenSupply); + }); + + describe('accepting payments', function () { + it('should accept payments within cap', async function () { + await this.crowdsale.send(cap.minus(lessThanCap)); + await this.crowdsale.send(lessThanCap); + }); + + it('should reject payments outside cap', async function () { + await this.crowdsale.send(cap); + await shouldFail.reverting(this.crowdsale.send(1)); + }); + + it('should reject payments that exceed cap', async function () { + await shouldFail.reverting(this.crowdsale.send(cap.plus(1))); + }); + }); + + describe('ending', function () { + it('should not reach cap if sent under cap', async function () { + await this.crowdsale.send(lessThanCap); + (await this.crowdsale.capReached()).should.equal(false); + }); + + it('should not reach cap if sent just under cap', async function () { + await this.crowdsale.send(cap.minus(1)); + (await this.crowdsale.capReached()).should.equal(false); + }); + + it('should reach cap if cap sent', async function () { + await this.crowdsale.send(cap); + (await this.crowdsale.capReached()).should.equal(true); + }); + }); + }); +}); diff --git a/node_modules/openzeppelin-solidity/test/crowdsale/Crowdsale.test.js b/node_modules/openzeppelin-solidity/test/crowdsale/Crowdsale.test.js new file mode 100644 index 0000000..dbd33f1 --- /dev/null +++ b/node_modules/openzeppelin-solidity/test/crowdsale/Crowdsale.test.js @@ -0,0 +1,126 @@ +const expectEvent = require('../helpers/expectEvent'); +const shouldFail = require('../helpers/shouldFail'); +const { balanceDifference } = require('../helpers/balanceDifference'); +const { ether } = require('../helpers/ether'); +const { ZERO_ADDRESS } = require('../helpers/constants'); + +const { BigNumber } = require('../helpers/setup'); + +const Crowdsale = artifacts.require('CrowdsaleMock'); +const SimpleToken = artifacts.require('SimpleToken'); + +contract('Crowdsale', function ([_, investor, wallet, purchaser]) { + const rate = new BigNumber(1); + const value = ether(42); + const tokenSupply = new BigNumber('1e22'); + const expectedTokenAmount = rate.mul(value); + + it('requires a non-null token', async function () { + await shouldFail.reverting( + Crowdsale.new(rate, wallet, ZERO_ADDRESS) + ); + }); + + context('with token', async function () { + beforeEach(async function () { + this.token = await SimpleToken.new(); + }); + + it('requires a non-zero rate', async function () { + await shouldFail.reverting( + Crowdsale.new(0, wallet, this.token.address) + ); + }); + + it('requires a non-null wallet', async function () { + await shouldFail.reverting( + Crowdsale.new(rate, ZERO_ADDRESS, this.token.address) + ); + }); + + context('once deployed', async function () { + beforeEach(async function () { + this.crowdsale = await Crowdsale.new(rate, wallet, this.token.address); + await this.token.transfer(this.crowdsale.address, tokenSupply); + }); + + describe('accepting payments', function () { + describe('bare payments', function () { + it('should accept payments', async function () { + await this.crowdsale.send(value, { from: purchaser }); + }); + + it('reverts on zero-valued payments', async function () { + await shouldFail.reverting( + this.crowdsale.send(0, { from: purchaser }) + ); + }); + }); + + describe('buyTokens', function () { + it('should accept payments', async function () { + await this.crowdsale.buyTokens(investor, { value: value, from: purchaser }); + }); + + it('reverts on zero-valued payments', async function () { + await shouldFail.reverting( + this.crowdsale.buyTokens(investor, { value: 0, from: purchaser }) + ); + }); + + it('requires a non-null beneficiary', async function () { + await shouldFail.reverting( + this.crowdsale.buyTokens(ZERO_ADDRESS, { value: value, from: purchaser }) + ); + }); + }); + }); + + describe('high-level purchase', function () { + it('should log purchase', async function () { + const { logs } = await this.crowdsale.sendTransaction({ value: value, from: investor }); + expectEvent.inLogs(logs, 'TokensPurchased', { + purchaser: investor, + beneficiary: investor, + value: value, + amount: expectedTokenAmount, + }); + }); + + it('should assign tokens to sender', async function () { + await this.crowdsale.sendTransaction({ value: value, from: investor }); + (await this.token.balanceOf(investor)).should.be.bignumber.equal(expectedTokenAmount); + }); + + it('should forward funds to wallet', async function () { + (await balanceDifference(wallet, () => + this.crowdsale.sendTransaction({ value, from: investor })) + ).should.be.bignumber.equal(value); + }); + }); + + describe('low-level purchase', function () { + it('should log purchase', async function () { + const { logs } = await this.crowdsale.buyTokens(investor, { value: value, from: purchaser }); + expectEvent.inLogs(logs, 'TokensPurchased', { + purchaser: purchaser, + beneficiary: investor, + value: value, + amount: expectedTokenAmount, + }); + }); + + it('should assign tokens to beneficiary', async function () { + await this.crowdsale.buyTokens(investor, { value, from: purchaser }); + (await this.token.balanceOf(investor)).should.be.bignumber.equal(expectedTokenAmount); + }); + + it('should forward funds to wallet', async function () { + (await balanceDifference(wallet, () => + this.crowdsale.buyTokens(investor, { value, from: purchaser })) + ).should.be.bignumber.equal(value); + }); + }); + }); + }); +}); diff --git a/node_modules/openzeppelin-solidity/test/crowdsale/FinalizableCrowdsale.test.js b/node_modules/openzeppelin-solidity/test/crowdsale/FinalizableCrowdsale.test.js new file mode 100644 index 0000000..778dbcb --- /dev/null +++ b/node_modules/openzeppelin-solidity/test/crowdsale/FinalizableCrowdsale.test.js @@ -0,0 +1,49 @@ +const expectEvent = require('../helpers/expectEvent'); +const time = require('../helpers/time'); +const shouldFail = require('../helpers/shouldFail'); + +const { BigNumber } = require('../helpers/setup'); + +const FinalizableCrowdsaleImpl = artifacts.require('FinalizableCrowdsaleImpl'); +const ERC20 = artifacts.require('ERC20'); + +contract('FinalizableCrowdsale', function ([_, wallet, anyone]) { + const rate = new BigNumber(1000); + + before(async function () { + // Advance to the next block to correctly read time in the solidity "now" function interpreted by ganache + await time.advanceBlock(); + }); + + beforeEach(async function () { + this.openingTime = (await time.latest()) + time.duration.weeks(1); + this.closingTime = this.openingTime + time.duration.weeks(1); + this.afterClosingTime = this.closingTime + time.duration.seconds(1); + + this.token = await ERC20.new(); + this.crowdsale = await FinalizableCrowdsaleImpl.new( + this.openingTime, this.closingTime, rate, wallet, this.token.address + ); + }); + + it('cannot be finalized before ending', async function () { + await shouldFail.reverting(this.crowdsale.finalize({ from: anyone })); + }); + + it('can be finalized by anyone after ending', async function () { + await time.increaseTo(this.afterClosingTime); + await this.crowdsale.finalize({ from: anyone }); + }); + + it('cannot be finalized twice', async function () { + await time.increaseTo(this.afterClosingTime); + await this.crowdsale.finalize({ from: anyone }); + await shouldFail.reverting(this.crowdsale.finalize({ from: anyone })); + }); + + it('logs finalized', async function () { + await time.increaseTo(this.afterClosingTime); + const { logs } = await this.crowdsale.finalize({ from: anyone }); + expectEvent.inLogs(logs, 'CrowdsaleFinalized'); + }); +}); diff --git a/node_modules/openzeppelin-solidity/test/crowdsale/IncreasingPriceCrowdsale.test.js b/node_modules/openzeppelin-solidity/test/crowdsale/IncreasingPriceCrowdsale.test.js new file mode 100644 index 0000000..c9ba167 --- /dev/null +++ b/node_modules/openzeppelin-solidity/test/crowdsale/IncreasingPriceCrowdsale.test.js @@ -0,0 +1,119 @@ +const { ether } = require('../helpers/ether'); +const time = require('../helpers/time'); +const shouldFail = require('../helpers/shouldFail'); + +const { BigNumber } = require('../helpers/setup'); + +const IncreasingPriceCrowdsaleImpl = artifacts.require('IncreasingPriceCrowdsaleImpl'); +const SimpleToken = artifacts.require('SimpleToken'); + +contract('IncreasingPriceCrowdsale', function ([_, investor, wallet, purchaser]) { + const value = ether(1); + const tokenSupply = new BigNumber('1e22'); + + describe('rate during crowdsale should change at a fixed step every block', async function () { + const initialRate = new BigNumber(9166); + const finalRate = new BigNumber(5500); + const rateAtTime150 = new BigNumber(9166); + const rateAtTime300 = new BigNumber(9165); + const rateAtTime1500 = new BigNumber(9157); + const rateAtTime30 = new BigNumber(9166); + const rateAtTime150000 = new BigNumber(8257); + const rateAtTime450000 = new BigNumber(6439); + + beforeEach(async function () { + await time.advanceBlock(); + this.startTime = (await time.latest()) + time.duration.weeks(1); + this.closingTime = this.startTime + time.duration.weeks(1); + this.afterClosingTime = this.closingTime + time.duration.seconds(1); + this.token = await SimpleToken.new(); + }); + + it('reverts with a final rate larger than the initial rate', async function () { + await shouldFail.reverting(IncreasingPriceCrowdsaleImpl.new( + this.startTime, this.closingTime, wallet, this.token.address, initialRate, initialRate.plus(1) + )); + }); + + it('reverts with a final equal to the initial rate', async function () { + await shouldFail.reverting(IncreasingPriceCrowdsaleImpl.new( + this.startTime, this.closingTime, wallet, this.token.address, initialRate, initialRate + )); + }); + + it('reverts with a final rate of zero', async function () { + await shouldFail.reverting(IncreasingPriceCrowdsaleImpl.new( + this.startTime, this.closingTime, wallet, this.token.address, initialRate, 0 + )); + }); + + context('with crowdsale', function () { + beforeEach(async function () { + this.crowdsale = await IncreasingPriceCrowdsaleImpl.new( + this.startTime, this.closingTime, wallet, this.token.address, initialRate, finalRate + ); + await this.token.transfer(this.crowdsale.address, tokenSupply); + }); + + it('should have initial and final rate', async function () { + (await this.crowdsale.initialRate()).should.be.bignumber.equal(initialRate); + (await this.crowdsale.finalRate()).should.be.bignumber.equal(finalRate); + }); + + it('reverts when the base Crowdsale\'s rate function is called', async function () { + await shouldFail.reverting(this.crowdsale.rate()); + }); + + it('returns a rate of 0 before the crowdsale starts', async function () { + (await this.crowdsale.getCurrentRate()).should.be.bignumber.equal(0); + }); + + it('returns a rate of 0 after the crowdsale ends', async function () { + await time.increaseTo(this.afterClosingTime); + (await this.crowdsale.getCurrentRate()).should.be.bignumber.equal(0); + }); + + it('at start', async function () { + await time.increaseTo(this.startTime); + await this.crowdsale.buyTokens(investor, { value, from: purchaser }); + (await this.token.balanceOf(investor)).should.be.bignumber.equal(value.mul(initialRate)); + }); + + it('at time 150', async function () { + await time.increaseTo(this.startTime + 150); + await this.crowdsale.buyTokens(investor, { value, from: purchaser }); + (await this.token.balanceOf(investor)).should.be.bignumber.equal(value.mul(rateAtTime150)); + }); + + it('at time 300', async function () { + await time.increaseTo(this.startTime + 300); + await this.crowdsale.buyTokens(investor, { value, from: purchaser }); + (await this.token.balanceOf(investor)).should.be.bignumber.equal(value.mul(rateAtTime300)); + }); + + it('at time 1500', async function () { + await time.increaseTo(this.startTime + 1500); + await this.crowdsale.buyTokens(investor, { value, from: purchaser }); + (await this.token.balanceOf(investor)).should.be.bignumber.equal(value.mul(rateAtTime1500)); + }); + + it('at time 30', async function () { + await time.increaseTo(this.startTime + 30); + await this.crowdsale.buyTokens(investor, { value, from: purchaser }); + (await this.token.balanceOf(investor)).should.be.bignumber.equal(value.mul(rateAtTime30)); + }); + + it('at time 150000', async function () { + await time.increaseTo(this.startTime + 150000); + await this.crowdsale.buyTokens(investor, { value, from: purchaser }); + (await this.token.balanceOf(investor)).should.be.bignumber.equal(value.mul(rateAtTime150000)); + }); + + it('at time 450000', async function () { + await time.increaseTo(this.startTime + 450000); + await this.crowdsale.buyTokens(investor, { value, from: purchaser }); + (await this.token.balanceOf(investor)).should.be.bignumber.equal(value.mul(rateAtTime450000)); + }); + }); + }); +}); diff --git a/node_modules/openzeppelin-solidity/test/crowdsale/IndividuallyCappedCrowdsale.test.js b/node_modules/openzeppelin-solidity/test/crowdsale/IndividuallyCappedCrowdsale.test.js new file mode 100644 index 0000000..36de85f --- /dev/null +++ b/node_modules/openzeppelin-solidity/test/crowdsale/IndividuallyCappedCrowdsale.test.js @@ -0,0 +1,88 @@ +const { ether } = require('../helpers/ether'); +const shouldFail = require('../helpers/shouldFail'); + +const { BigNumber } = require('../helpers/setup'); + +const IndividuallyCappedCrowdsaleImpl = artifacts.require('IndividuallyCappedCrowdsaleImpl'); +const SimpleToken = artifacts.require('SimpleToken'); +const { shouldBehaveLikePublicRole } = require('../access/roles/PublicRole.behavior'); + +contract('IndividuallyCappedCrowdsale', function ( + [_, capper, otherCapper, wallet, alice, bob, charlie, anyone, ...otherAccounts]) { + const rate = new BigNumber(1); + const capAlice = ether(10); + const capBob = ether(2); + const lessThanCapAlice = ether(6); + const lessThanCapBoth = ether(1); + const tokenSupply = new BigNumber('1e22'); + + beforeEach(async function () { + this.token = await SimpleToken.new(); + this.crowdsale = await IndividuallyCappedCrowdsaleImpl.new(rate, wallet, this.token.address, { from: capper }); + }); + + describe('capper role', function () { + beforeEach(async function () { + this.contract = this.crowdsale; + await this.contract.addCapper(otherCapper, { from: capper }); + }); + + shouldBehaveLikePublicRole(capper, otherCapper, otherAccounts, 'capper'); + }); + + describe('individual caps', function () { + it('sets a cap when the sender is a capper', async function () { + await this.crowdsale.setCap(alice, capAlice, { from: capper }); + (await this.crowdsale.getCap(alice)).should.be.bignumber.equal(capAlice); + }); + + it('reverts when a non-capper sets a cap', async function () { + await shouldFail.reverting(this.crowdsale.setCap(alice, capAlice, { from: anyone })); + }); + + context('with individual caps', function () { + beforeEach(async function () { + await this.crowdsale.setCap(alice, capAlice, { from: capper }); + await this.crowdsale.setCap(bob, capBob, { from: capper }); + await this.token.transfer(this.crowdsale.address, tokenSupply); + }); + + describe('accepting payments', function () { + it('should accept payments within cap', async function () { + await this.crowdsale.buyTokens(alice, { value: lessThanCapAlice }); + await this.crowdsale.buyTokens(bob, { value: lessThanCapBoth }); + }); + + it('should reject payments outside cap', async function () { + await this.crowdsale.buyTokens(alice, { value: capAlice }); + await shouldFail.reverting(this.crowdsale.buyTokens(alice, { value: 1 })); + }); + + it('should reject payments that exceed cap', async function () { + await shouldFail.reverting(this.crowdsale.buyTokens(alice, { value: capAlice.plus(1) })); + await shouldFail.reverting(this.crowdsale.buyTokens(bob, { value: capBob.plus(1) })); + }); + + it('should manage independent caps', async function () { + await this.crowdsale.buyTokens(alice, { value: lessThanCapAlice }); + await shouldFail.reverting(this.crowdsale.buyTokens(bob, { value: lessThanCapAlice })); + }); + + it('should default to a cap of zero', async function () { + await shouldFail.reverting(this.crowdsale.buyTokens(charlie, { value: lessThanCapBoth })); + }); + }); + + describe('reporting state', function () { + it('should report correct cap', async function () { + (await this.crowdsale.getCap(alice)).should.be.bignumber.equal(capAlice); + }); + + it('should report actual contribution', async function () { + await this.crowdsale.buyTokens(alice, { value: lessThanCapAlice }); + (await this.crowdsale.getContribution(alice)).should.be.bignumber.equal(lessThanCapAlice); + }); + }); + }); + }); +}); diff --git a/node_modules/openzeppelin-solidity/test/crowdsale/MintedCrowdsale.behavior.js b/node_modules/openzeppelin-solidity/test/crowdsale/MintedCrowdsale.behavior.js new file mode 100644 index 0000000..ec41e49 --- /dev/null +++ b/node_modules/openzeppelin-solidity/test/crowdsale/MintedCrowdsale.behavior.js @@ -0,0 +1,44 @@ +const expectEvent = require('../helpers/expectEvent'); +const { balanceDifference } = require('../helpers/balanceDifference'); + +require('../helpers/setup'); + +function shouldBehaveLikeMintedCrowdsale ([_, investor, wallet, purchaser], rate, value) { + const expectedTokenAmount = rate.mul(value); + + describe('as a minted crowdsale', function () { + describe('accepting payments', function () { + it('should accept payments', async function () { + await this.crowdsale.send(value); + await this.crowdsale.buyTokens(investor, { value: value, from: purchaser }); + }); + }); + + describe('high-level purchase', function () { + it('should log purchase', async function () { + const { logs } = await this.crowdsale.sendTransaction({ value: value, from: investor }); + expectEvent.inLogs(logs, 'TokensPurchased', { + purchaser: investor, + beneficiary: investor, + value: value, + amount: expectedTokenAmount, + }); + }); + + it('should assign tokens to sender', async function () { + await this.crowdsale.sendTransaction({ value: value, from: investor }); + (await this.token.balanceOf(investor)).should.be.bignumber.equal(expectedTokenAmount); + }); + + it('should forward funds to wallet', async function () { + (await balanceDifference(wallet, () => + this.crowdsale.sendTransaction({ value, from: investor })) + ).should.be.bignumber.equal(value); + }); + }); + }); +} + +module.exports = { + shouldBehaveLikeMintedCrowdsale, +}; diff --git a/node_modules/openzeppelin-solidity/test/crowdsale/MintedCrowdsale.test.js b/node_modules/openzeppelin-solidity/test/crowdsale/MintedCrowdsale.test.js new file mode 100644 index 0000000..98e5464 --- /dev/null +++ b/node_modules/openzeppelin-solidity/test/crowdsale/MintedCrowdsale.test.js @@ -0,0 +1,45 @@ +const { shouldBehaveLikeMintedCrowdsale } = require('./MintedCrowdsale.behavior'); +const { ether } = require('../helpers/ether'); +const shouldFail = require('../helpers/shouldFail'); + +const { BigNumber } = require('../helpers/setup'); + +const MintedCrowdsaleImpl = artifacts.require('MintedCrowdsaleImpl'); +const ERC20Mintable = artifacts.require('ERC20Mintable'); +const ERC20 = artifacts.require('ERC20'); + +contract('MintedCrowdsale', function ([_, deployer, investor, wallet, purchaser]) { + const rate = new BigNumber(1000); + const value = ether(5); + + describe('using ERC20Mintable', function () { + beforeEach(async function () { + this.token = await ERC20Mintable.new({ from: deployer }); + this.crowdsale = await MintedCrowdsaleImpl.new(rate, wallet, this.token.address); + + await this.token.addMinter(this.crowdsale.address, { from: deployer }); + await this.token.renounceMinter({ from: deployer }); + }); + + it('crowdsale should be minter', async function () { + (await this.token.isMinter(this.crowdsale.address)).should.equal(true); + }); + + shouldBehaveLikeMintedCrowdsale([_, investor, wallet, purchaser], rate, value); + }); + + describe('using non-mintable token', function () { + beforeEach(async function () { + this.token = await ERC20.new(); + this.crowdsale = await MintedCrowdsaleImpl.new(rate, wallet, this.token.address); + }); + + it('rejects bare payments', async function () { + await shouldFail.reverting(this.crowdsale.send(value)); + }); + + it('rejects token purchases', async function () { + await shouldFail.reverting(this.crowdsale.buyTokens(investor, { value: value, from: purchaser })); + }); + }); +}); diff --git a/node_modules/openzeppelin-solidity/test/crowdsale/PausableCrowdsale.test.js b/node_modules/openzeppelin-solidity/test/crowdsale/PausableCrowdsale.test.js new file mode 100644 index 0000000..2d0d051 --- /dev/null +++ b/node_modules/openzeppelin-solidity/test/crowdsale/PausableCrowdsale.test.js @@ -0,0 +1,46 @@ +const shouldFail = require('../helpers/shouldFail'); + +const PausableCrowdsale = artifacts.require('PausableCrowdsaleImpl'); +const SimpleToken = artifacts.require('SimpleToken'); + +require('../helpers/setup'); + +contract('PausableCrowdsale', function ([_, pauser, wallet, anyone]) { + const rate = 1; + const value = 1; + + beforeEach(async function () { + const from = pauser; + + this.token = await SimpleToken.new({ from }); + this.crowdsale = await PausableCrowdsale.new(rate, wallet, this.token.address, { from }); + await this.token.transfer(this.crowdsale.address, 2 * value, { from }); + }); + + it('purchases work', async function () { + await this.crowdsale.sendTransaction({ from: anyone, value }); + await this.crowdsale.buyTokens(anyone, { from: anyone, value }); + }); + + context('after pause', function () { + beforeEach(async function () { + await this.crowdsale.pause({ from: pauser }); + }); + + it('purchases do not work', async function () { + await shouldFail.reverting(this.crowdsale.sendTransaction({ from: anyone, value })); + await shouldFail.reverting(this.crowdsale.buyTokens(anyone, { from: anyone, value })); + }); + + context('after unpause', function () { + beforeEach(async function () { + await this.crowdsale.unpause({ from: pauser }); + }); + + it('purchases work', async function () { + await this.crowdsale.sendTransaction({ from: anyone, value }); + await this.crowdsale.buyTokens(anyone, { from: anyone, value }); + }); + }); + }); +}); diff --git a/node_modules/openzeppelin-solidity/test/crowdsale/PostDeliveryCrowdsale.test.js b/node_modules/openzeppelin-solidity/test/crowdsale/PostDeliveryCrowdsale.test.js new file mode 100644 index 0000000..e1e3b40 --- /dev/null +++ b/node_modules/openzeppelin-solidity/test/crowdsale/PostDeliveryCrowdsale.test.js @@ -0,0 +1,69 @@ +const time = require('../helpers/time'); +const shouldFail = require('../helpers/shouldFail'); +const { ether } = require('../helpers/ether'); + +const { BigNumber } = require('../helpers/setup'); + +const PostDeliveryCrowdsaleImpl = artifacts.require('PostDeliveryCrowdsaleImpl'); +const SimpleToken = artifacts.require('SimpleToken'); + +contract('PostDeliveryCrowdsale', function ([_, investor, wallet, purchaser]) { + const rate = new BigNumber(1); + const tokenSupply = new BigNumber('1e22'); + + before(async function () { + // Advance to the next block to correctly read time in the solidity "now" function interpreted by ganache + await time.advanceBlock(); + }); + + beforeEach(async function () { + this.openingTime = (await time.latest()) + time.duration.weeks(1); + this.closingTime = this.openingTime + time.duration.weeks(1); + this.afterClosingTime = this.closingTime + time.duration.seconds(1); + this.token = await SimpleToken.new(); + this.crowdsale = await PostDeliveryCrowdsaleImpl.new( + this.openingTime, this.closingTime, rate, wallet, this.token.address + ); + await this.token.transfer(this.crowdsale.address, tokenSupply); + }); + + context('after opening time', function () { + beforeEach(async function () { + await time.increaseTo(this.openingTime); + }); + + context('with bought tokens', function () { + const value = ether(42); + + beforeEach(async function () { + await this.crowdsale.buyTokens(investor, { value: value, from: purchaser }); + }); + + it('does not immediately assign tokens to beneficiaries', async function () { + (await this.crowdsale.balanceOf(investor)).should.be.bignumber.equal(value); + (await this.token.balanceOf(investor)).should.be.bignumber.equal(0); + }); + + it('does not allow beneficiaries to withdraw tokens before crowdsale ends', async function () { + await shouldFail.reverting(this.crowdsale.withdrawTokens(investor)); + }); + + context('after closing time', function () { + beforeEach(async function () { + await time.increaseTo(this.afterClosingTime); + }); + + it('allows beneficiaries to withdraw tokens', async function () { + await this.crowdsale.withdrawTokens(investor); + (await this.crowdsale.balanceOf(investor)).should.be.bignumber.equal(0); + (await this.token.balanceOf(investor)).should.be.bignumber.equal(value); + }); + + it('rejects multiple withdrawals', async function () { + await this.crowdsale.withdrawTokens(investor); + await shouldFail.reverting(this.crowdsale.withdrawTokens(investor)); + }); + }); + }); + }); +}); diff --git a/node_modules/openzeppelin-solidity/test/crowdsale/RefundableCrowdsale.test.js b/node_modules/openzeppelin-solidity/test/crowdsale/RefundableCrowdsale.test.js new file mode 100644 index 0000000..9c8d01c --- /dev/null +++ b/node_modules/openzeppelin-solidity/test/crowdsale/RefundableCrowdsale.test.js @@ -0,0 +1,104 @@ +const { ether } = require('../helpers/ether'); +const { balanceDifference } = require('../helpers/balanceDifference'); +const shouldFail = require('../helpers/shouldFail'); +const time = require('../helpers/time'); +const { ethGetBalance } = require('../helpers/web3'); + +const { BigNumber } = require('../helpers/setup'); + +const RefundableCrowdsaleImpl = artifacts.require('RefundableCrowdsaleImpl'); +const SimpleToken = artifacts.require('SimpleToken'); + +contract('RefundableCrowdsale', function ([_, wallet, investor, purchaser, anyone]) { + const rate = new BigNumber(1); + const goal = ether(50); + const lessThanGoal = ether(45); + const tokenSupply = new BigNumber('1e22'); + + before(async function () { + // Advance to the next block to correctly read time in the solidity "now" function interpreted by ganache + await time.advanceBlock(); + }); + + beforeEach(async function () { + this.openingTime = (await time.latest()) + time.duration.weeks(1); + this.closingTime = this.openingTime + time.duration.weeks(1); + this.afterClosingTime = this.closingTime + time.duration.seconds(1); + this.preWalletBalance = await ethGetBalance(wallet); + + this.token = await SimpleToken.new(); + }); + + it('rejects a goal of zero', async function () { + await shouldFail.reverting( + RefundableCrowdsaleImpl.new(this.openingTime, this.closingTime, rate, wallet, this.token.address, 0) + ); + }); + + context('with crowdsale', function () { + beforeEach(async function () { + this.crowdsale = await RefundableCrowdsaleImpl.new( + this.openingTime, this.closingTime, rate, wallet, this.token.address, goal + ); + + await this.token.transfer(this.crowdsale.address, tokenSupply); + }); + + context('before opening time', function () { + it('denies refunds', async function () { + await shouldFail.reverting(this.crowdsale.claimRefund(investor)); + }); + }); + + context('after opening time', function () { + beforeEach(async function () { + await time.increaseTo(this.openingTime); + }); + + it('denies refunds', async function () { + await shouldFail.reverting(this.crowdsale.claimRefund(investor)); + }); + + context('with unreached goal', function () { + beforeEach(async function () { + await this.crowdsale.sendTransaction({ value: lessThanGoal, from: investor }); + }); + + context('after closing time and finalization', function () { + beforeEach(async function () { + await time.increaseTo(this.afterClosingTime); + await this.crowdsale.finalize({ from: anyone }); + }); + + it('refunds', async function () { + (await balanceDifference(investor, () => + this.crowdsale.claimRefund(investor, { gasPrice: 0 })) + ).should.be.bignumber.equal(lessThanGoal); + }); + }); + }); + + context('with reached goal', function () { + beforeEach(async function () { + await this.crowdsale.sendTransaction({ value: goal, from: investor }); + }); + + context('after closing time and finalization', function () { + beforeEach(async function () { + await time.increaseTo(this.afterClosingTime); + await this.crowdsale.finalize({ from: anyone }); + }); + + it('denies refunds', async function () { + await shouldFail.reverting(this.crowdsale.claimRefund(investor)); + }); + + it('forwards funds to wallet', async function () { + const postWalletBalance = await ethGetBalance(wallet); + postWalletBalance.minus(this.preWalletBalance).should.be.bignumber.equal(goal); + }); + }); + }); + }); + }); +}); diff --git a/node_modules/openzeppelin-solidity/test/crowdsale/RefundablePostDeliveryCrowdsale.test.js b/node_modules/openzeppelin-solidity/test/crowdsale/RefundablePostDeliveryCrowdsale.test.js new file mode 100644 index 0000000..088c731 --- /dev/null +++ b/node_modules/openzeppelin-solidity/test/crowdsale/RefundablePostDeliveryCrowdsale.test.js @@ -0,0 +1,103 @@ +const time = require('../helpers/time'); +const shouldFail = require('../helpers/shouldFail'); +const { ether } = require('../helpers/ether'); + +const BigNumber = web3.BigNumber; + +require('chai') + .use(require('chai-bignumber')(BigNumber)) + .should(); + +const RefundablePostDeliveryCrowdsaleImpl = artifacts.require('RefundablePostDeliveryCrowdsaleImpl'); +const SimpleToken = artifacts.require('SimpleToken'); + +contract('RefundablePostDeliveryCrowdsale', function ([_, investor, wallet, purchaser]) { + const rate = new BigNumber(1); + const tokenSupply = new BigNumber('1e22'); + const goal = ether(100); + + before(async function () { + // Advance to the next block to correctly read time in the solidity "now" function interpreted by ganache + await time.advanceBlock(); + }); + + beforeEach(async function () { + this.openingTime = (await time.latest()) + time.duration.weeks(1); + this.closingTime = this.openingTime + time.duration.weeks(1); + this.afterClosingTime = this.closingTime + time.duration.seconds(1); + this.token = await SimpleToken.new(); + this.crowdsale = await RefundablePostDeliveryCrowdsaleImpl.new( + this.openingTime, this.closingTime, rate, wallet, this.token.address, goal + ); + await this.token.transfer(this.crowdsale.address, tokenSupply); + }); + + context('after opening time', function () { + beforeEach(async function () { + await time.increaseTo(this.openingTime); + }); + + context('with bought tokens below the goal', function () { + const value = goal.sub(1); + + beforeEach(async function () { + await this.crowdsale.buyTokens(investor, { value: value, from: purchaser }); + }); + + it('does not immediately deliver tokens to beneficiaries', async function () { + (await this.crowdsale.balanceOf(investor)).should.be.bignumber.equal(value); + (await this.token.balanceOf(investor)).should.be.bignumber.equal(0); + }); + + it('does not allow beneficiaries to withdraw tokens before crowdsale ends', async function () { + await shouldFail.reverting(this.crowdsale.withdrawTokens(investor)); + }); + + context('after closing time and finalization', function () { + beforeEach(async function () { + await time.increaseTo(this.afterClosingTime); + await this.crowdsale.finalize(); + }); + + it('rejects token withdrawals', async function () { + await shouldFail.reverting(this.crowdsale.withdrawTokens(investor)); + }); + }); + }); + + context('with bought tokens matching the goal', function () { + const value = goal; + + beforeEach(async function () { + await this.crowdsale.buyTokens(investor, { value: value, from: purchaser }); + }); + + it('does not immediately deliver tokens to beneficiaries', async function () { + (await this.crowdsale.balanceOf(investor)).should.be.bignumber.equal(value); + (await this.token.balanceOf(investor)).should.be.bignumber.equal(0); + }); + + it('does not allow beneficiaries to withdraw tokens before crowdsale ends', async function () { + await shouldFail.reverting(this.crowdsale.withdrawTokens(investor)); + }); + + context('after closing time and finalization', function () { + beforeEach(async function () { + await time.increaseTo(this.afterClosingTime); + await this.crowdsale.finalize(); + }); + + it('allows beneficiaries to withdraw tokens', async function () { + await this.crowdsale.withdrawTokens(investor); + (await this.crowdsale.balanceOf(investor)).should.be.bignumber.equal(0); + (await this.token.balanceOf(investor)).should.be.bignumber.equal(value); + }); + + it('rejects multiple withdrawals', async function () { + await this.crowdsale.withdrawTokens(investor); + await shouldFail.reverting(this.crowdsale.withdrawTokens(investor)); + }); + }); + }); + }); +}); diff --git a/node_modules/openzeppelin-solidity/test/crowdsale/TimedCrowdsale.test.js b/node_modules/openzeppelin-solidity/test/crowdsale/TimedCrowdsale.test.js new file mode 100644 index 0000000..2f6e3e1 --- /dev/null +++ b/node_modules/openzeppelin-solidity/test/crowdsale/TimedCrowdsale.test.js @@ -0,0 +1,81 @@ +const { ether } = require('../helpers/ether'); +const shouldFail = require('../helpers/shouldFail'); +const time = require('../helpers/time'); + +const { BigNumber } = require('../helpers/setup'); + +const TimedCrowdsaleImpl = artifacts.require('TimedCrowdsaleImpl'); +const SimpleToken = artifacts.require('SimpleToken'); + +contract('TimedCrowdsale', function ([_, investor, wallet, purchaser]) { + const rate = new BigNumber(1); + const value = ether(42); + const tokenSupply = new BigNumber('1e22'); + + before(async function () { + // Advance to the next block to correctly read time in the solidity "now" function interpreted by ganache + await time.advanceBlock(); + }); + + beforeEach(async function () { + this.openingTime = (await time.latest()) + time.duration.weeks(1); + this.closingTime = this.openingTime + time.duration.weeks(1); + this.afterClosingTime = this.closingTime + time.duration.seconds(1); + this.token = await SimpleToken.new(); + }); + + it('reverts if the opening time is in the past', async function () { + await shouldFail.reverting(TimedCrowdsaleImpl.new( + (await time.latest()) - time.duration.days(1), this.closingTime, rate, wallet, this.token.address + )); + }); + + it('reverts if the closing time is before the opening time', async function () { + await shouldFail.reverting(TimedCrowdsaleImpl.new( + this.openingTime, this.openingTime - time.duration.seconds(1), rate, wallet, this.token.address + )); + }); + + it('reverts if the closing time equals the opening time', async function () { + await shouldFail.reverting(TimedCrowdsaleImpl.new( + this.openingTime, this.openingTime, rate, wallet, this.token.address + )); + }); + + context('with crowdsale', function () { + beforeEach(async function () { + this.crowdsale = await TimedCrowdsaleImpl.new( + this.openingTime, this.closingTime, rate, wallet, this.token.address + ); + await this.token.transfer(this.crowdsale.address, tokenSupply); + }); + + it('should be ended only after end', async function () { + (await this.crowdsale.hasClosed()).should.equal(false); + await time.increaseTo(this.afterClosingTime); + (await this.crowdsale.isOpen()).should.equal(false); + (await this.crowdsale.hasClosed()).should.equal(true); + }); + + describe('accepting payments', function () { + it('should reject payments before start', async function () { + (await this.crowdsale.isOpen()).should.equal(false); + await shouldFail.reverting(this.crowdsale.send(value)); + await shouldFail.reverting(this.crowdsale.buyTokens(investor, { from: purchaser, value: value })); + }); + + it('should accept payments after start', async function () { + await time.increaseTo(this.openingTime); + (await this.crowdsale.isOpen()).should.equal(true); + await this.crowdsale.send(value); + await this.crowdsale.buyTokens(investor, { value: value, from: purchaser }); + }); + + it('should reject payments after end', async function () { + await time.increaseTo(this.afterClosingTime); + await shouldFail.reverting(this.crowdsale.send(value)); + await shouldFail.reverting(this.crowdsale.buyTokens(investor, { value: value, from: purchaser })); + }); + }); + }); +}); diff --git a/node_modules/openzeppelin-solidity/test/crowdsale/WhitelistCrowdsale.test.js b/node_modules/openzeppelin-solidity/test/crowdsale/WhitelistCrowdsale.test.js new file mode 100644 index 0000000..713de67 --- /dev/null +++ b/node_modules/openzeppelin-solidity/test/crowdsale/WhitelistCrowdsale.test.js @@ -0,0 +1,57 @@ +require('../helpers/setup'); +const { ether } = require('../helpers/ether'); +const shouldFail = require('../helpers/shouldFail'); + +const BigNumber = web3.BigNumber; + +const WhitelistCrowdsale = artifacts.require('WhitelistCrowdsaleImpl'); +const SimpleToken = artifacts.require('SimpleToken'); + +contract('WhitelistCrowdsale', function ([_, wallet, whitelister, whitelisted, otherWhitelisted, anyone]) { + const rate = 1; + const value = ether(42); + const tokenSupply = new BigNumber('1e22'); + + beforeEach(async function () { + this.token = await SimpleToken.new({ from: whitelister }); + this.crowdsale = await WhitelistCrowdsale.new(rate, wallet, this.token.address, { from: whitelister }); + await this.token.transfer(this.crowdsale.address, tokenSupply, { from: whitelister }); + }); + + async function purchaseShouldSucceed (crowdsale, beneficiary, value) { + await crowdsale.buyTokens(beneficiary, { from: beneficiary, value }); + await crowdsale.sendTransaction({ from: beneficiary, value }); + } + + async function purchaseShouldFail (crowdsale, beneficiary, value) { + await shouldFail.reverting(crowdsale.buyTokens(beneficiary, { from: beneficiary, value })); + await shouldFail.reverting(crowdsale.sendTransaction({ from: beneficiary, value })); + } + + context('with no whitelisted addresses', function () { + it('rejects all purchases', async function () { + await purchaseShouldFail(this.crowdsale, anyone, value); + await purchaseShouldFail(this.crowdsale, whitelisted, value); + }); + }); + + context('with whitelisted addresses', function () { + beforeEach(async function () { + await this.crowdsale.addWhitelisted(whitelisted, { from: whitelister }); + await this.crowdsale.addWhitelisted(otherWhitelisted, { from: whitelister }); + }); + + it('accepts purchases with whitelisted beneficiaries', async function () { + await purchaseShouldSucceed(this.crowdsale, whitelisted, value); + await purchaseShouldSucceed(this.crowdsale, otherWhitelisted, value); + }); + + it('rejects purchases from whitelisted addresses with non-whitelisted beneficiaries', async function () { + await shouldFail(this.crowdsale.buyTokens(anyone, { from: whitelisted, value })); + }); + + it('rejects purchases with non-whitelisted beneficiaries', async function () { + await purchaseShouldFail(this.crowdsale, anyone, value); + }); + }); +}); diff --git a/node_modules/openzeppelin-solidity/test/cryptography/ECDSA.test.js b/node_modules/openzeppelin-solidity/test/cryptography/ECDSA.test.js new file mode 100644 index 0000000..1909b84 --- /dev/null +++ b/node_modules/openzeppelin-solidity/test/cryptography/ECDSA.test.js @@ -0,0 +1,126 @@ +const { signMessage, toEthSignedMessageHash } = require('../helpers/sign'); +const shouldFail = require('../helpers/shouldFail'); + +const ECDSAMock = artifacts.require('ECDSAMock'); + +require('../helpers/setup'); + +const TEST_MESSAGE = web3.sha3('OpenZeppelin'); +const WRONG_MESSAGE = web3.sha3('Nope'); + +contract('ECDSA', function ([_, anyone]) { + beforeEach(async function () { + this.ecdsa = await ECDSAMock.new(); + }); + + context('recover with valid signature', function () { + context('with v0 signature', function () { + // Signature generated outside ganache with method web3.eth.sign(signer, message) + const signer = '0x2cc1166f6212628a0deef2b33befb2187d35b86c'; + // eslint-disable-next-line max-len + const signatureWithoutVersion = '0x5d99b6f7f6d1f73d1a26497f2b1c89b24c0993913f86e9a2d02cd69887d9c94f3c880358579d811b21dd1b7fd9bb01c1d81d10e69f0384e675c32b39643be892'; + + context('with 00 as version value', function () { + it('works', async function () { + const version = '00'; + const signature = signatureWithoutVersion + version; + (await this.ecdsa.recover(TEST_MESSAGE, signature)).should.equal(signer); + }); + }); + + context('with 27 as version value', function () { + it('works', async function () { + const version = '1b'; // 27 = 1b. + const signature = signatureWithoutVersion + version; + (await this.ecdsa.recover(TEST_MESSAGE, signature)).should.equal(signer); + }); + }); + + context('with wrong version', function () { + it('returns 0', async function () { + // The last two hex digits are the signature version. + // The only valid values are 0, 1, 27 and 28. + const version = '02'; + const signature = signatureWithoutVersion + version; + (await this.ecdsa.recover(TEST_MESSAGE, signature)).should.equal( + '0x0000000000000000000000000000000000000000'); + }); + }); + }); + + context('with v1 signature', function () { + const signer = '0x1e318623ab09fe6de3c9b8672098464aeda9100e'; + // eslint-disable-next-line max-len + const signatureWithoutVersion = '0x331fe75a821c982f9127538858900d87d3ec1f9f737338ad67cad133fa48feff48e6fa0c18abc62e42820f05943e47af3e9fbe306ce74d64094bdf1691ee53e0'; + + context('with 01 as version value', function () { + it('works', async function () { + const version = '01'; + const signature = signatureWithoutVersion + version; + (await this.ecdsa.recover(TEST_MESSAGE, signature)).should.equal(signer); + }); + }); + + context('with 28 signature', function () { + it('works', async function () { + const version = '1c'; // 28 = 1c. + const signature = signatureWithoutVersion + version; + (await this.ecdsa.recover(TEST_MESSAGE, signature)).should.equal(signer); + }); + }); + + context('with wrong version', function () { + it('returns 0', async function () { + // The last two hex digits are the signature version. + // The only valid values are 0, 1, 27 and 28. + const version = '02'; + const signature = signatureWithoutVersion + version; + (await this.ecdsa.recover(TEST_MESSAGE, signature)).should.equal( + '0x0000000000000000000000000000000000000000'); + }); + }); + }); + + context('using web3.eth.sign', function () { + context('with correct signature', function () { + it('returns signer address', async function () { + // Create the signature + const signature = signMessage(anyone, TEST_MESSAGE); + + // Recover the signer address from the generated message and signature. + (await this.ecdsa.recover( + toEthSignedMessageHash(TEST_MESSAGE), + signature + )).should.equal(anyone); + }); + }); + + context('with wrong signature', function () { + it('does not return signer address', async function () { + // Create the signature + const signature = signMessage(anyone, TEST_MESSAGE); + + // Recover the signer address from the generated message and wrong signature. + (await this.ecdsa.recover(WRONG_MESSAGE, signature)).should.not.equal(anyone); + }); + }); + }); + }); + + context('with small hash', function () { + // @TODO - remove `skip` once we upgrade to solc^0.5 + it.skip('reverts', async function () { + // Create the signature + const signature = signMessage(anyone, TEST_MESSAGE); + await shouldFail.reverting( + this.ecdsa.recover(TEST_MESSAGE.substring(2), signature) + ); + }); + }); + + context('toEthSignedMessage', function () { + it('should prefix hashes correctly', async function () { + (await this.ecdsa.toEthSignedMessageHash(TEST_MESSAGE)).should.equal(toEthSignedMessageHash(TEST_MESSAGE)); + }); + }); +}); diff --git a/node_modules/openzeppelin-solidity/test/cryptography/MerkleProof.test.js b/node_modules/openzeppelin-solidity/test/cryptography/MerkleProof.test.js new file mode 100644 index 0000000..8694230 --- /dev/null +++ b/node_modules/openzeppelin-solidity/test/cryptography/MerkleProof.test.js @@ -0,0 +1,57 @@ +const { MerkleTree } = require('../helpers/merkleTree.js'); +const { keccak256, bufferToHex } = require('ethereumjs-util'); + +const MerkleProofWrapper = artifacts.require('MerkleProofWrapper'); + +require('../helpers/setup'); + +contract('MerkleProof', function () { + beforeEach(async function () { + this.merkleProof = await MerkleProofWrapper.new(); + }); + + describe('verify', function () { + it('should return true for a valid Merkle proof', async function () { + const elements = ['a', 'b', 'c', 'd']; + const merkleTree = new MerkleTree(elements); + + const root = merkleTree.getHexRoot(); + + const proof = merkleTree.getHexProof(elements[0]); + + const leaf = bufferToHex(keccak256(elements[0])); + + (await this.merkleProof.verify(proof, root, leaf)).should.equal(true); + }); + + it('should return false for an invalid Merkle proof', async function () { + const correctElements = ['a', 'b', 'c']; + const correctMerkleTree = new MerkleTree(correctElements); + + const correctRoot = correctMerkleTree.getHexRoot(); + + const correctLeaf = bufferToHex(keccak256(correctElements[0])); + + const badElements = ['d', 'e', 'f']; + const badMerkleTree = new MerkleTree(badElements); + + const badProof = badMerkleTree.getHexProof(badElements[0]); + + (await this.merkleProof.verify(badProof, correctRoot, correctLeaf)).should.equal(false); + }); + + it('should return false for a Merkle proof of invalid length', async function () { + const elements = ['a', 'b', 'c']; + const merkleTree = new MerkleTree(elements); + + const root = merkleTree.getHexRoot(); + + const proof = merkleTree.getHexProof(elements[0]); + const badProof = proof.slice(0, proof.length - 5); + + const leaf = bufferToHex(keccak256(elements[0])); + + (await this.merkleProof.verify(badProof, root, leaf)).should.equal(false); + }); + }); +}); diff --git a/node_modules/openzeppelin-solidity/test/drafts/Counter.test.js b/node_modules/openzeppelin-solidity/test/drafts/Counter.test.js new file mode 100644 index 0000000..008e767 --- /dev/null +++ b/node_modules/openzeppelin-solidity/test/drafts/Counter.test.js @@ -0,0 +1,38 @@ + +const CounterImpl = artifacts.require('CounterImpl'); + +require('../helpers/setup'); + +const EXPECTED = [1, 2, 3, 4]; +const KEY1 = web3.sha3('key1'); +const KEY2 = web3.sha3('key2'); + +contract('Counter', function ([_, owner]) { + beforeEach(async function () { + this.mock = await CounterImpl.new({ from: owner }); + }); + + context('custom key', async function () { + it('should return expected values', async function () { + for (const expectedId of EXPECTED) { + await this.mock.doThing(KEY1, { from: owner }); + const actualId = await this.mock.theId(); + actualId.should.be.bignumber.equal(expectedId); + } + }); + }); + + context('parallel keys', async function () { + it('should return expected values for each counter', async function () { + for (const expectedId of EXPECTED) { + await this.mock.doThing(KEY1, { from: owner }); + let actualId = await this.mock.theId(); + actualId.should.be.bignumber.equal(expectedId); + + await this.mock.doThing(KEY2, { from: owner }); + actualId = await this.mock.theId(); + actualId.should.be.bignumber.equal(expectedId); + } + }); + }); +}); diff --git a/node_modules/openzeppelin-solidity/test/drafts/ERC1046/TokenMetadata.test.js b/node_modules/openzeppelin-solidity/test/drafts/ERC1046/TokenMetadata.test.js new file mode 100644 index 0000000..58aaa3a --- /dev/null +++ b/node_modules/openzeppelin-solidity/test/drafts/ERC1046/TokenMetadata.test.js @@ -0,0 +1,15 @@ +const ERC20WithMetadataMock = artifacts.require('ERC20WithMetadataMock'); + +require('../../helpers/setup'); + +const metadataURI = 'https://example.com'; + +describe('ERC20WithMetadata', function () { + beforeEach(async function () { + this.token = await ERC20WithMetadataMock.new(metadataURI); + }); + + it('responds with the metadata', async function () { + (await this.token.tokenURI()).should.equal(metadataURI); + }); +}); diff --git a/node_modules/openzeppelin-solidity/test/drafts/ERC20Migrator.test.js b/node_modules/openzeppelin-solidity/test/drafts/ERC20Migrator.test.js new file mode 100644 index 0000000..05c8f5f --- /dev/null +++ b/node_modules/openzeppelin-solidity/test/drafts/ERC20Migrator.test.js @@ -0,0 +1,151 @@ +const shouldFail = require('../helpers/shouldFail'); +const { ZERO_ADDRESS } = require('../helpers/constants'); + +const ERC20Mock = artifacts.require('ERC20Mock'); +const ERC20Mintable = artifacts.require('ERC20Mintable'); +const ERC20Migrator = artifacts.require('ERC20Migrator'); + +require('../helpers/setup'); + +contract('ERC20Migrator', function ([_, owner, recipient, anotherAccount]) { + const totalSupply = 200; + + it('reverts with a null legacy token address', async function () { + await shouldFail.reverting(ERC20Migrator.new(ZERO_ADDRESS)); + }); + + describe('with tokens and migrator', function () { + beforeEach('deploying tokens and migrator', async function () { + this.legacyToken = await ERC20Mock.new(owner, totalSupply); + this.migrator = await ERC20Migrator.new(this.legacyToken.address); + this.newToken = await ERC20Mintable.new(); + }); + + it('returns legacy token', async function () { + (await this.migrator.legacyToken()).should.be.equal(this.legacyToken.address); + }); + + describe('beginMigration', function () { + it('reverts with a null new token address', async function () { + await shouldFail.reverting(this.migrator.beginMigration(ZERO_ADDRESS)); + }); + + it('reverts if not a minter of the token', async function () { + await shouldFail.reverting(this.migrator.beginMigration(this.newToken.address)); + }); + + it('succeeds if it is a minter of the token', async function () { + await this.newToken.addMinter(this.migrator.address); + await this.migrator.beginMigration(this.newToken.address); + }); + + it('reverts the second time it is called', async function () { + await this.newToken.addMinter(this.migrator.address); + await this.migrator.beginMigration(this.newToken.address); + await shouldFail.reverting(this.migrator.beginMigration(this.newToken.address)); + }); + }); + + describe('once migration began', function () { + beforeEach('beginning migration', async function () { + await this.newToken.addMinter(this.migrator.address); + await this.migrator.beginMigration(this.newToken.address); + }); + + it('returns new token', async function () { + (await this.migrator.newToken()).should.be.equal(this.newToken.address); + }); + + describe('migrateAll', function () { + const baseAmount = totalSupply; + + describe('when the approved balance is equal to the owned balance', function () { + const amount = baseAmount; + + beforeEach('approving the whole balance to the new contract', async function () { + await this.legacyToken.approve(this.migrator.address, amount, { from: owner }); + }); + + beforeEach('migrating token', async function () { + const tx = await this.migrator.migrateAll(owner); + this.logs = tx.receipt.logs; + }); + + it('mints the same balance of the new token', async function () { + const currentBalance = await this.newToken.balanceOf(owner); + currentBalance.should.be.bignumber.equal(amount); + }); + + it('burns a given amount of old tokens', async function () { + const currentBurnedBalance = await this.legacyToken.balanceOf(this.migrator.address); + currentBurnedBalance.should.be.bignumber.equal(amount); + + const currentLegacyTokenBalance = await this.legacyToken.balanceOf(owner); + currentLegacyTokenBalance.should.be.bignumber.equal(0); + }); + + it('updates the total supply', async function () { + const currentSupply = await this.newToken.totalSupply(); + currentSupply.should.be.bignumber.equal(amount); + }); + }); + + describe('when the approved balance is lower than the owned balance', function () { + const amount = baseAmount - 1; + + beforeEach('approving part of the balance to the new contract', async function () { + await this.legacyToken.approve(this.migrator.address, amount, { from: owner }); + await this.migrator.migrateAll(owner); + }); + + it('migrates only approved amount', async function () { + const currentBalance = await this.newToken.balanceOf(owner); + currentBalance.should.be.bignumber.equal(amount); + }); + }); + }); + + describe('migrate', function () { + const baseAmount = 50; + + beforeEach('approving tokens to the new contract', async function () { + await this.legacyToken.approve(this.migrator.address, baseAmount, { from: owner }); + }); + + describe('when the amount is equal to the one approved', function () { + const amount = baseAmount; + + beforeEach('migrate token', async function () { + ({ logs: this.logs } = await this.migrator.migrate(owner, amount)); + }); + + it('mints that amount of the new token', async function () { + const currentBalance = await this.newToken.balanceOf(owner); + currentBalance.should.be.bignumber.equal(amount); + }); + + it('burns a given amount of old tokens', async function () { + const currentBurnedBalance = await this.legacyToken.balanceOf(this.migrator.address); + currentBurnedBalance.should.be.bignumber.equal(amount); + + const currentLegacyTokenBalance = await this.legacyToken.balanceOf(owner); + currentLegacyTokenBalance.should.be.bignumber.equal(totalSupply - amount); + }); + + it('updates the total supply', async function () { + const currentSupply = await this.newToken.totalSupply(); + currentSupply.should.be.bignumber.equal(amount); + }); + }); + + describe('when the given amount is higher than the one approved', function () { + const amount = baseAmount + 1; + + it('reverts', async function () { + await shouldFail.reverting(this.migrator.migrate(owner, amount)); + }); + }); + }); + }); + }); +}); diff --git a/node_modules/openzeppelin-solidity/test/drafts/SignatureBouncer.test.js b/node_modules/openzeppelin-solidity/test/drafts/SignatureBouncer.test.js new file mode 100644 index 0000000..4e20401 --- /dev/null +++ b/node_modules/openzeppelin-solidity/test/drafts/SignatureBouncer.test.js @@ -0,0 +1,214 @@ +const shouldFail = require('../helpers/shouldFail'); +const { getSignFor } = require('../helpers/sign'); +const { shouldBehaveLikePublicRole } = require('../access/roles/PublicRole.behavior'); + +const SignatureBouncerMock = artifacts.require('SignatureBouncerMock'); + +require('../helpers/setup'); + +const UINT_VALUE = 23; +const BYTES_VALUE = web3.toHex('test'); +const INVALID_SIGNATURE = '0xabcd'; + +contract('SignatureBouncer', function ([_, signer, otherSigner, anyone, authorizedUser, ...otherAccounts]) { + beforeEach(async function () { + this.sigBouncer = await SignatureBouncerMock.new({ from: signer }); + this.signFor = getSignFor(this.sigBouncer, signer); + }); + + describe('signer role', function () { + beforeEach(async function () { + this.contract = this.sigBouncer; + await this.contract.addSigner(otherSigner, { from: signer }); + }); + + shouldBehaveLikePublicRole(signer, otherSigner, otherAccounts, 'signer'); + }); + + describe('modifiers', function () { + context('plain signature', function () { + it('allows valid signature for sender', async function () { + await this.sigBouncer.onlyWithValidSignature(this.signFor(authorizedUser), { from: authorizedUser }); + }); + + it('does not allow invalid signature for sender', async function () { + await shouldFail.reverting( + this.sigBouncer.onlyWithValidSignature(INVALID_SIGNATURE, { from: authorizedUser }) + ); + }); + + it('does not allow valid signature for other sender', async function () { + await shouldFail.reverting( + this.sigBouncer.onlyWithValidSignature(this.signFor(authorizedUser), { from: anyone }) + ); + }); + + it('does not allow valid signature for method for sender', async function () { + await shouldFail.reverting( + this.sigBouncer.onlyWithValidSignature(this.signFor(authorizedUser, 'onlyWithValidSignature'), + { from: authorizedUser }) + ); + }); + }); + + context('method signature', function () { + it('allows valid signature with correct method for sender', async function () { + await this.sigBouncer.onlyWithValidSignatureAndMethod( + this.signFor(authorizedUser, 'onlyWithValidSignatureAndMethod'), { from: authorizedUser } + ); + }); + + it('does not allow invalid signature with correct method for sender', async function () { + await shouldFail.reverting( + this.sigBouncer.onlyWithValidSignatureAndMethod(INVALID_SIGNATURE, { from: authorizedUser }) + ); + }); + + it('does not allow valid signature with correct method for other sender', async function () { + await shouldFail.reverting( + this.sigBouncer.onlyWithValidSignatureAndMethod( + this.signFor(authorizedUser, 'onlyWithValidSignatureAndMethod'), { from: anyone } + ) + ); + }); + + it('does not allow valid method signature with incorrect method for sender', async function () { + await shouldFail.reverting( + this.sigBouncer.onlyWithValidSignatureAndMethod(this.signFor(authorizedUser, 'theWrongMethod'), + { from: authorizedUser }) + ); + }); + + it('does not allow valid non-method signature method for sender', async function () { + await shouldFail.reverting( + this.sigBouncer.onlyWithValidSignatureAndMethod(this.signFor(authorizedUser), { from: authorizedUser }) + ); + }); + }); + + context('method and data signature', function () { + it('allows valid signature with correct method and data for sender', async function () { + await this.sigBouncer.onlyWithValidSignatureAndData(UINT_VALUE, + this.signFor(authorizedUser, 'onlyWithValidSignatureAndData', [UINT_VALUE]), { from: authorizedUser } + ); + }); + + it('does not allow invalid signature with correct method and data for sender', async function () { + await shouldFail.reverting( + this.sigBouncer.onlyWithValidSignatureAndData(UINT_VALUE, INVALID_SIGNATURE, { from: authorizedUser }) + ); + }); + + it('does not allow valid signature with correct method and incorrect data for sender', async function () { + await shouldFail.reverting( + this.sigBouncer.onlyWithValidSignatureAndData(UINT_VALUE + 10, + this.signFor(authorizedUser, 'onlyWithValidSignatureAndData', [UINT_VALUE]), + { from: authorizedUser } + ) + ); + }); + + it('does not allow valid signature with correct method and data for other sender', async function () { + await shouldFail.reverting( + this.sigBouncer.onlyWithValidSignatureAndData(UINT_VALUE, + this.signFor(authorizedUser, 'onlyWithValidSignatureAndData', [UINT_VALUE]), + { from: anyone } + ) + ); + }); + + it('does not allow valid non-method signature for sender', async function () { + await shouldFail.reverting( + this.sigBouncer.onlyWithValidSignatureAndData(UINT_VALUE, + this.signFor(authorizedUser), { from: authorizedUser } + ) + ); + }); + + it('does not allow msg.data shorter than SIGNATURE_SIZE', async function () { + await shouldFail.reverting( + this.sigBouncer.tooShortMsgData({ from: authorizedUser }) + ); + }); + }); + }); + + context('signature validation', function () { + context('plain signature', function () { + it('validates valid signature for valid user', async function () { + (await this.sigBouncer.checkValidSignature(authorizedUser, this.signFor(authorizedUser))).should.equal(true); + }); + + it('does not validate invalid signature for valid user', async function () { + (await this.sigBouncer.checkValidSignature(authorizedUser, INVALID_SIGNATURE)).should.equal(false); + }); + + it('does not validate valid signature for anyone', async function () { + (await this.sigBouncer.checkValidSignature(anyone, this.signFor(authorizedUser))).should.equal(false); + }); + + it('does not validate valid signature for method for valid user', async function () { + (await this.sigBouncer.checkValidSignature(authorizedUser, this.signFor(authorizedUser, 'checkValidSignature')) + ).should.equal(false); + }); + }); + + context('method signature', function () { + it('validates valid signature with correct method for valid user', async function () { + (await this.sigBouncer.checkValidSignatureAndMethod(authorizedUser, + this.signFor(authorizedUser, 'checkValidSignatureAndMethod')) + ).should.equal(true); + }); + + it('does not validate invalid signature with correct method for valid user', async function () { + (await this.sigBouncer.checkValidSignatureAndMethod(authorizedUser, INVALID_SIGNATURE)).should.equal(false); + }); + + it('does not validate valid signature with correct method for anyone', async function () { + (await this.sigBouncer.checkValidSignatureAndMethod(anyone, + this.signFor(authorizedUser, 'checkValidSignatureAndMethod')) + ).should.equal(false); + }); + + it('does not validate valid non-method signature with correct method for valid user', async function () { + (await this.sigBouncer.checkValidSignatureAndMethod(authorizedUser, this.signFor(authorizedUser)) + ).should.equal(false); + }); + }); + + context('method and data signature', function () { + it('validates valid signature with correct method and data for valid user', async function () { + (await this.sigBouncer.checkValidSignatureAndData(authorizedUser, BYTES_VALUE, UINT_VALUE, + this.signFor(authorizedUser, 'checkValidSignatureAndData', [authorizedUser, BYTES_VALUE, UINT_VALUE])) + ).should.equal(true); + }); + + it('does not validate invalid signature with correct method and data for valid user', async function () { + (await this.sigBouncer.checkValidSignatureAndData(authorizedUser, BYTES_VALUE, UINT_VALUE, INVALID_SIGNATURE) + ).should.equal(false); + }); + + it('does not validate valid signature with correct method and incorrect data for valid user', + async function () { + (await this.sigBouncer.checkValidSignatureAndData(authorizedUser, BYTES_VALUE, UINT_VALUE + 10, + this.signFor(authorizedUser, 'checkValidSignatureAndData', [authorizedUser, BYTES_VALUE, UINT_VALUE])) + ).should.equal(false); + } + ); + + it('does not validate valid signature with correct method and data for anyone', async function () { + (await this.sigBouncer.checkValidSignatureAndData(anyone, BYTES_VALUE, UINT_VALUE, + this.signFor(authorizedUser, 'checkValidSignatureAndData', [authorizedUser, BYTES_VALUE, UINT_VALUE])) + ).should.equal(false); + }); + + it('does not validate valid non-method-data signature with correct method and data for valid user', + async function () { + (await this.sigBouncer.checkValidSignatureAndData(authorizedUser, BYTES_VALUE, UINT_VALUE, + this.signFor(authorizedUser, 'checkValidSignatureAndData')) + ).should.equal(false); + } + ); + }); + }); +}); diff --git a/node_modules/openzeppelin-solidity/test/drafts/SignedSafeMath.test.js b/node_modules/openzeppelin-solidity/test/drafts/SignedSafeMath.test.js new file mode 100644 index 0000000..e144d39 --- /dev/null +++ b/node_modules/openzeppelin-solidity/test/drafts/SignedSafeMath.test.js @@ -0,0 +1,138 @@ +const shouldFail = require('../helpers/shouldFail'); +const { MIN_INT256, MAX_INT256 } = require('../helpers/constants'); + +const SignedSafeMathMock = artifacts.require('SignedSafeMathMock'); + +const { BigNumber } = require('../helpers/setup'); + +contract('SignedSafeMath', function () { + beforeEach(async function () { + this.safeMath = await SignedSafeMathMock.new(); + }); + + describe('add', function () { + it('adds correctly if it does not overflow and the result is positve', async function () { + const a = new BigNumber(1234); + const b = new BigNumber(5678); + + (await this.safeMath.add(a, b)).should.be.bignumber.equal(a.plus(b)); + }); + + it('adds correctly if it does not overflow and the result is negative', async function () { + const a = MAX_INT256; + const b = MIN_INT256; + + const result = await this.safeMath.add(a, b); + result.should.be.bignumber.equal(a.plus(b)); + }); + + it('reverts on positive addition overflow', async function () { + const a = MAX_INT256; + const b = new BigNumber(1); + + await shouldFail.reverting(this.safeMath.add(a, b)); + }); + + it('reverts on negative addition overflow', async function () { + const a = MIN_INT256; + const b = new BigNumber(-1); + + await shouldFail.reverting(this.safeMath.add(a, b)); + }); + }); + + describe('sub', function () { + it('subtracts correctly if it does not overflow and the result is positive', async function () { + const a = new BigNumber(5678); + const b = new BigNumber(1234); + + const result = await this.safeMath.sub(a, b); + result.should.be.bignumber.equal(a.minus(b)); + }); + + it('subtracts correctly if it does not overflow and the result is negative', async function () { + const a = new BigNumber(1234); + const b = new BigNumber(5678); + + const result = await this.safeMath.sub(a, b); + result.should.be.bignumber.equal(a.minus(b)); + }); + + it('reverts on positive subtraction overflow', async function () { + const a = MAX_INT256; + const b = new BigNumber(-1); + + await shouldFail.reverting(this.safeMath.sub(a, b)); + }); + + it('reverts on negative subtraction overflow', async function () { + const a = MIN_INT256; + const b = new BigNumber(1); + + await shouldFail.reverting(this.safeMath.sub(a, b)); + }); + }); + + describe('mul', function () { + it('multiplies correctly', async function () { + const a = new BigNumber(5678); + const b = new BigNumber(-1234); + + const result = await this.safeMath.mul(a, b); + result.should.be.bignumber.equal(a.times(b)); + }); + + it('handles a zero product correctly', async function () { + const a = new BigNumber(0); + const b = new BigNumber(5678); + + const result = await this.safeMath.mul(a, b); + result.should.be.bignumber.equal(a.times(b)); + }); + + it('reverts on multiplication overflow, positive operands', async function () { + const a = MAX_INT256; + const b = new BigNumber(2); + + await shouldFail.reverting(this.safeMath.mul(a, b)); + }); + + it('reverts when minimum integer is multiplied by -1', async function () { + const a = MIN_INT256; + const b = new BigNumber(-1); + + await shouldFail.reverting(this.safeMath.mul(a, b)); + }); + + it('reverts when -1 is multiplied by minimum integer', async function () { + const a = new BigNumber(-1); + const b = MIN_INT256; + + await shouldFail.reverting(this.safeMath.mul(a, b)); + }); + }); + + describe('div', function () { + it('divides correctly', async function () { + const a = new BigNumber(-5678); + const b = new BigNumber(5678); + + const result = await this.safeMath.div(a, b); + result.should.be.bignumber.equal(a.div(b)); + }); + + it('reverts on zero division', async function () { + const a = new BigNumber(-5678); + const b = new BigNumber(0); + + await shouldFail.reverting(this.safeMath.div(a, b)); + }); + + it('reverts on overflow, negative second', async function () { + const a = new BigNumber(MIN_INT256); + const b = new BigNumber(-1); + + await shouldFail.reverting(this.safeMath.div(a, b)); + }); + }); +}); diff --git a/node_modules/openzeppelin-solidity/test/drafts/TokenVesting.test.js b/node_modules/openzeppelin-solidity/test/drafts/TokenVesting.test.js new file mode 100644 index 0000000..cb8fc18 --- /dev/null +++ b/node_modules/openzeppelin-solidity/test/drafts/TokenVesting.test.js @@ -0,0 +1,164 @@ +const shouldFail = require('../helpers/shouldFail'); +const expectEvent = require('../helpers/expectEvent'); +const time = require('../helpers/time'); +const { ethGetBlock } = require('../helpers/web3'); +const { ZERO_ADDRESS } = require('../helpers/constants'); + +const { BigNumber } = require('../helpers/setup'); + +const ERC20Mintable = artifacts.require('ERC20Mintable'); +const TokenVesting = artifacts.require('TokenVesting'); + +contract('TokenVesting', function ([_, owner, beneficiary]) { + const amount = new BigNumber(1000); + + beforeEach(async function () { + // +1 minute so it starts after contract instantiation + this.start = (await time.latest()) + time.duration.minutes(1); + this.cliffDuration = time.duration.years(1); + this.duration = time.duration.years(2); + }); + + it('reverts with a duration shorter than the cliff', async function () { + const cliffDuration = this.duration; + const duration = this.cliffDuration; + + cliffDuration.should.be.gt(duration); + + await shouldFail.reverting( + TokenVesting.new(beneficiary, this.start, cliffDuration, duration, true, { from: owner }) + ); + }); + + it('reverts with a null beneficiary', async function () { + await shouldFail.reverting( + TokenVesting.new(ZERO_ADDRESS, this.start, this.cliffDuration, this.duration, true, { from: owner }) + ); + }); + + it('reverts with a null duration', async function () { + // cliffDuration should also be 0, since the duration must be larger than the cliff + await shouldFail.reverting( + TokenVesting.new(beneficiary, this.start, 0, 0, true, { from: owner }) + ); + }); + + it('reverts if the end time is in the past', async function () { + const now = await time.latest(); + + this.start = now - this.duration - time.duration.minutes(1); + await shouldFail.reverting( + TokenVesting.new(beneficiary, this.start, this.cliffDuration, this.duration, true, { from: owner }) + ); + }); + + context('once deployed', function () { + beforeEach(async function () { + this.vesting = await TokenVesting.new( + beneficiary, this.start, this.cliffDuration, this.duration, true, { from: owner }); + + this.token = await ERC20Mintable.new({ from: owner }); + await this.token.mint(this.vesting.address, amount, { from: owner }); + }); + + it('can get state', async function () { + (await this.vesting.beneficiary()).should.be.equal(beneficiary); + (await this.vesting.cliff()).should.be.bignumber.equal(this.start + this.cliffDuration); + (await this.vesting.start()).should.be.bignumber.equal(this.start); + (await this.vesting.duration()).should.be.bignumber.equal(this.duration); + (await this.vesting.revocable()).should.be.equal(true); + }); + + it('cannot be released before cliff', async function () { + await shouldFail.reverting(this.vesting.release(this.token.address)); + }); + + it('can be released after cliff', async function () { + await time.increaseTo(this.start + this.cliffDuration + time.duration.weeks(1)); + const { logs } = await this.vesting.release(this.token.address); + expectEvent.inLogs(logs, 'TokensReleased', { + token: this.token.address, + amount: await this.token.balanceOf(beneficiary), + }); + }); + + it('should release proper amount after cliff', async function () { + await time.increaseTo(this.start + this.cliffDuration); + + const { receipt } = await this.vesting.release(this.token.address); + const block = await ethGetBlock(receipt.blockNumber); + const releaseTime = block.timestamp; + + const releasedAmount = amount.mul(releaseTime - this.start).div(this.duration).floor(); + (await this.token.balanceOf(beneficiary)).should.bignumber.equal(releasedAmount); + (await this.vesting.released(this.token.address)).should.bignumber.equal(releasedAmount); + }); + + it('should linearly release tokens during vesting period', async function () { + const vestingPeriod = this.duration - this.cliffDuration; + const checkpoints = 4; + + for (let i = 1; i <= checkpoints; i++) { + const now = this.start + this.cliffDuration + i * (vestingPeriod / checkpoints); + await time.increaseTo(now); + + await this.vesting.release(this.token.address); + const expectedVesting = amount.mul(now - this.start).div(this.duration).floor(); + (await this.token.balanceOf(beneficiary)).should.bignumber.equal(expectedVesting); + (await this.vesting.released(this.token.address)).should.bignumber.equal(expectedVesting); + } + }); + + it('should have released all after end', async function () { + await time.increaseTo(this.start + this.duration); + await this.vesting.release(this.token.address); + (await this.token.balanceOf(beneficiary)).should.bignumber.equal(amount); + (await this.vesting.released(this.token.address)).should.bignumber.equal(amount); + }); + + it('should be revoked by owner if revocable is set', async function () { + const { logs } = await this.vesting.revoke(this.token.address, { from: owner }); + expectEvent.inLogs(logs, 'TokenVestingRevoked', { token: this.token.address }); + (await this.vesting.revoked(this.token.address)).should.equal(true); + }); + + it('should fail to be revoked by owner if revocable not set', async function () { + const vesting = await TokenVesting.new( + beneficiary, this.start, this.cliffDuration, this.duration, false, { from: owner } + ); + + await shouldFail.reverting(vesting.revoke(this.token.address, { from: owner })); + }); + + it('should return the non-vested tokens when revoked by owner', async function () { + await time.increaseTo(this.start + this.cliffDuration + time.duration.weeks(12)); + + const vested = vestedAmount(amount, await time.latest(), this.start, this.cliffDuration, this.duration); + + await this.vesting.revoke(this.token.address, { from: owner }); + + (await this.token.balanceOf(owner)).should.bignumber.equal(amount.sub(vested)); + }); + + it('should keep the vested tokens when revoked by owner', async function () { + await time.increaseTo(this.start + this.cliffDuration + time.duration.weeks(12)); + + const vestedPre = vestedAmount(amount, await time.latest(), this.start, this.cliffDuration, this.duration); + + await this.vesting.revoke(this.token.address, { from: owner }); + + const vestedPost = vestedAmount(amount, await time.latest(), this.start, this.cliffDuration, this.duration); + + vestedPre.should.bignumber.equal(vestedPost); + }); + + it('should fail to be revoked a second time', async function () { + await this.vesting.revoke(this.token.address, { from: owner }); + await shouldFail.reverting(this.vesting.revoke(this.token.address, { from: owner })); + }); + + function vestedAmount (total, now, start, cliffDuration, duration) { + return (now < start + cliffDuration) ? 0 : Math.round(total * (now - start) / duration); + } + }); +}); diff --git a/node_modules/openzeppelin-solidity/test/examples/SampleCrowdsale.test.js b/node_modules/openzeppelin-solidity/test/examples/SampleCrowdsale.test.js new file mode 100644 index 0000000..e768265 --- /dev/null +++ b/node_modules/openzeppelin-solidity/test/examples/SampleCrowdsale.test.js @@ -0,0 +1,107 @@ +const { ether } = require('../helpers/ether'); +const shouldFail = require('../helpers/shouldFail'); +const time = require('../helpers/time'); +const { balanceDifference } = require('../helpers/balanceDifference'); + +const { should, BigNumber } = require('../helpers/setup'); + +const SampleCrowdsale = artifacts.require('SampleCrowdsale'); +const SampleCrowdsaleToken = artifacts.require('SampleCrowdsaleToken'); + +contract('SampleCrowdsale', function ([_, deployer, owner, wallet, investor]) { + const RATE = new BigNumber(10); + const GOAL = ether(10); + const CAP = ether(20); + + before(async function () { + // Advance to the next block to correctly read time in the solidity "now" function interpreted by ganache + await time.advanceBlock(); + }); + + beforeEach(async function () { + this.openingTime = (await time.latest()) + time.duration.weeks(1); + this.closingTime = this.openingTime + time.duration.weeks(1); + this.afterClosingTime = this.closingTime + time.duration.seconds(1); + + this.token = await SampleCrowdsaleToken.new({ from: deployer }); + this.crowdsale = await SampleCrowdsale.new( + this.openingTime, this.closingTime, RATE, wallet, CAP, this.token.address, GOAL, + { from: owner } + ); + + await this.token.addMinter(this.crowdsale.address, { from: deployer }); + await this.token.renounceMinter({ from: deployer }); + }); + + it('should create crowdsale with correct parameters', async function () { + should.exist(this.crowdsale); + should.exist(this.token); + + (await this.crowdsale.openingTime()).should.be.bignumber.equal(this.openingTime); + (await this.crowdsale.closingTime()).should.be.bignumber.equal(this.closingTime); + (await this.crowdsale.rate()).should.be.bignumber.equal(RATE); + (await this.crowdsale.wallet()).should.be.equal(wallet); + (await this.crowdsale.goal()).should.be.bignumber.equal(GOAL); + (await this.crowdsale.cap()).should.be.bignumber.equal(CAP); + }); + + it('should not accept payments before start', async function () { + await shouldFail.reverting(this.crowdsale.send(ether(1))); + await shouldFail.reverting(this.crowdsale.buyTokens(investor, { from: investor, value: ether(1) })); + }); + + it('should accept payments during the sale', async function () { + const investmentAmount = ether(1); + const expectedTokenAmount = RATE.mul(investmentAmount); + + await time.increaseTo(this.openingTime); + await this.crowdsale.buyTokens(investor, { value: investmentAmount, from: investor }); + + (await this.token.balanceOf(investor)).should.be.bignumber.equal(expectedTokenAmount); + (await this.token.totalSupply()).should.be.bignumber.equal(expectedTokenAmount); + }); + + it('should reject payments after end', async function () { + await time.increaseTo(this.afterClosingTime); + await shouldFail.reverting(this.crowdsale.send(ether(1))); + await shouldFail.reverting(this.crowdsale.buyTokens(investor, { value: ether(1), from: investor })); + }); + + it('should reject payments over cap', async function () { + await time.increaseTo(this.openingTime); + await this.crowdsale.send(CAP); + await shouldFail.reverting(this.crowdsale.send(1)); + }); + + it('should allow finalization and transfer funds to wallet if the goal is reached', async function () { + await time.increaseTo(this.openingTime); + await this.crowdsale.send(GOAL); + + (await balanceDifference(wallet, async () => { + await time.increaseTo(this.afterClosingTime); + await this.crowdsale.finalize({ from: owner }); + })).should.be.bignumber.equal(GOAL); + }); + + it('should allow refunds if the goal is not reached', async function () { + (await balanceDifference(investor, async () => { + await time.increaseTo(this.openingTime); + await this.crowdsale.sendTransaction({ value: ether(1), from: investor, gasPrice: 0 }); + await time.increaseTo(this.afterClosingTime); + + await this.crowdsale.finalize({ from: owner }); + await this.crowdsale.claimRefund(investor, { gasPrice: 0 }); + })).should.be.bignumber.equal(0); + }); + + describe('when goal > cap', function () { + // goal > cap + const HIGH_GOAL = ether(30); + + it('creation reverts', async function () { + await shouldFail.reverting(SampleCrowdsale.new( + this.openingTime, this.closingTime, RATE, wallet, CAP, this.token.address, HIGH_GOAL + )); + }); + }); +}); diff --git a/node_modules/openzeppelin-solidity/test/examples/SimpleToken.test.js b/node_modules/openzeppelin-solidity/test/examples/SimpleToken.test.js new file mode 100644 index 0000000..540ce4a --- /dev/null +++ b/node_modules/openzeppelin-solidity/test/examples/SimpleToken.test.js @@ -0,0 +1,36 @@ +const expectEvent = require('../helpers/expectEvent'); +const { ZERO_ADDRESS } = require('../helpers/constants'); +const SimpleToken = artifacts.require('SimpleToken'); + +require('../helpers/setup'); + +contract('SimpleToken', function ([_, creator]) { + beforeEach(async function () { + this.token = await SimpleToken.new({ from: creator }); + }); + + it('has a name', async function () { + (await this.token.name()).should.equal('SimpleToken'); + }); + + it('has a symbol', async function () { + (await this.token.symbol()).should.equal('SIM'); + }); + + it('has 18 decimals', async function () { + (await this.token.decimals()).should.be.bignumber.equal(18); + }); + + it('assigns the initial total supply to the creator', async function () { + const totalSupply = await this.token.totalSupply(); + const creatorBalance = await this.token.balanceOf(creator); + + creatorBalance.should.be.bignumber.equal(totalSupply); + + await expectEvent.inConstruction(this.token, 'Transfer', { + from: ZERO_ADDRESS, + to: creator, + value: totalSupply, + }); + }); +}); diff --git a/node_modules/openzeppelin-solidity/test/helpers/balanceDifference.js b/node_modules/openzeppelin-solidity/test/helpers/balanceDifference.js new file mode 100644 index 0000000..e514b01 --- /dev/null +++ b/node_modules/openzeppelin-solidity/test/helpers/balanceDifference.js @@ -0,0 +1,12 @@ +const { ethGetBalance } = require('./web3'); + +async function balanceDifference (account, promiseFunc) { + const balanceBefore = await ethGetBalance(account); + await promiseFunc(); + const balanceAfter = await ethGetBalance(account); + return balanceAfter.minus(balanceBefore); +} + +module.exports = { + balanceDifference, +}; diff --git a/node_modules/openzeppelin-solidity/test/helpers/constants.js b/node_modules/openzeppelin-solidity/test/helpers/constants.js new file mode 100644 index 0000000..4c75c6d --- /dev/null +++ b/node_modules/openzeppelin-solidity/test/helpers/constants.js @@ -0,0 +1,8 @@ +const BigNumber = web3.BigNumber; + +module.exports = { + ZERO_ADDRESS: '0x0000000000000000000000000000000000000000', + MAX_UINT256: new BigNumber(2).pow(256).minus(1), + MAX_INT256: new BigNumber(2).pow(255).minus(1), + MIN_INT256: new BigNumber(2).pow(255).times(-1), +}; diff --git a/node_modules/openzeppelin-solidity/test/helpers/ether.js b/node_modules/openzeppelin-solidity/test/helpers/ether.js new file mode 100644 index 0000000..6e11a11 --- /dev/null +++ b/node_modules/openzeppelin-solidity/test/helpers/ether.js @@ -0,0 +1,7 @@ +function ether (n) { + return new web3.BigNumber(web3.toWei(n, 'ether')); +} + +module.exports = { + ether, +}; diff --git a/node_modules/openzeppelin-solidity/test/helpers/expectEvent.js b/node_modules/openzeppelin-solidity/test/helpers/expectEvent.js new file mode 100644 index 0000000..29d1027 --- /dev/null +++ b/node_modules/openzeppelin-solidity/test/helpers/expectEvent.js @@ -0,0 +1,57 @@ +const { should, BigNumber } = require('./setup'); + +const SolidityEvent = require('web3/lib/web3/event.js'); +const { ethGetTransactionReceipt } = require('./web3'); + +function inLogs (logs, eventName, eventArgs = {}) { + const event = logs.find(function (e) { + if (e.event === eventName) { + for (const [k, v] of Object.entries(eventArgs)) { + contains(e.args, k, v); + } + return true; + } + }); + should.exist(event); + return event; +} + +async function inConstruction (contract, eventName, eventArgs = {}) { + return inTransaction(contract.transactionHash, contract.constructor, eventName, eventArgs); +} + +async function inTransaction (txHash, emitter, eventName, eventArgs = {}) { + const receipt = await ethGetTransactionReceipt(txHash); + const logs = decodeLogs(receipt.logs, emitter.events); + + return inLogs(logs, eventName, eventArgs); +} + +function contains (args, key, value) { + if (isBigNumber(args[key])) { + args[key].should.be.bignumber.equal(value); + } else { + args[key].should.be.equal(value); + } +} + +function isBigNumber (object) { + return object.isBigNumber || + object instanceof BigNumber || + (object.constructor && object.constructor.name === 'BigNumber'); +} + +function decodeLogs (logs, events) { + return Array.prototype.concat(...logs.map(log => + log.topics.filter(topic => topic in events).map(topic => { + const event = new SolidityEvent(null, events[topic], 0); + return event.decode(log); + }) + )); +} + +module.exports = { + inLogs, + inConstruction, + inTransaction, +}; diff --git a/node_modules/openzeppelin-solidity/test/helpers/makeInterfaceId.js b/node_modules/openzeppelin-solidity/test/helpers/makeInterfaceId.js new file mode 100644 index 0000000..c996346 --- /dev/null +++ b/node_modules/openzeppelin-solidity/test/helpers/makeInterfaceId.js @@ -0,0 +1,25 @@ +const { soliditySha3 } = require('web3-utils'); + +const INTERFACE_ID_LENGTH = 4; + +function makeInterfaceId (interfaces = []) { + const interfaceIdBuffer = interfaces + .map(methodSignature => soliditySha3(methodSignature)) // keccak256 + .map(h => + Buffer + .from(h.substring(2), 'hex') + .slice(0, 4) // bytes4() + ) + .reduce((memo, bytes) => { + for (let i = 0; i < INTERFACE_ID_LENGTH; i++) { + memo[i] = memo[i] ^ bytes[i]; // xor + } + return memo; + }, Buffer.alloc(INTERFACE_ID_LENGTH)); + + return `0x${interfaceIdBuffer.toString('hex')}`; +} + +module.exports = { + makeInterfaceId, +}; diff --git a/node_modules/openzeppelin-solidity/test/helpers/merkleTree.js b/node_modules/openzeppelin-solidity/test/helpers/merkleTree.js new file mode 100644 index 0000000..27a8b20 --- /dev/null +++ b/node_modules/openzeppelin-solidity/test/helpers/merkleTree.js @@ -0,0 +1,135 @@ +const { keccak256, bufferToHex } = require('ethereumjs-util'); + +class MerkleTree { + constructor (elements) { + // Filter empty strings and hash elements + this.elements = elements.filter(el => el).map(el => keccak256(el)); + + // Deduplicate elements + this.elements = this.bufDedup(this.elements); + // Sort elements + this.elements.sort(Buffer.compare); + + // Create layers + this.layers = this.getLayers(this.elements); + } + + getLayers (elements) { + if (elements.length === 0) { + return [['']]; + } + + const layers = []; + layers.push(elements); + + // Get next layer until we reach the root + while (layers[layers.length - 1].length > 1) { + layers.push(this.getNextLayer(layers[layers.length - 1])); + } + + return layers; + } + + getNextLayer (elements) { + return elements.reduce((layer, el, idx, arr) => { + if (idx % 2 === 0) { + // Hash the current element with its pair element + layer.push(this.combinedHash(el, arr[idx + 1])); + } + + return layer; + }, []); + } + + combinedHash (first, second) { + if (!first) { return second; } + if (!second) { return first; } + + return keccak256(this.sortAndConcat(first, second)); + } + + getRoot () { + return this.layers[this.layers.length - 1][0]; + } + + getHexRoot () { + return bufferToHex(this.getRoot()); + } + + getProof (el) { + let idx = this.bufIndexOf(el, this.elements); + + if (idx === -1) { + throw new Error('Element does not exist in Merkle tree'); + } + + return this.layers.reduce((proof, layer) => { + const pairElement = this.getPairElement(idx, layer); + + if (pairElement) { + proof.push(pairElement); + } + + idx = Math.floor(idx / 2); + + return proof; + }, []); + } + + getHexProof (el) { + const proof = this.getProof(el); + + return this.bufArrToHexArr(proof); + } + + getPairElement (idx, layer) { + const pairIdx = idx % 2 === 0 ? idx + 1 : idx - 1; + + if (pairIdx < layer.length) { + return layer[pairIdx]; + } else { + return null; + } + } + + bufIndexOf (el, arr) { + let hash; + + // Convert element to 32 byte hash if it is not one already + if (el.length !== 32 || !Buffer.isBuffer(el)) { + hash = keccak256(el); + } else { + hash = el; + } + + for (let i = 0; i < arr.length; i++) { + if (hash.equals(arr[i])) { + return i; + } + } + + return -1; + } + + bufDedup (elements) { + return elements.filter((el, idx) => { + return this.bufIndexOf(el, elements) === idx; + }); + } + + bufArrToHexArr (arr) { + if (arr.some(el => !Buffer.isBuffer(el))) { + throw new Error('Array is not an array of buffers'); + } + + return arr.map(el => '0x' + el.toString('hex')); + } + + sortAndConcat (...args) { + return Buffer.concat([...args].sort(Buffer.compare)); + } +} + +module.exports = { + MerkleTree, +}; diff --git a/node_modules/openzeppelin-solidity/test/helpers/send.js b/node_modules/openzeppelin-solidity/test/helpers/send.js new file mode 100644 index 0000000..a01fd6b --- /dev/null +++ b/node_modules/openzeppelin-solidity/test/helpers/send.js @@ -0,0 +1,26 @@ +const ethjsABI = require('ethjs-abi'); +const { ethSendTransaction } = require('./web3'); + +function findMethod (abi, name, args) { + for (let i = 0; i < abi.length; i++) { + const methodArgs = abi[i].inputs.map(input => input.type).join(','); + if ((abi[i].name === name) && (methodArgs === args)) { + return abi[i]; + } + } +} + +async function transaction (target, name, argsTypes, argsValues, opts) { + const abiMethod = findMethod(target.abi, name, argsTypes); + const encodedData = ethjsABI.encodeMethod(abiMethod, argsValues); + return target.sendTransaction(Object.assign({ data: encodedData }, opts)); +} + +function ether (from, to, value) { + return ethSendTransaction({ from, to, value, gasPrice: 0 }); +} + +module.exports = { + ether, + transaction, +}; diff --git a/node_modules/openzeppelin-solidity/test/helpers/setup.js b/node_modules/openzeppelin-solidity/test/helpers/setup.js new file mode 100644 index 0000000..d27794d --- /dev/null +++ b/node_modules/openzeppelin-solidity/test/helpers/setup.js @@ -0,0 +1,9 @@ +const chai = require('chai'); + +const BigNumber = web3.BigNumber; +const should = chai.use(require('chai-bignumber')(BigNumber)).should(); + +module.exports = { + BigNumber, + should, +}; diff --git a/node_modules/openzeppelin-solidity/test/helpers/shouldFail.js b/node_modules/openzeppelin-solidity/test/helpers/shouldFail.js new file mode 100644 index 0000000..139339c --- /dev/null +++ b/node_modules/openzeppelin-solidity/test/helpers/shouldFail.js @@ -0,0 +1,36 @@ +const { should } = require('./setup'); + +async function shouldFailWithMessage (promise, message) { + try { + await promise; + } catch (error) { + if (message) { + error.message.should.include(message, `Wrong failure type, expected '${message}'`); + } + return; + } + + should.fail('Expected failure not received'); +} + +async function reverting (promise) { + await shouldFailWithMessage(promise, 'revert'); +} + +async function throwing (promise) { + await shouldFailWithMessage(promise, 'invalid opcode'); +} + +async function outOfGas (promise) { + await shouldFailWithMessage(promise, 'out of gas'); +} + +async function shouldFail (promise) { + await shouldFailWithMessage(promise); +} + +shouldFail.reverting = reverting; +shouldFail.throwing = throwing; +shouldFail.outOfGas = outOfGas; + +module.exports = shouldFail; diff --git a/node_modules/openzeppelin-solidity/test/helpers/sign.js b/node_modules/openzeppelin-solidity/test/helpers/sign.js new file mode 100644 index 0000000..9164a9c --- /dev/null +++ b/node_modules/openzeppelin-solidity/test/helpers/sign.js @@ -0,0 +1,74 @@ +const { sha3, soliditySha3 } = require('web3-utils'); + +const REAL_SIGNATURE_SIZE = 2 * 65; // 65 bytes in hexadecimal string legnth +const PADDED_SIGNATURE_SIZE = 2 * 96; // 96 bytes in hexadecimal string length + +const DUMMY_SIGNATURE = `0x${web3.padLeft('', REAL_SIGNATURE_SIZE)}`; + +// messageHex = '0xdeadbeef' +function toEthSignedMessageHash (messageHex) { + const messageBuffer = Buffer.from(messageHex.substring(2), 'hex'); + const prefix = Buffer.from(`\u0019Ethereum Signed Message:\n${messageBuffer.length}`); + return sha3(Buffer.concat([prefix, messageBuffer])); +} + +// signs message in node (ganache auto-applies "Ethereum Signed Message" prefix) +// messageHex = '0xdeadbeef' +const signMessage = (signer, messageHex = '0x') => { + return web3.eth.sign(signer, messageHex); // actually personal_sign +}; + +// @TODO - remove this when we migrate to web3-1.0.0 +const transformToFullName = function (json) { + if (json.name.indexOf('(') !== -1) { + return json.name; + } + + const typeName = json.inputs.map(function (i) { return i.type; }).join(); + return json.name + '(' + typeName + ')'; +}; + +/** + * Create a signer between a contract and a signer for a voucher of method, args, and redeemer + * Note that `method` is the web3 method, not the truffle-contract method + * Well truffle is terrible, but luckily (?) so is web3 < 1.0, so we get to make our own method id + * fetcher because the method on the contract isn't actually the SolidityFunction object ಠ_ಠ + * @param contract TruffleContract + * @param signer address + * @param redeemer address + * @param methodName string + * @param methodArgs any[] + */ +const getSignFor = (contract, signer) => (redeemer, methodName, methodArgs = []) => { + const parts = [ + contract.address, + redeemer, + ]; + + // if we have a method, add it to the parts that we're signing + if (methodName) { + if (methodArgs.length > 0) { + parts.push( + contract.contract[methodName].getData(...methodArgs.concat([DUMMY_SIGNATURE])).slice( + 0, + -1 * PADDED_SIGNATURE_SIZE + ) + ); + } else { + const abi = contract.abi.find(abi => abi.name === methodName); + const name = transformToFullName(abi); + const signature = sha3(name).slice(0, 10); + parts.push(signature); + } + } + + // return the signature of the "Ethereum Signed Message" hash of the hash of `parts` + const messageHex = soliditySha3(...parts); + return signMessage(signer, messageHex); +}; + +module.exports = { + signMessage, + toEthSignedMessageHash, + getSignFor, +}; diff --git a/node_modules/openzeppelin-solidity/test/helpers/test/balanceDifference.test.js b/node_modules/openzeppelin-solidity/test/helpers/test/balanceDifference.test.js new file mode 100644 index 0000000..98846db --- /dev/null +++ b/node_modules/openzeppelin-solidity/test/helpers/test/balanceDifference.test.js @@ -0,0 +1,22 @@ +const { balanceDifference } = require('../balanceDifference'); +const send = require('../send'); +const { ether } = require('../ether'); + +const BigNumber = web3.BigNumber; +require('chai') + .use(require('chai-bignumber')(BigNumber)) + .should(); + +contract('balanceDifference', function ([sender, receiver]) { + it('returns balance increments', async function () { + (await balanceDifference(receiver, () => + send.ether(sender, receiver, ether(1))) + ).should.be.bignumber.equal(ether(1)); + }); + + it('returns balance decrements', async function () { + (await balanceDifference(sender, () => + send.ether(sender, receiver, ether(1))) + ).should.be.bignumber.equal(ether(-1)); + }); +}); diff --git a/node_modules/openzeppelin-solidity/test/helpers/test/ether.test.js b/node_modules/openzeppelin-solidity/test/helpers/test/ether.test.js new file mode 100644 index 0000000..c061615 --- /dev/null +++ b/node_modules/openzeppelin-solidity/test/helpers/test/ether.test.js @@ -0,0 +1,16 @@ +const { ether } = require('../ether'); + +const BigNumber = web3.BigNumber; +require('chai') + .use(require('chai-bignumber')(BigNumber)) + .should(); + +describe('ether', function () { + it('returns a BigNumber', function () { + ether(1, 'ether').should.be.bignumber.equal(new BigNumber(1000000000000000000)); + }); + + it('works with negative amounts', function () { + ether(-1, 'ether').should.be.bignumber.equal(new BigNumber(-1000000000000000000)); + }); +}); diff --git a/node_modules/openzeppelin-solidity/test/helpers/test/expectEvent.test.js b/node_modules/openzeppelin-solidity/test/helpers/test/expectEvent.test.js new file mode 100644 index 0000000..4dd8156 --- /dev/null +++ b/node_modules/openzeppelin-solidity/test/helpers/test/expectEvent.test.js @@ -0,0 +1,375 @@ +const expectEvent = require('../expectEvent'); +const shouldFail = require('../shouldFail'); + +const EventEmitter = artifacts.require('EventEmitter'); +const IndirectEventEmitter = artifacts.require('IndirectEventEmitter'); + +const { should, BigNumber } = require('../../helpers/setup'); + +describe('expectEvent', function () { + beforeEach(async function () { + this.constructionValues = { + uint: 42, + boolean: true, + string: 'OpenZeppelin', + }; + + this.emitter = await EventEmitter.new( + this.constructionValues.uint, + this.constructionValues.boolean, + this.constructionValues.string + ); + }); + + describe('inConstructor', function () { + context('short uint value', function () { + it('accepts emitted events with correct number', async function () { + await expectEvent.inConstruction(this.emitter, 'ShortUint', + { value: this.constructionValues.uint } + ); + }); + + it('throws if an incorrect value is passed', async function () { + await shouldFail(expectEvent.inConstruction(this.emitter, 'ShortUint', { value: 23 })); + }); + }); + + context('boolean value', function () { + it('accepts emitted events with correct value', async function () { + await expectEvent.inConstruction(this.emitter, 'Boolean', { value: this.constructionValues.boolean }); + }); + + it('throws if an incorrect value is passed', async function () { + await shouldFail(expectEvent.inConstruction(this.emitter, 'Boolean', + { value: !this.constructionValues.boolean } + )); + }); + }); + + context('string value', function () { + it('accepts emitted events with correct string', async function () { + await expectEvent.inConstruction(this.emitter, 'String', { value: this.constructionValues.string }); + }); + + it('throws if an incorrect string is passed', async function () { + await shouldFail(expectEvent.inConstruction(this.emitter, 'String', { value: 'ClosedZeppelin' })); + }); + }); + + it('throws if an unemitted event is requested', async function () { + await shouldFail(expectEvent.inConstruction(this.emitter, 'UnemittedEvent')); + }); + }); + + describe('inLogs', function () { + describe('with no arguments', function () { + beforeEach(async function () { + ({ logs: this.logs } = await this.emitter.emitArgumentless()); + }); + + it('accepts emitted events', function () { + expectEvent.inLogs(this.logs, 'Argumentless'); + }); + + it('throws if an unemitted event is requested', function () { + should.Throw(() => expectEvent.inLogs(this.logs, 'UnemittedEvent')); + }); + }); + + describe('with single argument', function () { + context('short uint value', function () { + beforeEach(async function () { + this.value = 42; + ({ logs: this.logs } = await this.emitter.emitShortUint(this.value)); + }); + + it('accepts emitted events with correct JavaScript number', function () { + expectEvent.inLogs(this.logs, 'ShortUint', { value: this.value }); + }); + + it('accepts emitted events with correct BigNumber', function () { + expectEvent.inLogs(this.logs, 'ShortUint', { value: new BigNumber(this.value) }); + }); + + it('throws if an unemitted event is requested', function () { + should.Throw(() => expectEvent.inLogs(this.logs, 'UnemittedEvent', { value: this.value })); + }); + + it('throws if an incorrect value is passed', function () { + should.Throw(() => expectEvent.inLogs(this.logs, 'ShortUint', { value: 23 })); + }); + }); + + context('short int value', function () { + beforeEach(async function () { + this.value = -42; + ({ logs: this.logs } = await this.emitter.emitShortInt(this.value)); + }); + + it('accepts emitted events with correct JavaScript number', function () { + expectEvent.inLogs(this.logs, 'ShortInt', { value: this.value }); + }); + + it('accepts emitted events with correct BigNumber', function () { + expectEvent.inLogs(this.logs, 'ShortInt', { value: new BigNumber(this.value) }); + }); + + it('throws if an unemitted event is requested', function () { + should.Throw(() => expectEvent.inLogs(this.logs, 'UnemittedEvent', { value: this.value })); + }); + + it('throws if an incorrect value is passed', function () { + should.Throw(() => expectEvent.inLogs(this.logs, 'ShortInt', { value: -23 })); + }); + }); + + context('long uint value', function () { + beforeEach(async function () { + this.bigNumValue = new BigNumber('123456789012345678901234567890'); + ({ logs: this.logs } = await this.emitter.emitLongUint(this.bigNumValue)); + }); + + it('accepts emitted events with correct BigNumber', function () { + expectEvent.inLogs(this.logs, 'LongUint', { value: this.bigNumValue }); + }); + + it('throws if an unemitted event is requested', function () { + should.Throw(() => expectEvent.inLogs(this.logs, 'UnemittedEvent', { value: this.bigNumValue })); + }); + + it('throws if an incorrect value is passed', function () { + should.Throw(() => expectEvent.inLogs(this.logs, 'LongUint', { value: 2300 })); + }); + }); + + context('long int value', function () { + beforeEach(async function () { + this.bigNumValue = new BigNumber('-123456789012345678901234567890'); + ({ logs: this.logs } = await this.emitter.emitLongInt(this.bigNumValue)); + }); + + it('accepts emitted events with correct BigNumber', function () { + expectEvent.inLogs(this.logs, 'LongInt', { value: this.bigNumValue }); + }); + + it('throws if an unemitted event is requested', function () { + should.Throw(() => expectEvent.inLogs(this.logs, 'UnemittedEvent', { value: this.bigNumValue })); + }); + + it('throws if an incorrect value is passed', function () { + should.Throw(() => expectEvent.inLogs(this.logs, 'LongInt', { value: -2300 })); + }); + }); + + context('address value', function () { + beforeEach(async function () { + this.value = '0x811412068e9fbf25dc300a29e5e316f7122b282c'; + ({ logs: this.logs } = await this.emitter.emitAddress(this.value)); + }); + + it('accepts emitted events with correct address', function () { + expectEvent.inLogs(this.logs, 'Address', { value: this.value }); + }); + + it('throws if an unemitted event is requested', function () { + should.Throw(() => expectEvent.inLogs(this.logs, 'UnemittedEvent', { value: this.value })); + }); + + it('throws if an incorrect value is passed', function () { + should.Throw(() => + expectEvent.inLogs(this.logs, 'Address', { value: '0x21d04e022e0b52b5d5bcf90b7f1aabf406be002d' }) + ); + }); + }); + + context('boolean value', function () { + beforeEach(async function () { + this.value = true; + ({ logs: this.logs } = await this.emitter.emitBoolean(this.value)); + }); + + it('accepts emitted events with correct address', function () { + expectEvent.inLogs(this.logs, 'Boolean', { value: this.value }); + }); + + it('throws if an unemitted event is requested', function () { + should.Throw(() => expectEvent.inLogs(this.logs, 'UnemittedEvent', { value: this.value })); + }); + + it('throws if an incorrect value is passed', function () { + should.Throw(() => expectEvent.inLogs(this.logs, 'Boolean', { value: false })); + }); + }); + + context('string value', function () { + beforeEach(async function () { + this.value = 'OpenZeppelin'; + ({ logs: this.logs } = await this.emitter.emitString(this.value)); + }); + + it('accepts emitted events with correct string', function () { + expectEvent.inLogs(this.logs, 'String', { value: this.value }); + }); + + it('throws if an unemitted event is requested', function () { + should.Throw(() => expectEvent.inLogs(this.logs, 'UnemittedEvent', { value: this.value })); + }); + + it('throws if an incorrect value is passed', function () { + should.Throw(() => expectEvent.inLogs(this.logs, 'String', { value: 'ClosedZeppelin' })); + }); + }); + }); + + describe('with multiple arguments', function () { + beforeEach(async function () { + this.uintValue = new BigNumber('123456789012345678901234567890'); + this.booleanValue = true; + this.stringValue = 'OpenZeppelin'; + ({ logs: this.logs } = + await this.emitter.emitLongUintBooleanString(this.uintValue, this.booleanValue, this.stringValue)); + }); + + it('accepts correct values', function () { + expectEvent.inLogs(this.logs, 'LongUintBooleanString', { + uintValue: this.uintValue, booleanValue: this.booleanValue, stringValue: this.stringValue, + }); + }); + + it('throws with correct values assigned to wrong arguments', function () { + should.Throw(() => expectEvent.inLogs(this.logs, 'LongUintBooleanString', { + uintValue: this.booleanValue, booleanValue: this.uintValue, stringValue: this.stringValue, + })); + }); + + it('throws when any of the values is incorrect', function () { + should.Throw(() => expectEvent.inLogs(this.logs, 'LongUintBooleanString', { + uintValue: 23, booleanValue: this.booleanValue, stringValue: this.stringValue, + })); + + should.Throw(() => expectEvent.inLogs(this.logs, 'LongUintBooleanString', { + uintValue: this.uintValue, booleanValue: false, stringValue: this.stringValue, + })); + + should.Throw(() => expectEvent.inLogs(this.logs, 'LongUintBooleanString', { + uintValue: this.uintValue, booleanValue: this.booleanValue, stringValue: 'ClosedZeppelin', + })); + }); + }); + + describe('with multiple events', function () { + beforeEach(async function () { + this.uintValue = 42; + this.booleanValue = true; + ({ logs: this.logs } = await this.emitter.emitLongUintAndBoolean(this.uintValue, this.booleanValue)); + }); + + it('accepts all emitted events with correct values', function () { + expectEvent.inLogs(this.logs, 'LongUint', { value: this.uintValue }); + expectEvent.inLogs(this.logs, 'Boolean', { value: this.booleanValue }); + }); + + it('throws if an unemitted event is requested', function () { + should.Throw(() => expectEvent.inLogs(this.logs, 'UnemittedEvent', { value: this.uintValue })); + }); + + it('throws if incorrect values are passed', function () { + should.Throw(() => expectEvent.inLogs(this.logs, 'LongUint', { value: 23 })); + should.Throw(() => expectEvent.inLogs(this.logs, 'Boolean', { value: false })); + }); + }); + + describe('with events emitted by an indirectly called contract', function () { + beforeEach(async function () { + this.secondEmitter = await IndirectEventEmitter.new(); + + this.value = 'OpenZeppelin'; + ({ logs: this.logs } = await this.emitter.emitStringAndEmitIndirectly(this.value, this.secondEmitter.address)); + }); + + it('accepts events emitted by the directly called contract', function () { + expectEvent.inLogs(this.logs, 'String', { value: this.value }); + }); + + it('throws when passing events emitted by the indirectly called contract', function () { + should.Throw(() => expectEvent.inLogs(this.logs, 'IndirectString', { value: this.value })); + }); + }); + }); + + describe('inTransaction', function () { + describe('when emitting from called contract and indirect calls', function () { + context('string value', function () { + beforeEach(async function () { + this.secondEmitter = await IndirectEventEmitter.new(); + + this.value = 'OpenZeppelin'; + const receipt = await this.emitter.emitStringAndEmitIndirectly(this.value, this.secondEmitter.address); + this.txHash = receipt.tx; + }); + + context('with directly called contract', function () { + it('accepts emitted events with correct string', async function () { + await expectEvent.inTransaction(this.txHash, EventEmitter, 'String', { value: this.value }); + }); + + it('throws if an unemitted event is requested', async function () { + await shouldFail(expectEvent.inTransaction(this.txHash, EventEmitter, 'UnemittedEvent', + { value: this.value } + )); + }); + + it('throws if an incorrect string is passed', async function () { + await shouldFail(expectEvent.inTransaction(this.txHash, EventEmitter, 'String', + { value: 'ClosedZeppelin' } + )); + }); + + it('throws if an event emitted from other contract is passed', async function () { + await shouldFail(expectEvent.inTransaction(this.txHash, EventEmitter, 'IndirectString', + { value: this.value } + )); + }); + + it('throws if an incorrect emitter is passed', async function () { + await shouldFail(expectEvent.inTransaction(this.txHash, IndirectEventEmitter, 'String', + { value: this.value } + )); + }); + }); + + context('with indirectly called contract', function () { + it('accepts events emitted from other contracts', async function () { + await expectEvent.inTransaction(this.txHash, IndirectEventEmitter, 'IndirectString', + { value: this.value } + ); + }); + + it('throws if an unemitted event is requested', async function () { + await shouldFail(expectEvent.inTransaction(this.txHash, IndirectEventEmitter, 'UnemittedEvent', + { value: this.value } + )); + }); + + it('throws if an incorrect string is passed', async function () { + await shouldFail(expectEvent.inTransaction(this.txHash, IndirectEventEmitter, 'IndirectString', + { value: 'ClosedZeppelin' } + )); + }); + + it('throws if an event emitted from other contract is passed', async function () { + await shouldFail(expectEvent.inTransaction(this.txHash, IndirectEventEmitter, 'String', + { value: this.value } + )); + }); + + it('throws if an incorrect emitter is passed', async function () { + await shouldFail(expectEvent.inTransaction(this.txHash, EventEmitter, 'IndirectString', + { value: this.value } + )); + }); + }); + }); + }); + }); +}); diff --git a/node_modules/openzeppelin-solidity/test/helpers/test/makeInterfaceId.test.js b/node_modules/openzeppelin-solidity/test/helpers/test/makeInterfaceId.test.js new file mode 100644 index 0000000..fd49204 --- /dev/null +++ b/node_modules/openzeppelin-solidity/test/helpers/test/makeInterfaceId.test.js @@ -0,0 +1,20 @@ +const { makeInterfaceId } = require('../makeInterfaceId'); + +const OwnableInterfaceId = artifacts.require('OwnableInterfaceId'); + +require('chai') + .should(); + +describe('makeInterfaceId', function () { + it('calculates the EIP165 interface id from function signatures', async function () { + const calculator = await OwnableInterfaceId.new(); + const ownableId = await calculator.getInterfaceId(); + + makeInterfaceId([ + 'owner()', + 'isOwner()', + 'renounceOwnership()', + 'transferOwnership(address)', + ]).should.equal(ownableId); + }); +}); diff --git a/node_modules/openzeppelin-solidity/test/helpers/test/send.test.js b/node_modules/openzeppelin-solidity/test/helpers/test/send.test.js new file mode 100644 index 0000000..c868626 --- /dev/null +++ b/node_modules/openzeppelin-solidity/test/helpers/test/send.test.js @@ -0,0 +1,70 @@ +const send = require('../send'); +const shouldFail = require('../shouldFail'); +const expectEvent = require('../expectEvent'); +const { ether } = require('../ether'); +const { ethGetBalance } = require('../web3'); + +const Acknowledger = artifacts.require('Acknowledger'); + +const BigNumber = web3.BigNumber; +require('chai') + .use(require('chai-bignumber')(BigNumber)) + .should(); + +contract('send', function ([sender, receiver]) { + describe('ether', function () { + it('sends ether with no gas cost', async function () { + const value = ether(1); + + const initialSenderBalance = await ethGetBalance(sender); + const initialReceiverBalance = await ethGetBalance(receiver); + + await send.ether(sender, receiver, value); + + const finalSenderBalance = await ethGetBalance(sender); + const finalReceiverBalance = await ethGetBalance(receiver); + + finalSenderBalance.sub(initialSenderBalance).should.be.bignumber.equal(-value); + finalReceiverBalance.sub(initialReceiverBalance).should.be.bignumber.equal(value); + }); + + it('throws if the sender balance is insufficient', async function () { + const value = (await ethGetBalance(sender)).plus(1); + + await shouldFail(send.ether(sender, receiver, value)); + }); + }); + + describe('transaction', function () { + beforeEach(async function () { + this.acknowledger = await Acknowledger.new(); + }); + + it('calls a function from its signature ', async function () { + const { logs } = await send.transaction(this.acknowledger, 'foo', 'uint256', [3]); + expectEvent.inLogs(logs, 'AcknowledgeFoo', { a: 3 }); + }); + + it('calls overloaded functions with less arguments', async function () { + const { logs } = await send.transaction(this.acknowledger, 'bar', 'uint256', [3]); + expectEvent.inLogs(logs, 'AcknowledgeBarSingle', { a: 3 }); + }); + + it('calls overloaded functions with more arguments', async function () { + const { logs } = await send.transaction(this.acknowledger, 'bar', 'uint256,uint256', [3, 5]); + expectEvent.inLogs(logs, 'AcknowledgeBarDouble', { a: 3, b: 5 }); + }); + + it('throws if the number of arguments does not match', async function () { + await shouldFail(send.transaction(this.acknowledger, 'foo', 'uint256, uint256', [3, 5])); + }); + + it('throws if the method does not exist', async function () { + await shouldFail(send.transaction(this.acknowledger, 'baz', 'uint256', [3])); + }); + + it('throws if there is a mismatch in the number of types and values', async function () { + await shouldFail(send.transaction(this.acknowledger, 'foo', 'uint256', [3, 3])); + }); + }); +}); diff --git a/node_modules/openzeppelin-solidity/test/helpers/test/shouldFail.test.js b/node_modules/openzeppelin-solidity/test/helpers/test/shouldFail.test.js new file mode 100644 index 0000000..8f99efe --- /dev/null +++ b/node_modules/openzeppelin-solidity/test/helpers/test/shouldFail.test.js @@ -0,0 +1,95 @@ +const shouldFail = require('../shouldFail'); + +const BigNumber = web3.BigNumber; +const should = require('chai') + .use(require('chai-bignumber')(BigNumber)) + .should(); + +const Failer = artifacts.require('Failer'); + +async function assertFailure (promise) { + try { + await promise; + } catch (error) { + return; + } + should.fail(); +} + +describe('shouldFail', function () { + beforeEach(async function () { + this.failer = await Failer.new(); + }); + + describe('shouldFail', function () { + it('rejects if no failure occurs', async function () { + await assertFailure(shouldFail(this.failer.dontFail())); + }); + + it('accepts a revert', async function () { + await shouldFail(this.failer.failWithRevert()); + }); + + it('accepts a throw', async function () { + await shouldFail(this.failer.failWithThrow()); + }); + + it('accepts an out of gas', async function () { + await shouldFail(this.failer.failWithOutOfGas({ gas: 2000000 })); + }); + }); + + describe('reverting', function () { + it('rejects if no failure occurs', async function () { + await assertFailure(shouldFail.reverting(this.failer.dontFail())); + }); + + it('accepts a revert', async function () { + await shouldFail.reverting(this.failer.failWithRevert()); + }); + + it('rejects a throw', async function () { + await assertFailure(shouldFail.reverting(this.failer.failWithThrow())); + }); + + it('rejects an outOfGas', async function () { + await assertFailure(shouldFail.reverting(this.failer.failWithOutOfGas({ gas: 2000000 }))); + }); + }); + + describe('throwing', function () { + it('rejects if no failure occurs', async function () { + await assertFailure(shouldFail.throwing(this.failer.dontFail())); + }); + + it('accepts a throw', async function () { + await shouldFail.throwing(this.failer.failWithThrow()); + }); + + it('rejects a throw', async function () { + await assertFailure(shouldFail.throwing(this.failer.failWithRevert())); + }); + + it('rejects an outOfGas', async function () { + await assertFailure(shouldFail.throwing(this.failer.failWithOutOfGas({ gas: 2000000 }))); + }); + }); + + describe('outOfGas', function () { + it('rejects if no failure occurs', async function () { + await assertFailure(shouldFail.outOfGas(this.failer.dontFail())); + }); + + it('accepts an out of gas', async function () { + await shouldFail.outOfGas(this.failer.failWithOutOfGas({ gas: 2000000 })); + }); + + it('rejects a revert', async function () { + await assertFailure(shouldFail.outOfGas(this.failer.failWithRevert())); + }); + + it('rejects a throw', async function () { + await assertFailure(shouldFail.outOfGas(this.failer.failWithThrow())); + }); + }); +}); diff --git a/node_modules/openzeppelin-solidity/test/helpers/test/time.test.js b/node_modules/openzeppelin-solidity/test/helpers/test/time.test.js new file mode 100644 index 0000000..556ae92 --- /dev/null +++ b/node_modules/openzeppelin-solidity/test/helpers/test/time.test.js @@ -0,0 +1,77 @@ +const time = require('../time'); +const shouldFail = require('../shouldFail'); + +const BigNumber = web3.BigNumber; +require('chai') + .use(require('chai-bignumber')(BigNumber)) + .should(); + +describe('time', function () { + const TOLERANCE_SECONDS = 1; + + describe('duration', function () { + it('converts seconds to seconds', function () { + time.duration.seconds(1).should.equal(1); + }); + + it('converts minutes to seconds', function () { + time.duration.minutes(1).should.equal(60); + }); + + it('converts hours to seconds', function () { + time.duration.hours(1).should.equal(60 * 60); + }); + + it('converts days to seconds', function () { + time.duration.days(1).should.equal(60 * 60 * 24); + }); + + it('converts weeks to seconds', function () { + time.duration.weeks(1).should.equal(60 * 60 * 24 * 7); + }); + + it('converts years to seconds', function () { + time.duration.years(1).should.equal(60 * 60 * 24 * 365); + }); + }); + + describe('advanceBlock', function () { + it('increases the block number by one', async function () { + const startingBlock = web3.eth.blockNumber; + await time.advanceBlock(); + web3.eth.blockNumber.should.be.bignumber.equal(startingBlock + 1); + }); + }); + + context('with starting time', function () { + beforeEach(async function () { + await time.advanceBlock(); + this.start = await time.latest(); + }); + + describe('increase', function () { + it('increases time by a duration', async function () { + await time.increase(time.duration.hours(1)); + + const end = this.start + time.duration.hours(1); + (await time.latest()).should.be.closeTo(end, TOLERANCE_SECONDS); + }); + + it('throws with negative durations', async function () { + await shouldFail(time.increase(-1)); + }); + }); + + describe('increaseTo', function () { + it('increases time to a time in the future', async function () { + const end = this.start + time.duration.hours(1); + await time.increaseTo(end); + (await time.latest()).should.be.closeTo(end, TOLERANCE_SECONDS); + }); + + it('throws with a time in the past', async function () { + await shouldFail(time.increaseTo(this.start - 30)); + }); + }); + }); +}); diff --git a/node_modules/openzeppelin-solidity/test/helpers/time.js b/node_modules/openzeppelin-solidity/test/helpers/time.js new file mode 100644 index 0000000..c8c8440 --- /dev/null +++ b/node_modules/openzeppelin-solidity/test/helpers/time.js @@ -0,0 +1,60 @@ +const { ethGetBlock } = require('./web3'); +const pify = require('pify'); + +function advanceBlock () { + return pify(web3.currentProvider.sendAsync)({ + jsonrpc: '2.0', + method: 'evm_mine', + }); +} + +// Returns the time of the last mined block in seconds +async function latest () { + const block = await ethGetBlock('latest'); + return block.timestamp; +} + +// Increases ganache time by the passed duration in seconds +async function increase (duration) { + if (duration < 0) throw Error(`Cannot increase time by a negative amount (${duration})`); + + await pify(web3.currentProvider.sendAsync)({ + jsonrpc: '2.0', + method: 'evm_increaseTime', + params: [duration], + }); + + await advanceBlock(); +} + +/** + * Beware that due to the need of calling two separate ganache methods and rpc calls overhead + * it's hard to increase time precisely to a target point so design your test to tolerate + * small fluctuations from time to time. + * + * @param target time in seconds + */ +async function increaseTo (target) { + const now = (await latest()); + + if (target < now) throw Error(`Cannot increase current time (${now}) to a moment in the past (${target})`); + const diff = target - now; + return increase(diff); +} + +const duration = { + seconds: function (val) { return val; }, + minutes: function (val) { return val * this.seconds(60); }, + hours: function (val) { return val * this.minutes(60); }, + days: function (val) { return val * this.hours(24); }, + weeks: function (val) { return val * this.days(7); }, + years: function (val) { return val * this.days(365); }, +}; + +module.exports = { + advanceBlock, + latest, + increase, + increaseTo, + duration, +}; diff --git a/node_modules/openzeppelin-solidity/test/helpers/web3.js b/node_modules/openzeppelin-solidity/test/helpers/web3.js new file mode 100644 index 0000000..b6cd493 --- /dev/null +++ b/node_modules/openzeppelin-solidity/test/helpers/web3.js @@ -0,0 +1,10 @@ +const pify = require('pify'); + +const ethAsync = pify(web3.eth); + +module.exports = { + ethGetBalance: ethAsync.getBalance, + ethGetBlock: ethAsync.getBlock, + ethGetTransactionReceipt: ethAsync.getTransactionReceipt, + ethSendTransaction: ethAsync.sendTransaction, +}; diff --git a/node_modules/openzeppelin-solidity/test/introspection/ERC165.test.js b/node_modules/openzeppelin-solidity/test/introspection/ERC165.test.js new file mode 100644 index 0000000..0dc2f84 --- /dev/null +++ b/node_modules/openzeppelin-solidity/test/introspection/ERC165.test.js @@ -0,0 +1,23 @@ +const { shouldSupportInterfaces } = require('./SupportsInterface.behavior'); +const shouldFail = require('../helpers/shouldFail'); + +const ERC165Mock = artifacts.require('ERC165Mock'); + +require('chai') + .should(); + +contract('ERC165', function () { + beforeEach(async function () { + this.mock = await ERC165Mock.new(); + }); + + it('does not allow 0xffffffff', async function () { + await shouldFail.reverting( + this.mock.registerInterface(0xffffffff) + ); + }); + + shouldSupportInterfaces([ + 'ERC165', + ]); +}); diff --git a/node_modules/openzeppelin-solidity/test/introspection/ERC165Checker.test.js b/node_modules/openzeppelin-solidity/test/introspection/ERC165Checker.test.js new file mode 100644 index 0000000..c339c78 --- /dev/null +++ b/node_modules/openzeppelin-solidity/test/introspection/ERC165Checker.test.js @@ -0,0 +1,136 @@ +const ERC165CheckerMock = artifacts.require('ERC165CheckerMock'); +const ERC165NotSupported = artifacts.require('ERC165NotSupported'); +const ERC165InterfacesSupported = artifacts.require('ERC165InterfacesSupported'); + +const DUMMY_ID = '0xdeadbeef'; +const DUMMY_ID_2 = '0xcafebabe'; +const DUMMY_ID_3 = '0xdecafbad'; +const DUMMY_UNSUPPORTED_ID = '0xbaddcafe'; +const DUMMY_UNSUPPORTED_ID_2 = '0xbaadcafe'; +const DUMMY_ACCOUNT = '0x1111111111111111111111111111111111111111'; + +require('../helpers/setup'); + +contract('ERC165Checker', function () { + beforeEach(async function () { + this.mock = await ERC165CheckerMock.new(); + }); + + context('ERC165 not supported', function () { + beforeEach(async function () { + this.target = await ERC165NotSupported.new(); + }); + + it('does not support ERC165', async function () { + const supported = await this.mock.supportsERC165(this.target.address); + supported.should.equal(false); + }); + + it('does not support mock interface via supportsInterface', async function () { + const supported = await this.mock.supportsInterface(this.target.address, DUMMY_ID); + supported.should.equal(false); + }); + + it('does not support mock interface via supportsAllInterfaces', async function () { + const supported = await this.mock.supportsAllInterfaces(this.target.address, [DUMMY_ID]); + supported.should.equal(false); + }); + }); + + context('ERC165 supported', function () { + beforeEach(async function () { + this.target = await ERC165InterfacesSupported.new([]); + }); + + it('supports ERC165', async function () { + const supported = await this.mock.supportsERC165(this.target.address); + supported.should.equal(true); + }); + + it('does not support mock interface via supportsInterface', async function () { + const supported = await this.mock.supportsInterface(this.target.address, DUMMY_ID); + supported.should.equal(false); + }); + + it('does not support mock interface via supportsAllInterfaces', async function () { + const supported = await this.mock.supportsAllInterfaces(this.target.address, [DUMMY_ID]); + supported.should.equal(false); + }); + }); + + context('ERC165 and single interface supported', function () { + beforeEach(async function () { + this.target = await ERC165InterfacesSupported.new([DUMMY_ID]); + }); + + it('supports ERC165', async function () { + const supported = await this.mock.supportsERC165(this.target.address); + supported.should.equal(true); + }); + + it('supports mock interface via supportsInterface', async function () { + const supported = await this.mock.supportsInterface(this.target.address, DUMMY_ID); + supported.should.equal(true); + }); + + it('supports mock interface via supportsAllInterfaces', async function () { + const supported = await this.mock.supportsAllInterfaces(this.target.address, [DUMMY_ID]); + supported.should.equal(true); + }); + }); + + context('ERC165 and many interfaces supported', function () { + beforeEach(async function () { + this.supportedInterfaces = [DUMMY_ID, DUMMY_ID_2, DUMMY_ID_3]; + this.target = await ERC165InterfacesSupported.new(this.supportedInterfaces); + }); + + it('supports ERC165', async function () { + const supported = await this.mock.supportsERC165(this.target.address); + supported.should.equal(true); + }); + + it('supports each interfaceId via supportsInterface', async function () { + for (const interfaceId of this.supportedInterfaces) { + const supported = await this.mock.supportsInterface(this.target.address, interfaceId); + supported.should.equal(true); + }; + }); + + it('supports all interfaceIds via supportsAllInterfaces', async function () { + const supported = await this.mock.supportsAllInterfaces(this.target.address, this.supportedInterfaces); + supported.should.equal(true); + }); + + it('supports none of the interfaces queried via supportsAllInterfaces', async function () { + const interfaceIdsToTest = [DUMMY_UNSUPPORTED_ID, DUMMY_UNSUPPORTED_ID_2]; + + const supported = await this.mock.supportsAllInterfaces(this.target.address, interfaceIdsToTest); + supported.should.equal(false); + }); + + it('supports not all of the interfaces queried via supportsAllInterfaces', async function () { + const interfaceIdsToTest = [...this.supportedInterfaces, DUMMY_UNSUPPORTED_ID]; + + const supported = await this.mock.supportsAllInterfaces(this.target.address, interfaceIdsToTest); + supported.should.equal(false); + }); + }); + + context('account address does not support ERC165', function () { + it('does not support ERC165', async function () { + const supported = await this.mock.supportsERC165(DUMMY_ACCOUNT); + supported.should.equal(false); + }); + + it('does not support mock interface via supportsInterface', async function () { + const supported = await this.mock.supportsInterface(DUMMY_ACCOUNT, DUMMY_ID); + supported.should.equal(false); + }); + + it('does not support mock interface via supportsAllInterfaces', async function () { + const supported = await this.mock.supportsAllInterfaces(DUMMY_ACCOUNT, [DUMMY_ID]); + supported.should.equal(false); + }); + }); +}); diff --git a/node_modules/openzeppelin-solidity/test/introspection/SupportsInterface.behavior.js b/node_modules/openzeppelin-solidity/test/introspection/SupportsInterface.behavior.js new file mode 100644 index 0000000..838787f --- /dev/null +++ b/node_modules/openzeppelin-solidity/test/introspection/SupportsInterface.behavior.js @@ -0,0 +1,56 @@ +const { makeInterfaceId } = require('../helpers/makeInterfaceId'); + +const INTERFACE_IDS = { + ERC165: makeInterfaceId([ + 'supportsInterface(bytes4)', + ]), + ERC721: makeInterfaceId([ + 'balanceOf(address)', + 'ownerOf(uint256)', + 'approve(address,uint256)', + 'getApproved(uint256)', + 'setApprovalForAll(address,bool)', + 'isApprovedForAll(address,address)', + 'transferFrom(address,address,uint256)', + 'safeTransferFrom(address,address,uint256)', + 'safeTransferFrom(address,address,uint256,bytes)', + ]), + ERC721Enumerable: makeInterfaceId([ + 'totalSupply()', + 'tokenOfOwnerByIndex(address,uint256)', + 'tokenByIndex(uint256)', + ]), + ERC721Metadata: makeInterfaceId([ + 'name()', + 'symbol()', + 'tokenURI(uint256)', + ]), + ERC721Exists: makeInterfaceId([ + 'exists(uint256)', + ]), +}; + +function shouldSupportInterfaces (interfaces = []) { + describe('ERC165\'s supportsInterface(bytes4)', function () { + beforeEach(function () { + this.thing = this.mock || this.token; + }); + + for (const k of interfaces) { + const interfaceId = INTERFACE_IDS[k]; + describe(k, function () { + it('should use less than 30k gas', async function () { + (await this.thing.supportsInterface.estimateGas(interfaceId)).should.be.lte(30000); + }); + + it('is supported', async function () { + (await this.thing.supportsInterface(interfaceId)).should.equal(true); + }); + }); + } + }); +} + +module.exports = { + shouldSupportInterfaces, +}; diff --git a/node_modules/openzeppelin-solidity/test/lifecycle/Pausable.test.js b/node_modules/openzeppelin-solidity/test/lifecycle/Pausable.test.js new file mode 100644 index 0000000..7b8d3e8 --- /dev/null +++ b/node_modules/openzeppelin-solidity/test/lifecycle/Pausable.test.js @@ -0,0 +1,109 @@ +const shouldFail = require('../helpers/shouldFail'); +const expectEvent = require('../helpers/expectEvent'); + +const PausableMock = artifacts.require('PausableMock'); +const { shouldBehaveLikePublicRole } = require('../access/roles/PublicRole.behavior'); + +require('../helpers/setup'); + +contract('Pausable', function ([_, pauser, otherPauser, anyone, ...otherAccounts]) { + beforeEach(async function () { + this.pausable = await PausableMock.new({ from: pauser }); + }); + + describe('pauser role', function () { + beforeEach(async function () { + this.contract = this.pausable; + await this.contract.addPauser(otherPauser, { from: pauser }); + }); + + shouldBehaveLikePublicRole(pauser, otherPauser, otherAccounts, 'pauser'); + }); + + context('when unapused', function () { + beforeEach(async function () { + (await this.pausable.paused()).should.equal(false); + }); + + it('can perform normal process in non-pause', async function () { + (await this.pausable.count()).should.be.bignumber.equal(0); + + await this.pausable.normalProcess({ from: anyone }); + (await this.pausable.count()).should.be.bignumber.equal(1); + }); + + it('cannot take drastic measure in non-pause', async function () { + await shouldFail.reverting(this.pausable.drasticMeasure({ from: anyone })); + (await this.pausable.drasticMeasureTaken()).should.equal(false); + }); + + describe('pausing', function () { + it('is pausable by the pauser', async function () { + await this.pausable.pause({ from: pauser }); + (await this.pausable.paused()).should.equal(true); + }); + + it('reverts when pausing from non-pauser', async function () { + await shouldFail.reverting(this.pausable.pause({ from: anyone })); + }); + + context('when paused', function () { + beforeEach(async function () { + ({ logs: this.logs } = await this.pausable.pause({ from: pauser })); + }); + + it('emits a Paused event', function () { + expectEvent.inLogs(this.logs, 'Paused', { account: pauser }); + }); + + it('cannot perform normal process in pause', async function () { + await shouldFail.reverting(this.pausable.normalProcess({ from: anyone })); + }); + + it('can take a drastic measure in a pause', async function () { + await this.pausable.drasticMeasure({ from: anyone }); + (await this.pausable.drasticMeasureTaken()).should.equal(true); + }); + + it('reverts when re-pausing', async function () { + await shouldFail.reverting(this.pausable.pause({ from: pauser })); + }); + + describe('unpausing', function () { + it('is unpausable by the pauser', async function () { + await this.pausable.unpause({ from: pauser }); + (await this.pausable.paused()).should.equal(false); + }); + + it('reverts when unpausing from non-pauser', async function () { + await shouldFail.reverting(this.pausable.unpause({ from: anyone })); + }); + + context('when unpaused', function () { + beforeEach(async function () { + ({ logs: this.logs } = await this.pausable.unpause({ from: pauser })); + }); + + it('emits an Unpaused event', function () { + expectEvent.inLogs(this.logs, 'Unpaused', { account: pauser }); + }); + + it('should resume allowing normal process', async function () { + (await this.pausable.count()).should.be.bignumber.equal(0); + await this.pausable.normalProcess({ from: anyone }); + (await this.pausable.count()).should.be.bignumber.equal(1); + }); + + it('should prevent drastic measure', async function () { + await shouldFail.reverting(this.pausable.drasticMeasure({ from: anyone })); + }); + + it('reverts when re-unpausing', async function () { + await shouldFail.reverting(this.pausable.unpause({ from: pauser })); + }); + }); + }); + }); + }); + }); +}); diff --git a/node_modules/openzeppelin-solidity/test/math/Math.test.js b/node_modules/openzeppelin-solidity/test/math/Math.test.js new file mode 100644 index 0000000..99ab045 --- /dev/null +++ b/node_modules/openzeppelin-solidity/test/math/Math.test.js @@ -0,0 +1,56 @@ +const MathMock = artifacts.require('MathMock'); + +const { BigNumber } = require('../helpers/setup'); + +contract('Math', function () { + const min = 1234; + const max = 5678; + + beforeEach(async function () { + this.math = await MathMock.new(); + }); + + describe('max', function () { + it('is correctly detected in first argument position', async function () { + (await this.math.max(max, min)).should.be.bignumber.equal(max); + }); + + it('is correctly detected in second argument position', async function () { + (await this.math.max(min, max)).should.be.bignumber.equal(max); + }); + }); + + describe('min', function () { + it('is correctly detected in first argument position', async function () { + (await this.math.min(min, max)).should.be.bignumber.equal(min); + }); + + it('is correctly detected in second argument position', async function () { + (await this.math.min(max, min)).should.be.bignumber.equal(min); + }); + }); + + describe('average', function () { + function bnAverage (a, b) { + return a.plus(b).div(2).truncated(); + } + + it('is correctly calculated with two odd numbers', async function () { + const a = new BigNumber(57417); + const b = new BigNumber(95431); + (await this.math.average(a, b)).should.be.bignumber.equal(bnAverage(a, b)); + }); + + it('is correctly calculated with two even numbers', async function () { + const a = new BigNumber(42304); + const b = new BigNumber(84346); + (await this.math.average(a, b)).should.be.bignumber.equal(bnAverage(a, b)); + }); + + it('is correctly calculated with one even and one odd number', async function () { + const a = new BigNumber(57417); + const b = new BigNumber(84346); + (await this.math.average(a, b)).should.be.bignumber.equal(bnAverage(a, b)); + }); + }); +}); diff --git a/node_modules/openzeppelin-solidity/test/math/SafeMath.test.js b/node_modules/openzeppelin-solidity/test/math/SafeMath.test.js new file mode 100644 index 0000000..221c998 --- /dev/null +++ b/node_modules/openzeppelin-solidity/test/math/SafeMath.test.js @@ -0,0 +1,143 @@ +const shouldFail = require('../helpers/shouldFail'); +const { MAX_UINT256 } = require('../helpers/constants'); + +const SafeMathMock = artifacts.require('SafeMathMock'); + +const { BigNumber } = require('../helpers/setup'); + +contract('SafeMath', function () { + beforeEach(async function () { + this.safeMath = await SafeMathMock.new(); + }); + + describe('add', function () { + it('adds correctly', async function () { + const a = new BigNumber(5678); + const b = new BigNumber(1234); + + (await this.safeMath.add(a, b)).should.be.bignumber.equal(a.plus(b)); + }); + + it('reverts on addition overflow', async function () { + const a = MAX_UINT256; + const b = new BigNumber(1); + + await shouldFail.reverting(this.safeMath.add(a, b)); + }); + }); + + describe('sub', function () { + it('subtracts correctly', async function () { + const a = new BigNumber(5678); + const b = new BigNumber(1234); + + (await this.safeMath.sub(a, b)).should.be.bignumber.equal(a.minus(b)); + }); + + it('reverts if subtraction result would be negative', async function () { + const a = new BigNumber(1234); + const b = new BigNumber(5678); + + await shouldFail.reverting(this.safeMath.sub(a, b)); + }); + }); + + describe('mul', function () { + it('multiplies correctly', async function () { + const a = new BigNumber(1234); + const b = new BigNumber(5678); + + (await this.safeMath.mul(a, b)).should.be.bignumber.equal(a.times(b)); + }); + + it('handles a zero product correctly (first number as zero)', async function () { + const a = new BigNumber(0); + const b = new BigNumber(5678); + + (await this.safeMath.mul(a, b)).should.be.bignumber.equal(a.times(b)); + }); + + it('handles a zero product correctly (second number as zero)', async function () { + const a = new BigNumber(5678); + const b = new BigNumber(0); + + (await this.safeMath.mul(a, b)).should.be.bignumber.equal(a.times(b)); + }); + + it('reverts on multiplication overflow', async function () { + const a = MAX_UINT256; + const b = new BigNumber(2); + + await shouldFail.reverting(this.safeMath.mul(a, b)); + }); + }); + + describe('div', function () { + it('divides correctly', async function () { + const a = new BigNumber(5678); + const b = new BigNumber(5678); + + (await this.safeMath.div(a, b)).should.be.bignumber.equal(a.div(b)); + }); + + it('divides zero correctly', async function () { + const a = new BigNumber(0); + const b = new BigNumber(5678); + + (await this.safeMath.div(a, b)).should.be.bignumber.equal(0); + }); + + it('returns complete number result on non-even division', async function () { + const a = new BigNumber(7000); + const b = new BigNumber(5678); + + (await this.safeMath.div(a, b)).should.be.bignumber.equal(1); + }); + + it('reverts on zero division', async function () { + const a = new BigNumber(5678); + const b = new BigNumber(0); + + await shouldFail.reverting(this.safeMath.div(a, b)); + }); + }); + + describe('mod', function () { + describe('modulos correctly', async function () { + it('when the dividend is smaller than the divisor', async function () { + const a = new BigNumber(284); + const b = new BigNumber(5678); + + (await this.safeMath.mod(a, b)).should.be.bignumber.equal(a.mod(b)); + }); + + it('when the dividend is equal to the divisor', async function () { + const a = new BigNumber(5678); + const b = new BigNumber(5678); + + (await this.safeMath.mod(a, b)).should.be.bignumber.equal(a.mod(b)); + }); + + it('when the dividend is larger than the divisor', async function () { + const a = new BigNumber(7000); + const b = new BigNumber(5678); + + (await this.safeMath.mod(a, b)).should.be.bignumber.equal(a.mod(b)); + }); + + it('when the dividend is a multiple of the divisor', async function () { + const a = new BigNumber(17034); // 17034 == 5678 * 3 + const b = new BigNumber(5678); + + (await this.safeMath.mod(a, b)).should.be.bignumber.equal(a.mod(b)); + }); + }); + + it('reverts with a 0 divisor', async function () { + const a = new BigNumber(5678); + const b = new BigNumber(0); + + await shouldFail.reverting(this.safeMath.mod(a, b)); + }); + }); +}); diff --git a/node_modules/openzeppelin-solidity/test/ownership/Ownable.behavior.js b/node_modules/openzeppelin-solidity/test/ownership/Ownable.behavior.js new file mode 100644 index 0000000..a23030d --- /dev/null +++ b/node_modules/openzeppelin-solidity/test/ownership/Ownable.behavior.js @@ -0,0 +1,44 @@ +const shouldFail = require('../helpers/shouldFail'); +const expectEvent = require('../helpers/expectEvent'); +const { ZERO_ADDRESS } = require('../helpers/constants'); +require('./../helpers/setup'); + +function shouldBehaveLikeOwnable (owner, [anyone]) { + describe('as an ownable', function () { + it('should have an owner', async function () { + (await this.ownable.owner()).should.equal(owner); + }); + + it('changes owner after transfer', async function () { + (await this.ownable.isOwner({ from: anyone })).should.be.equal(false); + const { logs } = await this.ownable.transferOwnership(anyone, { from: owner }); + expectEvent.inLogs(logs, 'OwnershipTransferred'); + + (await this.ownable.owner()).should.equal(anyone); + (await this.ownable.isOwner({ from: anyone })).should.be.equal(true); + }); + + it('should prevent non-owners from transfering', async function () { + await shouldFail.reverting(this.ownable.transferOwnership(anyone, { from: anyone })); + }); + + it('should guard ownership against stuck state', async function () { + await shouldFail.reverting(this.ownable.transferOwnership(null, { from: owner })); + }); + + it('loses owner after renouncement', async function () { + const { logs } = await this.ownable.renounceOwnership({ from: owner }); + expectEvent.inLogs(logs, 'OwnershipTransferred'); + + (await this.ownable.owner()).should.equal(ZERO_ADDRESS); + }); + + it('should prevent non-owners from renouncement', async function () { + await shouldFail.reverting(this.ownable.renounceOwnership({ from: anyone })); + }); + }); +} + +module.exports = { + shouldBehaveLikeOwnable, +}; diff --git a/node_modules/openzeppelin-solidity/test/ownership/Ownable.test.js b/node_modules/openzeppelin-solidity/test/ownership/Ownable.test.js new file mode 100644 index 0000000..6f8a813 --- /dev/null +++ b/node_modules/openzeppelin-solidity/test/ownership/Ownable.test.js @@ -0,0 +1,11 @@ +const { shouldBehaveLikeOwnable } = require('./Ownable.behavior'); + +const Ownable = artifacts.require('OwnableMock'); + +contract('Ownable', function ([_, owner, ...otherAccounts]) { + beforeEach(async function () { + this.ownable = await Ownable.new({ from: owner }); + }); + + shouldBehaveLikeOwnable(owner, otherAccounts); +}); diff --git a/node_modules/openzeppelin-solidity/test/ownership/Secondary.test.js b/node_modules/openzeppelin-solidity/test/ownership/Secondary.test.js new file mode 100644 index 0000000..cbc9632 --- /dev/null +++ b/node_modules/openzeppelin-solidity/test/ownership/Secondary.test.js @@ -0,0 +1,57 @@ +const shouldFail = require('../helpers/shouldFail'); +const expectEvent = require('../helpers/expectEvent'); +const { ZERO_ADDRESS } = require('../helpers/constants'); + +const SecondaryMock = artifacts.require('SecondaryMock'); + +require('../helpers/setup'); + +contract('Secondary', function ([_, primary, newPrimary, anyone]) { + beforeEach(async function () { + this.secondary = await SecondaryMock.new({ from: primary }); + }); + + it('stores the primary\'s address', async function () { + (await this.secondary.primary()).should.equal(primary); + }); + + describe('onlyPrimary', function () { + it('allows the primary account to call onlyPrimary functions', async function () { + await this.secondary.onlyPrimaryMock({ from: primary }); + }); + + it('reverts when anyone calls onlyPrimary functions', async function () { + await shouldFail.reverting(this.secondary.onlyPrimaryMock({ from: anyone })); + }); + }); + + describe('transferPrimary', function () { + it('makes the recipient the new primary', async function () { + const { logs } = await this.secondary.transferPrimary(newPrimary, { from: primary }); + expectEvent.inLogs(logs, 'PrimaryTransferred', { recipient: newPrimary }); + (await this.secondary.primary()).should.equal(newPrimary); + }); + + it('reverts when transfering to the null address', async function () { + await shouldFail.reverting(this.secondary.transferPrimary(ZERO_ADDRESS, { from: primary })); + }); + + it('reverts when called by anyone', async function () { + await shouldFail.reverting(this.secondary.transferPrimary(newPrimary, { from: anyone })); + }); + + context('with new primary', function () { + beforeEach(async function () { + await this.secondary.transferPrimary(newPrimary, { from: primary }); + }); + + it('allows the new primary account to call onlyPrimary functions', async function () { + await this.secondary.onlyPrimaryMock({ from: newPrimary }); + }); + + it('reverts when the old primary account calls onlyPrimary functions', async function () { + await shouldFail.reverting(this.secondary.onlyPrimaryMock({ from: primary })); + }); + }); + }); +}); diff --git a/node_modules/openzeppelin-solidity/test/payment/PaymentSplitter.test.js b/node_modules/openzeppelin-solidity/test/payment/PaymentSplitter.test.js new file mode 100644 index 0000000..58c1712 --- /dev/null +++ b/node_modules/openzeppelin-solidity/test/payment/PaymentSplitter.test.js @@ -0,0 +1,114 @@ +const { ethGetBalance } = require('../helpers/web3'); +const expectEvent = require('../helpers/expectEvent'); +const send = require('./../helpers/send'); +const { ether } = require('../helpers/ether'); +const { ZERO_ADDRESS } = require('./../helpers/constants'); + +require('../helpers/setup'); + +const shouldFail = require('../helpers/shouldFail'); +const PaymentSplitter = artifacts.require('PaymentSplitter'); + +contract('PaymentSplitter', function ([_, owner, payee1, payee2, payee3, nonpayee1, payer1]) { + const amount = ether(1.0); + + it('rejects an empty set of payees', async function () { + await shouldFail.reverting(PaymentSplitter.new([], [])); + }); + + it('rejects more payees than shares', async function () { + await shouldFail.reverting(PaymentSplitter.new([payee1, payee2, payee3], [20, 30])); + }); + + it('rejects more shares than payees', async function () { + await shouldFail.reverting(PaymentSplitter.new([payee1, payee2], [20, 30, 40])); + }); + + it('rejects null payees', async function () { + await shouldFail.reverting(PaymentSplitter.new([payee1, ZERO_ADDRESS], [20, 30])); + }); + + it('rejects zero-valued shares', async function () { + await shouldFail.reverting(PaymentSplitter.new([payee1, payee2], [20, 0])); + }); + + it('rejects repeated payees', async function () { + await shouldFail.reverting(PaymentSplitter.new([payee1, payee1], [20, 30])); + }); + + context('once deployed', function () { + beforeEach(async function () { + this.payees = [payee1, payee2, payee3]; + this.shares = [20, 10, 70]; + + this.contract = await PaymentSplitter.new(this.payees, this.shares); + }); + + it('should have total shares', async function () { + (await this.contract.totalShares()).should.be.bignumber.equal(20 + 10 + 70); + }); + + it('should have payees', async function () { + await Promise.all(this.payees.map(async (payee, index) => { + (await this.contract.payee(index)).should.be.equal(payee); + (await this.contract.released(payee)).should.be.bignumber.equal(0); + })); + }); + + it('should accept payments', async function () { + await send.ether(owner, this.contract.address, amount); + + (await ethGetBalance(this.contract.address)).should.be.bignumber.equal(amount); + }); + + it('should store shares if address is payee', async function () { + (await this.contract.shares(payee1)).should.be.bignumber.not.equal(0); + }); + + it('should not store shares if address is not payee', async function () { + (await this.contract.shares(nonpayee1)).should.be.bignumber.equal(0); + }); + + it('should throw if no funds to claim', async function () { + await shouldFail.reverting(this.contract.release(payee1)); + }); + + it('should throw if non-payee want to claim', async function () { + await send.ether(payer1, this.contract.address, amount); + await shouldFail.reverting(this.contract.release(nonpayee1)); + }); + + it('should distribute funds to payees', async function () { + await send.ether(payer1, this.contract.address, amount); + + // receive funds + const initBalance = await ethGetBalance(this.contract.address); + initBalance.should.be.bignumber.equal(amount); + + // distribute to payees + const initAmount1 = await ethGetBalance(payee1); + const { logs: logs1 } = await this.contract.release(payee1); + const profit1 = (await ethGetBalance(payee1)).sub(initAmount1); + profit1.sub(web3.toWei(0.20, 'ether')).abs().should.be.bignumber.lt(1e16); + expectEvent.inLogs(logs1, 'PaymentReleased', { to: payee1, amount: profit1 }); + + const initAmount2 = await ethGetBalance(payee2); + const { logs: logs2 } = await this.contract.release(payee2); + const profit2 = (await ethGetBalance(payee2)).sub(initAmount2); + profit2.sub(web3.toWei(0.10, 'ether')).abs().should.be.bignumber.lt(1e16); + expectEvent.inLogs(logs2, 'PaymentReleased', { to: payee2, amount: profit2 }); + + const initAmount3 = await ethGetBalance(payee3); + const { logs: logs3 } = await this.contract.release(payee3); + const profit3 = (await ethGetBalance(payee3)).sub(initAmount3); + profit3.sub(web3.toWei(0.70, 'ether')).abs().should.be.bignumber.lt(1e16); + expectEvent.inLogs(logs3, 'PaymentReleased', { to: payee3, amount: profit3 }); + + // end balance should be zero + (await ethGetBalance(this.contract.address)).should.be.bignumber.equal(0); + + // check correct funds released accounting + (await this.contract.totalReleased()).should.be.bignumber.equal(initBalance); + }); + }); +}); diff --git a/node_modules/openzeppelin-solidity/test/payment/PullPayment.test.js b/node_modules/openzeppelin-solidity/test/payment/PullPayment.test.js new file mode 100644 index 0000000..f82712e --- /dev/null +++ b/node_modules/openzeppelin-solidity/test/payment/PullPayment.test.js @@ -0,0 +1,45 @@ +const { balanceDifference } = require('../helpers/balanceDifference'); +const { ether } = require('../helpers/ether'); + +require('../helpers/setup'); + +const PullPaymentMock = artifacts.require('PullPaymentMock'); + +contract('PullPayment', function ([_, payer, payee1, payee2]) { + const amount = ether(17.0); + + beforeEach(async function () { + this.contract = await PullPaymentMock.new({ value: amount }); + }); + + it('can record an async payment correctly', async function () { + await this.contract.callTransfer(payee1, 100, { from: payer }); + (await this.contract.payments(payee1)).should.be.bignumber.equal(100); + }); + + it('can add multiple balances on one account', async function () { + await this.contract.callTransfer(payee1, 200, { from: payer }); + await this.contract.callTransfer(payee1, 300, { from: payer }); + (await this.contract.payments(payee1)).should.be.bignumber.equal(500); + }); + + it('can add balances on multiple accounts', async function () { + await this.contract.callTransfer(payee1, 200, { from: payer }); + await this.contract.callTransfer(payee2, 300, { from: payer }); + + (await this.contract.payments(payee1)).should.be.bignumber.equal(200); + + (await this.contract.payments(payee2)).should.be.bignumber.equal(300); + }); + + it('can withdraw payment', async function () { + (await balanceDifference(payee1, async () => { + await this.contract.callTransfer(payee1, amount, { from: payer }); + (await this.contract.payments(payee1)).should.be.bignumber.equal(amount); + + await this.contract.withdrawPayments(payee1); + })).should.be.bignumber.equal(amount); + + (await this.contract.payments(payee1)).should.be.bignumber.equal(0); + }); +}); diff --git a/node_modules/openzeppelin-solidity/test/payment/escrow/ConditionalEscrow.test.js b/node_modules/openzeppelin-solidity/test/payment/escrow/ConditionalEscrow.test.js new file mode 100644 index 0000000..bb5b5cf --- /dev/null +++ b/node_modules/openzeppelin-solidity/test/payment/escrow/ConditionalEscrow.test.js @@ -0,0 +1,36 @@ +const { shouldBehaveLikeEscrow } = require('./Escrow.behavior'); + +const shouldFail = require('../../helpers/shouldFail'); +const { ether } = require('../../helpers/ether'); + +require('../../helpers/setup'); + +const ConditionalEscrowMock = artifacts.require('ConditionalEscrowMock'); + +contract('ConditionalEscrow', function ([_, owner, payee, ...otherAccounts]) { + beforeEach(async function () { + this.escrow = await ConditionalEscrowMock.new({ from: owner }); + }); + + context('when withdrawal is allowed', function () { + beforeEach(async function () { + await Promise.all(otherAccounts.map(payee => this.escrow.setAllowed(payee, true))); + }); + + shouldBehaveLikeEscrow(owner, otherAccounts); + }); + + context('when withdrawal is disallowed', function () { + const amount = ether(23.0); + + beforeEach(async function () { + await this.escrow.setAllowed(payee, false); + }); + + it('reverts on withdrawals', async function () { + await this.escrow.deposit(payee, { from: owner, value: amount }); + + await shouldFail.reverting(this.escrow.withdraw(payee, { from: owner })); + }); + }); +}); diff --git a/node_modules/openzeppelin-solidity/test/payment/escrow/Escrow.behavior.js b/node_modules/openzeppelin-solidity/test/payment/escrow/Escrow.behavior.js new file mode 100644 index 0000000..80bde2f --- /dev/null +++ b/node_modules/openzeppelin-solidity/test/payment/escrow/Escrow.behavior.js @@ -0,0 +1,92 @@ +const expectEvent = require('../../helpers/expectEvent'); +const shouldFail = require('../../helpers/shouldFail'); +const { ethGetBalance } = require('../../helpers/web3'); +const { balanceDifference } = require('../../helpers/balanceDifference'); +const { ether } = require('../../helpers/ether'); + +require('../../helpers/setup'); + +function shouldBehaveLikeEscrow (primary, [payee1, payee2]) { + const amount = ether(42.0); + + describe('as an escrow', function () { + describe('deposits', function () { + it('can accept a single deposit', async function () { + await this.escrow.deposit(payee1, { from: primary, value: amount }); + + (await ethGetBalance(this.escrow.address)).should.be.bignumber.equal(amount); + + (await this.escrow.depositsOf(payee1)).should.be.bignumber.equal(amount); + }); + + it('can accept an empty deposit', async function () { + await this.escrow.deposit(payee1, { from: primary, value: 0 }); + }); + + it('only the primary account can deposit', async function () { + await shouldFail.reverting(this.escrow.deposit(payee1, { from: payee2 })); + }); + + it('emits a deposited event', async function () { + const { logs } = await this.escrow.deposit(payee1, { from: primary, value: amount }); + expectEvent.inLogs(logs, 'Deposited', { + payee: payee1, + weiAmount: amount, + }); + }); + + it('can add multiple deposits on a single account', async function () { + await this.escrow.deposit(payee1, { from: primary, value: amount }); + await this.escrow.deposit(payee1, { from: primary, value: amount * 2 }); + + (await ethGetBalance(this.escrow.address)).should.be.bignumber.equal(amount * 3); + + (await this.escrow.depositsOf(payee1)).should.be.bignumber.equal(amount * 3); + }); + + it('can track deposits to multiple accounts', async function () { + await this.escrow.deposit(payee1, { from: primary, value: amount }); + await this.escrow.deposit(payee2, { from: primary, value: amount * 2 }); + + (await ethGetBalance(this.escrow.address)).should.be.bignumber.equal(amount * 3); + + (await this.escrow.depositsOf(payee1)).should.be.bignumber.equal(amount); + + (await this.escrow.depositsOf(payee2)).should.be.bignumber.equal(amount * 2); + }); + }); + + describe('withdrawals', async function () { + it('can withdraw payments', async function () { + (await balanceDifference(payee1, async () => { + await this.escrow.deposit(payee1, { from: primary, value: amount }); + await this.escrow.withdraw(payee1, { from: primary }); + })).should.be.bignumber.equal(amount); + + (await ethGetBalance(this.escrow.address)).should.be.bignumber.equal(0); + (await this.escrow.depositsOf(payee1)).should.be.bignumber.equal(0); + }); + + it('can do an empty withdrawal', async function () { + await this.escrow.withdraw(payee1, { from: primary }); + }); + + it('only the primary account can withdraw', async function () { + await shouldFail.reverting(this.escrow.withdraw(payee1, { from: payee1 })); + }); + + it('emits a withdrawn event', async function () { + await this.escrow.deposit(payee1, { from: primary, value: amount }); + const { logs } = await this.escrow.withdraw(payee1, { from: primary }); + expectEvent.inLogs(logs, 'Withdrawn', { + payee: payee1, + weiAmount: amount, + }); + }); + }); + }); +} + +module.exports = { + shouldBehaveLikeEscrow, +}; diff --git a/node_modules/openzeppelin-solidity/test/payment/escrow/Escrow.test.js b/node_modules/openzeppelin-solidity/test/payment/escrow/Escrow.test.js new file mode 100644 index 0000000..6af510d --- /dev/null +++ b/node_modules/openzeppelin-solidity/test/payment/escrow/Escrow.test.js @@ -0,0 +1,11 @@ +const { shouldBehaveLikeEscrow } = require('./Escrow.behavior'); + +const Escrow = artifacts.require('Escrow'); + +contract('Escrow', function ([_, primary, ...otherAccounts]) { + beforeEach(async function () { + this.escrow = await Escrow.new({ from: primary }); + }); + + shouldBehaveLikeEscrow(primary, otherAccounts); +}); diff --git a/node_modules/openzeppelin-solidity/test/payment/escrow/RefundEscrow.test.js b/node_modules/openzeppelin-solidity/test/payment/escrow/RefundEscrow.test.js new file mode 100644 index 0000000..c0a9f8f --- /dev/null +++ b/node_modules/openzeppelin-solidity/test/payment/escrow/RefundEscrow.test.js @@ -0,0 +1,125 @@ +const shouldFail = require('../../helpers/shouldFail'); +const expectEvent = require('../../helpers/expectEvent'); +const { balanceDifference } = require('../../helpers/balanceDifference'); +const { ether } = require('../../helpers/ether'); +const { ZERO_ADDRESS } = require('../../helpers/constants'); + +require('../../helpers/setup'); + +const RefundEscrow = artifacts.require('RefundEscrow'); + +contract('RefundEscrow', function ([_, primary, beneficiary, refundee1, refundee2]) { + const amount = ether(54.0); + const refundees = [refundee1, refundee2]; + + it('requires a non-null beneficiary', async function () { + await shouldFail.reverting( + RefundEscrow.new(ZERO_ADDRESS, { from: primary }) + ); + }); + + context('once deployed', function () { + beforeEach(async function () { + this.escrow = await RefundEscrow.new(beneficiary, { from: primary }); + }); + + context('active state', function () { + it('has beneficiary and state', async function () { + (await this.escrow.beneficiary()).should.be.equal(beneficiary); + (await this.escrow.state()).should.be.bignumber.equal(0); + }); + + it('accepts deposits', async function () { + await this.escrow.deposit(refundee1, { from: primary, value: amount }); + + (await this.escrow.depositsOf(refundee1)).should.be.bignumber.equal(amount); + }); + + it('does not refund refundees', async function () { + await this.escrow.deposit(refundee1, { from: primary, value: amount }); + await shouldFail.reverting(this.escrow.withdraw(refundee1)); + }); + + it('does not allow beneficiary withdrawal', async function () { + await this.escrow.deposit(refundee1, { from: primary, value: amount }); + await shouldFail.reverting(this.escrow.beneficiaryWithdraw()); + }); + }); + + it('only the primary account can enter closed state', async function () { + await shouldFail.reverting(this.escrow.close({ from: beneficiary })); + + const { logs } = await this.escrow.close({ from: primary }); + expectEvent.inLogs(logs, 'RefundsClosed'); + }); + + context('closed state', function () { + beforeEach(async function () { + await Promise.all(refundees.map(refundee => this.escrow.deposit(refundee, { from: primary, value: amount }))); + + await this.escrow.close({ from: primary }); + }); + + it('rejects deposits', async function () { + await shouldFail.reverting(this.escrow.deposit(refundee1, { from: primary, value: amount })); + }); + + it('does not refund refundees', async function () { + await shouldFail.reverting(this.escrow.withdraw(refundee1)); + }); + + it('allows beneficiary withdrawal', async function () { + (await balanceDifference(beneficiary, () => + this.escrow.beneficiaryWithdraw() + )).should.be.bignumber.equal(amount * refundees.length); + }); + + it('prevents entering the refund state', async function () { + await shouldFail.reverting(this.escrow.enableRefunds({ from: primary })); + }); + + it('prevents re-entering the closed state', async function () { + await shouldFail.reverting(this.escrow.close({ from: primary })); + }); + }); + + it('only the primary account can enter refund state', async function () { + await shouldFail.reverting(this.escrow.enableRefunds({ from: beneficiary })); + + const { logs } = await this.escrow.enableRefunds({ from: primary }); + expectEvent.inLogs(logs, 'RefundsEnabled'); + }); + + context('refund state', function () { + beforeEach(async function () { + await Promise.all(refundees.map(refundee => this.escrow.deposit(refundee, { from: primary, value: amount }))); + + await this.escrow.enableRefunds({ from: primary }); + }); + + it('rejects deposits', async function () { + await shouldFail.reverting(this.escrow.deposit(refundee1, { from: primary, value: amount })); + }); + + it('refunds refundees', async function () { + for (const refundee of [refundee1, refundee2]) { + (await balanceDifference(refundee, () => + this.escrow.withdraw(refundee, { from: primary })) + ).should.be.bignumber.equal(amount); + } + }); + + it('does not allow beneficiary withdrawal', async function () { + await shouldFail.reverting(this.escrow.beneficiaryWithdraw()); + }); + + it('prevents entering the closed state', async function () { + await shouldFail.reverting(this.escrow.close({ from: primary })); + }); + + it('prevents re-entering the refund state', async function () { + await shouldFail.reverting(this.escrow.enableRefunds({ from: primary })); + }); + }); + }); +}); diff --git a/node_modules/openzeppelin-solidity/test/token/ERC20/ERC20.test.js b/node_modules/openzeppelin-solidity/test/token/ERC20/ERC20.test.js new file mode 100644 index 0000000..16d2cab --- /dev/null +++ b/node_modules/openzeppelin-solidity/test/token/ERC20/ERC20.test.js @@ -0,0 +1,553 @@ +const shouldFail = require('../../helpers/shouldFail'); +const expectEvent = require('../../helpers/expectEvent'); +const { ZERO_ADDRESS } = require('../../helpers/constants'); + +const ERC20Mock = artifacts.require('ERC20Mock'); + +const { BigNumber } = require('../../helpers/setup'); + +contract('ERC20', function ([_, owner, recipient, anotherAccount]) { + beforeEach(async function () { + this.token = await ERC20Mock.new(owner, 100); + }); + + describe('total supply', function () { + it('returns the total amount of tokens', async function () { + (await this.token.totalSupply()).should.be.bignumber.equal(100); + }); + }); + + describe('balanceOf', function () { + describe('when the requested account has no tokens', function () { + it('returns zero', async function () { + (await this.token.balanceOf(anotherAccount)).should.be.bignumber.equal(0); + }); + }); + + describe('when the requested account has some tokens', function () { + it('returns the total amount of tokens', async function () { + (await this.token.balanceOf(owner)).should.be.bignumber.equal(100); + }); + }); + }); + + describe('transfer', function () { + describe('when the recipient is not the zero address', function () { + const to = recipient; + + describe('when the sender does not have enough balance', function () { + const amount = 101; + + it('reverts', async function () { + await shouldFail.reverting(this.token.transfer(to, amount, { from: owner })); + }); + }); + + describe('when the sender has enough balance', function () { + const amount = 100; + + it('transfers the requested amount', async function () { + await this.token.transfer(to, amount, { from: owner }); + + (await this.token.balanceOf(owner)).should.be.bignumber.equal(0); + + (await this.token.balanceOf(to)).should.be.bignumber.equal(amount); + }); + + it('emits a transfer event', async function () { + const { logs } = await this.token.transfer(to, amount, { from: owner }); + + expectEvent.inLogs(logs, 'Transfer', { + from: owner, + to: to, + value: amount, + }); + }); + }); + }); + + describe('when the recipient is the zero address', function () { + const to = ZERO_ADDRESS; + + it('reverts', async function () { + await shouldFail.reverting(this.token.transfer(to, 100, { from: owner })); + }); + }); + }); + + describe('approve', function () { + describe('when the spender is not the zero address', function () { + const spender = recipient; + + describe('when the sender has enough balance', function () { + const amount = 100; + + it('emits an approval event', async function () { + const { logs } = await this.token.approve(spender, amount, { from: owner }); + + expectEvent.inLogs(logs, 'Approval', { + owner: owner, + spender: spender, + value: amount, + }); + }); + + describe('when there was no approved amount before', function () { + it('approves the requested amount', async function () { + await this.token.approve(spender, amount, { from: owner }); + + (await this.token.allowance(owner, spender)).should.be.bignumber.equal(amount); + }); + }); + + describe('when the spender had an approved amount', function () { + beforeEach(async function () { + await this.token.approve(spender, 1, { from: owner }); + }); + + it('approves the requested amount and replaces the previous one', async function () { + await this.token.approve(spender, amount, { from: owner }); + + (await this.token.allowance(owner, spender)).should.be.bignumber.equal(amount); + }); + }); + }); + + describe('when the sender does not have enough balance', function () { + const amount = 101; + + it('emits an approval event', async function () { + const { logs } = await this.token.approve(spender, amount, { from: owner }); + + expectEvent.inLogs(logs, 'Approval', { + owner: owner, + spender: spender, + value: amount, + }); + }); + + describe('when there was no approved amount before', function () { + it('approves the requested amount', async function () { + await this.token.approve(spender, amount, { from: owner }); + + (await this.token.allowance(owner, spender)).should.be.bignumber.equal(amount); + }); + }); + + describe('when the spender had an approved amount', function () { + beforeEach(async function () { + await this.token.approve(spender, 1, { from: owner }); + }); + + it('approves the requested amount and replaces the previous one', async function () { + await this.token.approve(spender, amount, { from: owner }); + + (await this.token.allowance(owner, spender)).should.be.bignumber.equal(amount); + }); + }); + }); + }); + + describe('when the spender is the zero address', function () { + const amount = 100; + const spender = ZERO_ADDRESS; + + it('reverts', async function () { + await shouldFail.reverting(this.token.approve(spender, amount, { from: owner })); + }); + }); + }); + + describe('transfer from', function () { + const spender = recipient; + + describe('when the recipient is not the zero address', function () { + const to = anotherAccount; + + describe('when the spender has enough approved balance', function () { + beforeEach(async function () { + await this.token.approve(spender, 100, { from: owner }); + }); + + describe('when the owner has enough balance', function () { + const amount = 100; + + it('transfers the requested amount', async function () { + await this.token.transferFrom(owner, to, amount, { from: spender }); + + (await this.token.balanceOf(owner)).should.be.bignumber.equal(0); + + (await this.token.balanceOf(to)).should.be.bignumber.equal(amount); + }); + + it('decreases the spender allowance', async function () { + await this.token.transferFrom(owner, to, amount, { from: spender }); + + (await this.token.allowance(owner, spender)).should.be.bignumber.equal(0); + }); + + it('emits a transfer event', async function () { + const { logs } = await this.token.transferFrom(owner, to, amount, { from: spender }); + + expectEvent.inLogs(logs, 'Transfer', { + from: owner, + to: to, + value: amount, + }); + }); + + it('emits an approval event', async function () { + const { logs } = await this.token.transferFrom(owner, to, amount, { from: spender }); + + expectEvent.inLogs(logs, 'Approval', { + owner: owner, + spender: spender, + value: await this.token.allowance(owner, spender), + }); + }); + }); + + describe('when the owner does not have enough balance', function () { + const amount = 101; + + it('reverts', async function () { + await shouldFail.reverting(this.token.transferFrom(owner, to, amount, { from: spender })); + }); + }); + }); + + describe('when the spender does not have enough approved balance', function () { + beforeEach(async function () { + await this.token.approve(spender, 99, { from: owner }); + }); + + describe('when the owner has enough balance', function () { + const amount = 100; + + it('reverts', async function () { + await shouldFail.reverting(this.token.transferFrom(owner, to, amount, { from: spender })); + }); + }); + + describe('when the owner does not have enough balance', function () { + const amount = 101; + + it('reverts', async function () { + await shouldFail.reverting(this.token.transferFrom(owner, to, amount, { from: spender })); + }); + }); + }); + }); + + describe('when the recipient is the zero address', function () { + const amount = 100; + const to = ZERO_ADDRESS; + + beforeEach(async function () { + await this.token.approve(spender, amount, { from: owner }); + }); + + it('reverts', async function () { + await shouldFail.reverting(this.token.transferFrom(owner, to, amount, { from: spender })); + }); + }); + }); + + describe('decrease allowance', function () { + describe('when the spender is not the zero address', function () { + const spender = recipient; + + function shouldDecreaseApproval (amount) { + describe('when there was no approved amount before', function () { + it('reverts', async function () { + await shouldFail.reverting(this.token.decreaseAllowance(spender, amount, { from: owner })); + }); + }); + + describe('when the spender had an approved amount', function () { + const approvedAmount = amount; + + beforeEach(async function () { + ({ logs: this.logs } = await this.token.approve(spender, approvedAmount, { from: owner })); + }); + + it('emits an approval event', async function () { + const { logs } = await this.token.decreaseAllowance(spender, approvedAmount, { from: owner }); + + expectEvent.inLogs(logs, 'Approval', { + owner: owner, + spender: spender, + value: 0, + }); + }); + + it('decreases the spender allowance subtracting the requested amount', async function () { + await this.token.decreaseAllowance(spender, approvedAmount - 1, { from: owner }); + + (await this.token.allowance(owner, spender)).should.be.bignumber.equal(1); + }); + + it('sets the allowance to zero when all allowance is removed', async function () { + await this.token.decreaseAllowance(spender, approvedAmount, { from: owner }); + (await this.token.allowance(owner, spender)).should.be.bignumber.equal(0); + }); + + it('reverts when more than the full allowance is removed', async function () { + await shouldFail.reverting(this.token.decreaseAllowance(spender, approvedAmount + 1, { from: owner })); + }); + }); + } + + describe('when the sender has enough balance', function () { + const amount = 100; + + shouldDecreaseApproval(amount); + }); + + describe('when the sender does not have enough balance', function () { + const amount = 101; + + shouldDecreaseApproval(amount); + }); + }); + + describe('when the spender is the zero address', function () { + const amount = 100; + const spender = ZERO_ADDRESS; + + it('reverts', async function () { + await shouldFail.reverting(this.token.decreaseAllowance(spender, amount, { from: owner })); + }); + }); + }); + + describe('increase allowance', function () { + const amount = 100; + + describe('when the spender is not the zero address', function () { + const spender = recipient; + + describe('when the sender has enough balance', function () { + it('emits an approval event', async function () { + const { logs } = await this.token.increaseAllowance(spender, amount, { from: owner }); + + expectEvent.inLogs(logs, 'Approval', { + owner: owner, + spender: spender, + value: amount, + }); + }); + + describe('when there was no approved amount before', function () { + it('approves the requested amount', async function () { + await this.token.increaseAllowance(spender, amount, { from: owner }); + + (await this.token.allowance(owner, spender)).should.be.bignumber.equal(amount); + }); + }); + + describe('when the spender had an approved amount', function () { + beforeEach(async function () { + await this.token.approve(spender, 1, { from: owner }); + }); + + it('increases the spender allowance adding the requested amount', async function () { + await this.token.increaseAllowance(spender, amount, { from: owner }); + + (await this.token.allowance(owner, spender)).should.be.bignumber.equal(amount + 1); + }); + }); + }); + + describe('when the sender does not have enough balance', function () { + const amount = 101; + + it('emits an approval event', async function () { + const { logs } = await this.token.increaseAllowance(spender, amount, { from: owner }); + + expectEvent.inLogs(logs, 'Approval', { + owner: owner, + spender: spender, + value: amount, + }); + }); + + describe('when there was no approved amount before', function () { + it('approves the requested amount', async function () { + await this.token.increaseAllowance(spender, amount, { from: owner }); + + (await this.token.allowance(owner, spender)).should.be.bignumber.equal(amount); + }); + }); + + describe('when the spender had an approved amount', function () { + beforeEach(async function () { + await this.token.approve(spender, 1, { from: owner }); + }); + + it('increases the spender allowance adding the requested amount', async function () { + await this.token.increaseAllowance(spender, amount, { from: owner }); + + (await this.token.allowance(owner, spender)).should.be.bignumber.equal(amount + 1); + }); + }); + }); + }); + + describe('when the spender is the zero address', function () { + const spender = ZERO_ADDRESS; + + it('reverts', async function () { + await shouldFail.reverting(this.token.increaseAllowance(spender, amount, { from: owner })); + }); + }); + }); + + describe('_mint', function () { + const initialSupply = new BigNumber(100); + const amount = new BigNumber(50); + + it('rejects a null account', async function () { + await shouldFail.reverting(this.token.mint(ZERO_ADDRESS, amount)); + }); + + describe('for a non null account', function () { + beforeEach('minting', async function () { + const { logs } = await this.token.mint(recipient, amount); + this.logs = logs; + }); + + it('increments totalSupply', async function () { + const expectedSupply = initialSupply.plus(amount); + (await this.token.totalSupply()).should.be.bignumber.equal(expectedSupply); + }); + + it('increments recipient balance', async function () { + (await this.token.balanceOf(recipient)).should.be.bignumber.equal(amount); + }); + + it('emits Transfer event', async function () { + const event = expectEvent.inLogs(this.logs, 'Transfer', { + from: ZERO_ADDRESS, + to: recipient, + }); + + event.args.value.should.be.bignumber.equal(amount); + }); + }); + }); + + describe('_burn', function () { + const initialSupply = new BigNumber(100); + + it('rejects a null account', async function () { + await shouldFail.reverting(this.token.burn(ZERO_ADDRESS, 1)); + }); + + describe('for a non null account', function () { + it('rejects burning more than balance', async function () { + await shouldFail.reverting(this.token.burn(owner, initialSupply.plus(1))); + }); + + const describeBurn = function (description, amount) { + describe(description, function () { + beforeEach('burning', async function () { + const { logs } = await this.token.burn(owner, amount); + this.logs = logs; + }); + + it('decrements totalSupply', async function () { + const expectedSupply = initialSupply.minus(amount); + (await this.token.totalSupply()).should.be.bignumber.equal(expectedSupply); + }); + + it('decrements owner balance', async function () { + const expectedBalance = initialSupply.minus(amount); + (await this.token.balanceOf(owner)).should.be.bignumber.equal(expectedBalance); + }); + + it('emits Transfer event', async function () { + const event = expectEvent.inLogs(this.logs, 'Transfer', { + from: owner, + to: ZERO_ADDRESS, + }); + + event.args.value.should.be.bignumber.equal(amount); + }); + }); + }; + + describeBurn('for entire balance', initialSupply); + describeBurn('for less amount than balance', initialSupply.sub(1)); + }); + }); + + describe('_burnFrom', function () { + const initialSupply = new BigNumber(100); + const allowance = new BigNumber(70); + + const spender = anotherAccount; + + beforeEach('approving', async function () { + await this.token.approve(spender, allowance, { from: owner }); + }); + + it('rejects a null account', async function () { + await shouldFail.reverting(this.token.burnFrom(ZERO_ADDRESS, 1)); + }); + + describe('for a non null account', function () { + it('rejects burning more than allowance', async function () { + await shouldFail.reverting(this.token.burnFrom(owner, allowance.plus(1))); + }); + + it('rejects burning more than balance', async function () { + await shouldFail.reverting(this.token.burnFrom(owner, initialSupply.plus(1))); + }); + + const describeBurnFrom = function (description, amount) { + describe(description, function () { + beforeEach('burning', async function () { + const { logs } = await this.token.burnFrom(owner, amount, { from: spender }); + this.logs = logs; + }); + + it('decrements totalSupply', async function () { + const expectedSupply = initialSupply.minus(amount); + (await this.token.totalSupply()).should.be.bignumber.equal(expectedSupply); + }); + + it('decrements owner balance', async function () { + const expectedBalance = initialSupply.minus(amount); + (await this.token.balanceOf(owner)).should.be.bignumber.equal(expectedBalance); + }); + + it('decrements spender allowance', async function () { + const expectedAllowance = allowance.minus(amount); + (await this.token.allowance(owner, spender)).should.be.bignumber.equal(expectedAllowance); + }); + + it('emits a Transfer event', async function () { + const event = expectEvent.inLogs(this.logs, 'Transfer', { + from: owner, + to: ZERO_ADDRESS, + }); + + event.args.value.should.be.bignumber.equal(amount); + }); + + it('emits an Approval event', async function () { + expectEvent.inLogs(this.logs, 'Approval', { + owner: owner, + spender: spender, + value: await this.token.allowance(owner, spender), + }); + }); + }); + }; + + describeBurnFrom('for entire allowance', allowance); + describeBurnFrom('for less amount than allowance', allowance.sub(1)); + }); + }); +}); diff --git a/node_modules/openzeppelin-solidity/test/token/ERC20/ERC20Burnable.test.js b/node_modules/openzeppelin-solidity/test/token/ERC20/ERC20Burnable.test.js new file mode 100644 index 0000000..6c912a5 --- /dev/null +++ b/node_modules/openzeppelin-solidity/test/token/ERC20/ERC20Burnable.test.js @@ -0,0 +1,12 @@ +const { shouldBehaveLikeERC20Burnable } = require('./behaviors/ERC20Burnable.behavior'); +const ERC20BurnableMock = artifacts.require('ERC20BurnableMock'); + +contract('ERC20Burnable', function ([_, owner, ...otherAccounts]) { + const initialBalance = 1000; + + beforeEach(async function () { + this.token = await ERC20BurnableMock.new(owner, initialBalance, { from: owner }); + }); + + shouldBehaveLikeERC20Burnable(owner, initialBalance, otherAccounts); +}); diff --git a/node_modules/openzeppelin-solidity/test/token/ERC20/ERC20Capped.test.js b/node_modules/openzeppelin-solidity/test/token/ERC20/ERC20Capped.test.js new file mode 100644 index 0000000..dbb35e2 --- /dev/null +++ b/node_modules/openzeppelin-solidity/test/token/ERC20/ERC20Capped.test.js @@ -0,0 +1,25 @@ +const shouldFail = require('../../helpers/shouldFail'); +const { ether } = require('../../helpers/ether'); +const { shouldBehaveLikeERC20Mintable } = require('./behaviors/ERC20Mintable.behavior'); +const { shouldBehaveLikeERC20Capped } = require('./behaviors/ERC20Capped.behavior'); + +const ERC20Capped = artifacts.require('ERC20Capped'); + +contract('ERC20Capped', function ([_, minter, ...otherAccounts]) { + const cap = ether(1000); + + it('requires a non-zero cap', async function () { + await shouldFail.reverting( + ERC20Capped.new(0, { from: minter }) + ); + }); + + context('once deployed', async function () { + beforeEach(async function () { + this.token = await ERC20Capped.new(cap, { from: minter }); + }); + + shouldBehaveLikeERC20Capped(minter, otherAccounts, cap); + shouldBehaveLikeERC20Mintable(minter, otherAccounts); + }); +}); diff --git a/node_modules/openzeppelin-solidity/test/token/ERC20/ERC20Detailed.test.js b/node_modules/openzeppelin-solidity/test/token/ERC20/ERC20Detailed.test.js new file mode 100644 index 0000000..448487a --- /dev/null +++ b/node_modules/openzeppelin-solidity/test/token/ERC20/ERC20Detailed.test.js @@ -0,0 +1,25 @@ +require('../../helpers/setup'); + +const ERC20DetailedMock = artifacts.require('ERC20DetailedMock'); + +contract('ERC20Detailed', function () { + const _name = 'My Detailed ERC20'; + const _symbol = 'MDT'; + const _decimals = 18; + + beforeEach(async function () { + this.detailedERC20 = await ERC20DetailedMock.new(_name, _symbol, _decimals); + }); + + it('has a name', async function () { + (await this.detailedERC20.name()).should.be.equal(_name); + }); + + it('has a symbol', async function () { + (await this.detailedERC20.symbol()).should.be.equal(_symbol); + }); + + it('has an amount of decimals', async function () { + (await this.detailedERC20.decimals()).should.be.bignumber.equal(_decimals); + }); +}); diff --git a/node_modules/openzeppelin-solidity/test/token/ERC20/ERC20Mintable.test.js b/node_modules/openzeppelin-solidity/test/token/ERC20/ERC20Mintable.test.js new file mode 100644 index 0000000..083565d --- /dev/null +++ b/node_modules/openzeppelin-solidity/test/token/ERC20/ERC20Mintable.test.js @@ -0,0 +1,20 @@ +const { shouldBehaveLikeERC20Mintable } = require('./behaviors/ERC20Mintable.behavior'); +const ERC20MintableMock = artifacts.require('ERC20MintableMock'); +const { shouldBehaveLikePublicRole } = require('../../access/roles/PublicRole.behavior'); + +contract('ERC20Mintable', function ([_, minter, otherMinter, ...otherAccounts]) { + beforeEach(async function () { + this.token = await ERC20MintableMock.new({ from: minter }); + }); + + describe('minter role', function () { + beforeEach(async function () { + this.contract = this.token; + await this.contract.addMinter(otherMinter, { from: minter }); + }); + + shouldBehaveLikePublicRole(minter, otherMinter, otherAccounts, 'minter'); + }); + + shouldBehaveLikeERC20Mintable(minter, otherAccounts); +}); diff --git a/node_modules/openzeppelin-solidity/test/token/ERC20/ERC20Pausable.test.js b/node_modules/openzeppelin-solidity/test/token/ERC20/ERC20Pausable.test.js new file mode 100644 index 0000000..f89d20e --- /dev/null +++ b/node_modules/openzeppelin-solidity/test/token/ERC20/ERC20Pausable.test.js @@ -0,0 +1,246 @@ +const expectEvent = require('../../helpers/expectEvent'); +const shouldFail = require('../../helpers/shouldFail'); + +const ERC20PausableMock = artifacts.require('ERC20PausableMock'); +const { shouldBehaveLikePublicRole } = require('../../access/roles/PublicRole.behavior'); + +contract('ERC20Pausable', function ([_, pauser, otherPauser, recipient, anotherAccount, ...otherAccounts]) { + beforeEach(async function () { + this.token = await ERC20PausableMock.new(pauser, 100, { from: pauser }); + }); + + describe('pauser role', function () { + beforeEach(async function () { + this.contract = this.token; + await this.contract.addPauser(otherPauser, { from: pauser }); + }); + + shouldBehaveLikePublicRole(pauser, otherPauser, otherAccounts, 'pauser'); + }); + + describe('pause', function () { + describe('when the sender is the token pauser', function () { + const from = pauser; + + describe('when the token is unpaused', function () { + it('pauses the token', async function () { + await this.token.pause({ from }); + (await this.token.paused()).should.equal(true); + }); + + it('emits a Pause event', async function () { + const { logs } = await this.token.pause({ from }); + + expectEvent.inLogs(logs, 'Paused'); + }); + }); + + describe('when the token is paused', function () { + beforeEach(async function () { + await this.token.pause({ from }); + }); + + it('reverts', async function () { + await shouldFail.reverting(this.token.pause({ from })); + }); + }); + }); + + describe('when the sender is not the token pauser', function () { + const from = anotherAccount; + + it('reverts', async function () { + await shouldFail.reverting(this.token.pause({ from })); + }); + }); + }); + + describe('unpause', function () { + describe('when the sender is the token pauser', function () { + const from = pauser; + + describe('when the token is paused', function () { + beforeEach(async function () { + await this.token.pause({ from }); + }); + + it('unpauses the token', async function () { + await this.token.unpause({ from }); + (await this.token.paused()).should.equal(false); + }); + + it('emits an Unpause event', async function () { + const { logs } = await this.token.unpause({ from }); + + expectEvent.inLogs(logs, 'Unpaused'); + }); + }); + + describe('when the token is unpaused', function () { + it('reverts', async function () { + await shouldFail.reverting(this.token.unpause({ from })); + }); + }); + }); + + describe('when the sender is not the token pauser', function () { + const from = anotherAccount; + + it('reverts', async function () { + await shouldFail.reverting(this.token.unpause({ from })); + }); + }); + }); + + describe('pausable token', function () { + const from = pauser; + + describe('paused', function () { + it('is not paused by default', async function () { + (await this.token.paused({ from })).should.equal(false); + }); + + it('is paused after being paused', async function () { + await this.token.pause({ from }); + (await this.token.paused({ from })).should.equal(true); + }); + + it('is not paused after being paused and then unpaused', async function () { + await this.token.pause({ from }); + await this.token.unpause({ from }); + (await this.token.paused()).should.equal(false); + }); + }); + + describe('transfer', function () { + it('allows to transfer when unpaused', async function () { + await this.token.transfer(recipient, 100, { from: pauser }); + + (await this.token.balanceOf(pauser)).should.be.bignumber.equal(0); + (await this.token.balanceOf(recipient)).should.be.bignumber.equal(100); + }); + + it('allows to transfer when paused and then unpaused', async function () { + await this.token.pause({ from: pauser }); + await this.token.unpause({ from: pauser }); + + await this.token.transfer(recipient, 100, { from: pauser }); + + (await this.token.balanceOf(pauser)).should.be.bignumber.equal(0); + (await this.token.balanceOf(recipient)).should.be.bignumber.equal(100); + }); + + it('reverts when trying to transfer when paused', async function () { + await this.token.pause({ from: pauser }); + + await shouldFail.reverting(this.token.transfer(recipient, 100, { from: pauser })); + }); + }); + + describe('approve', function () { + it('allows to approve when unpaused', async function () { + await this.token.approve(anotherAccount, 40, { from: pauser }); + + (await this.token.allowance(pauser, anotherAccount)).should.be.bignumber.equal(40); + }); + + it('allows to approve when paused and then unpaused', async function () { + await this.token.pause({ from: pauser }); + await this.token.unpause({ from: pauser }); + + await this.token.approve(anotherAccount, 40, { from: pauser }); + + (await this.token.allowance(pauser, anotherAccount)).should.be.bignumber.equal(40); + }); + + it('reverts when trying to approve when paused', async function () { + await this.token.pause({ from: pauser }); + + await shouldFail.reverting(this.token.approve(anotherAccount, 40, { from: pauser })); + }); + }); + + describe('transfer from', function () { + beforeEach(async function () { + await this.token.approve(anotherAccount, 50, { from: pauser }); + }); + + it('allows to transfer from when unpaused', async function () { + await this.token.transferFrom(pauser, recipient, 40, { from: anotherAccount }); + + (await this.token.balanceOf(pauser)).should.be.bignumber.equal(60); + (await this.token.balanceOf(recipient)).should.be.bignumber.equal(40); + }); + + it('allows to transfer when paused and then unpaused', async function () { + await this.token.pause({ from: pauser }); + await this.token.unpause({ from: pauser }); + + await this.token.transferFrom(pauser, recipient, 40, { from: anotherAccount }); + + (await this.token.balanceOf(pauser)).should.be.bignumber.equal(60); + (await this.token.balanceOf(recipient)).should.be.bignumber.equal(40); + }); + + it('reverts when trying to transfer from when paused', async function () { + await this.token.pause({ from: pauser }); + + await shouldFail.reverting(this.token.transferFrom(pauser, recipient, 40, { from: anotherAccount })); + }); + }); + + describe('decrease approval', function () { + beforeEach(async function () { + await this.token.approve(anotherAccount, 100, { from: pauser }); + }); + + it('allows to decrease approval when unpaused', async function () { + await this.token.decreaseAllowance(anotherAccount, 40, { from: pauser }); + + (await this.token.allowance(pauser, anotherAccount)).should.be.bignumber.equal(60); + }); + + it('allows to decrease approval when paused and then unpaused', async function () { + await this.token.pause({ from: pauser }); + await this.token.unpause({ from: pauser }); + + await this.token.decreaseAllowance(anotherAccount, 40, { from: pauser }); + + (await this.token.allowance(pauser, anotherAccount)).should.be.bignumber.equal(60); + }); + + it('reverts when trying to transfer when paused', async function () { + await this.token.pause({ from: pauser }); + + await shouldFail.reverting(this.token.decreaseAllowance(anotherAccount, 40, { from: pauser })); + }); + }); + + describe('increase approval', function () { + beforeEach(async function () { + await this.token.approve(anotherAccount, 100, { from: pauser }); + }); + + it('allows to increase approval when unpaused', async function () { + await this.token.increaseAllowance(anotherAccount, 40, { from: pauser }); + + (await this.token.allowance(pauser, anotherAccount)).should.be.bignumber.equal(140); + }); + + it('allows to increase approval when paused and then unpaused', async function () { + await this.token.pause({ from: pauser }); + await this.token.unpause({ from: pauser }); + + await this.token.increaseAllowance(anotherAccount, 40, { from: pauser }); + + (await this.token.allowance(pauser, anotherAccount)).should.be.bignumber.equal(140); + }); + + it('reverts when trying to increase approval when paused', async function () { + await this.token.pause({ from: pauser }); + + await shouldFail.reverting(this.token.increaseAllowance(anotherAccount, 40, { from: pauser })); + }); + }); + }); +}); diff --git a/node_modules/openzeppelin-solidity/test/token/ERC20/SafeERC20.test.js b/node_modules/openzeppelin-solidity/test/token/ERC20/SafeERC20.test.js new file mode 100644 index 0000000..4be44cf --- /dev/null +++ b/node_modules/openzeppelin-solidity/test/token/ERC20/SafeERC20.test.js @@ -0,0 +1,93 @@ +const shouldFail = require('../../helpers/shouldFail'); + +require('../../helpers/setup'); + +const SafeERC20Helper = artifacts.require('SafeERC20Helper'); + +contract('SafeERC20', function () { + beforeEach(async function () { + this.helper = await SafeERC20Helper.new(); + }); + + describe('with token that returns false on all calls', function () { + it('reverts on transfer', async function () { + await shouldFail.reverting(this.helper.doFailingTransfer()); + }); + + it('reverts on transferFrom', async function () { + await shouldFail.reverting(this.helper.doFailingTransferFrom()); + }); + + it('reverts on approve', async function () { + await shouldFail.reverting(this.helper.doFailingApprove()); + }); + + it('reverts on increaseAllowance', async function () { + await shouldFail.reverting(this.helper.doFailingIncreaseAllowance()); + }); + + it('reverts on decreaseAllowance', async function () { + await shouldFail.reverting(this.helper.doFailingDecreaseAllowance()); + }); + }); + + describe('with token that returns true on all calls', function () { + it('doesn\'t revert on transfer', async function () { + await this.helper.doSucceedingTransfer(); + }); + + it('doesn\'t revert on transferFrom', async function () { + await this.helper.doSucceedingTransferFrom(); + }); + + describe('approvals', function () { + context('with zero allowance', function () { + beforeEach(async function () { + await this.helper.setAllowance(0); + }); + + it('doesn\'t revert when approving a non-zero allowance', async function () { + await this.helper.doSucceedingApprove(100); + }); + + it('doesn\'t revert when approving a zero allowance', async function () { + await this.helper.doSucceedingApprove(0); + }); + + it('doesn\'t revert when increasing the allowance', async function () { + await this.helper.doSucceedingIncreaseAllowance(10); + }); + + it('reverts when decreasing the allowance', async function () { + await shouldFail.reverting(this.helper.doSucceedingDecreaseAllowance(10)); + }); + }); + + context('with non-zero allowance', function () { + beforeEach(async function () { + await this.helper.setAllowance(100); + }); + + it('reverts when approving a non-zero allowance', async function () { + await shouldFail.reverting(this.helper.doSucceedingApprove(20)); + }); + + it('doesn\'t revert when approving a zero allowance', async function () { + await this.helper.doSucceedingApprove(0); + }); + + it('doesn\'t revert when increasing the allowance', async function () { + await this.helper.doSucceedingIncreaseAllowance(10); + }); + + it('doesn\'t revert when decreasing the allowance to a positive value', async function () { + await this.helper.doSucceedingDecreaseAllowance(50); + }); + + it('reverts when decreasing the allowance to a negative value', async function () { + await shouldFail.reverting(this.helper.doSucceedingDecreaseAllowance(200)); + }); + }); + }); + }); +}); diff --git a/node_modules/openzeppelin-solidity/test/token/ERC20/TokenTimelock.test.js b/node_modules/openzeppelin-solidity/test/token/ERC20/TokenTimelock.test.js new file mode 100644 index 0000000..6669e74 --- /dev/null +++ b/node_modules/openzeppelin-solidity/test/token/ERC20/TokenTimelock.test.js @@ -0,0 +1,66 @@ +const shouldFail = require('../../helpers/shouldFail'); +const time = require('../../helpers/time'); + +const { BigNumber } = require('../../helpers/setup'); + +const ERC20Mintable = artifacts.require('ERC20Mintable'); +const TokenTimelock = artifacts.require('TokenTimelock'); + +contract('TokenTimelock', function ([_, minter, beneficiary]) { + const amount = new BigNumber(100); + + context('with token', function () { + beforeEach(async function () { + this.token = await ERC20Mintable.new({ from: minter }); + }); + + it('rejects a release time in the past', async function () { + const pastReleaseTime = (await time.latest()) - time.duration.years(1); + await shouldFail.reverting( + TokenTimelock.new(this.token.address, beneficiary, pastReleaseTime) + ); + }); + + context('once deployed', function () { + beforeEach(async function () { + this.releaseTime = (await time.latest()) + time.duration.years(1); + this.timelock = await TokenTimelock.new(this.token.address, beneficiary, this.releaseTime); + await this.token.mint(this.timelock.address, amount, { from: minter }); + }); + + it('can get state', async function () { + (await this.timelock.token()).should.be.equal(this.token.address); + (await this.timelock.beneficiary()).should.be.equal(beneficiary); + (await this.timelock.releaseTime()).should.be.bignumber.equal(this.releaseTime); + }); + + it('cannot be released before time limit', async function () { + await shouldFail.reverting(this.timelock.release()); + }); + + it('cannot be released just before time limit', async function () { + await time.increaseTo(this.releaseTime - time.duration.seconds(3)); + await shouldFail.reverting(this.timelock.release()); + }); + + it('can be released just after limit', async function () { + await time.increaseTo(this.releaseTime + time.duration.seconds(1)); + await this.timelock.release(); + (await this.token.balanceOf(beneficiary)).should.be.bignumber.equal(amount); + }); + + it('can be released after time limit', async function () { + await time.increaseTo(this.releaseTime + time.duration.years(1)); + await this.timelock.release(); + (await this.token.balanceOf(beneficiary)).should.be.bignumber.equal(amount); + }); + + it('cannot be released twice', async function () { + await time.increaseTo(this.releaseTime + time.duration.years(1)); + await this.timelock.release(); + await shouldFail.reverting(this.timelock.release()); + (await this.token.balanceOf(beneficiary)).should.be.bignumber.equal(amount); + }); + }); + }); +}); diff --git a/node_modules/openzeppelin-solidity/test/token/ERC20/behaviors/ERC20Burnable.behavior.js b/node_modules/openzeppelin-solidity/test/token/ERC20/behaviors/ERC20Burnable.behavior.js new file mode 100644 index 0000000..6d1c719 --- /dev/null +++ b/node_modules/openzeppelin-solidity/test/token/ERC20/behaviors/ERC20Burnable.behavior.js @@ -0,0 +1,103 @@ +const shouldFail = require('../../../helpers/shouldFail'); +const expectEvent = require('../../../helpers/expectEvent'); +const { ZERO_ADDRESS } = require('../../../helpers/constants'); + +require('../../../helpers/setup'); + +function shouldBehaveLikeERC20Burnable (owner, initialBalance, [burner]) { + describe('burn', function () { + describe('when the given amount is not greater than balance of the sender', function () { + context('for a zero amount', function () { + shouldBurn(0); + }); + + context('for a non-zero amount', function () { + shouldBurn(100); + }); + + function shouldBurn (amount) { + beforeEach(async function () { + ({ logs: this.logs } = await this.token.burn(amount, { from: owner })); + }); + + it('burns the requested amount', async function () { + (await this.token.balanceOf(owner)).should.be.bignumber.equal(initialBalance - amount); + }); + + it('emits a transfer event', async function () { + expectEvent.inLogs(this.logs, 'Transfer', { + from: owner, + to: ZERO_ADDRESS, + value: amount, + }); + }); + } + }); + + describe('when the given amount is greater than the balance of the sender', function () { + const amount = initialBalance + 1; + + it('reverts', async function () { + await shouldFail.reverting(this.token.burn(amount, { from: owner })); + }); + }); + }); + + describe('burnFrom', function () { + describe('on success', function () { + context('for a zero amount', function () { + shouldBurnFrom(0); + }); + + context('for a non-zero amount', function () { + shouldBurnFrom(100); + }); + + function shouldBurnFrom (amount) { + const originalAllowance = amount * 3; + + beforeEach(async function () { + await this.token.approve(burner, originalAllowance, { from: owner }); + const { logs } = await this.token.burnFrom(owner, amount, { from: burner }); + this.logs = logs; + }); + + it('burns the requested amount', async function () { + (await this.token.balanceOf(owner)).should.be.bignumber.equal(initialBalance - amount); + }); + + it('decrements allowance', async function () { + (await this.token.allowance(owner, burner)).should.be.bignumber.equal(originalAllowance - amount); + }); + + it('emits a transfer event', async function () { + expectEvent.inLogs(this.logs, 'Transfer', { + from: owner, + to: ZERO_ADDRESS, + value: amount, + }); + }); + } + }); + + describe('when the given amount is greater than the balance of the sender', function () { + const amount = initialBalance + 1; + it('reverts', async function () { + await this.token.approve(burner, amount, { from: owner }); + await shouldFail.reverting(this.token.burnFrom(owner, amount, { from: burner })); + }); + }); + + describe('when the given amount is greater than the allowance', function () { + const amount = 100; + it('reverts', async function () { + await this.token.approve(burner, amount - 1, { from: owner }); + await shouldFail.reverting(this.token.burnFrom(owner, amount, { from: burner })); + }); + }); + }); +} + +module.exports = { + shouldBehaveLikeERC20Burnable, +}; diff --git a/node_modules/openzeppelin-solidity/test/token/ERC20/behaviors/ERC20Capped.behavior.js b/node_modules/openzeppelin-solidity/test/token/ERC20/behaviors/ERC20Capped.behavior.js new file mode 100644 index 0000000..876dbd3 --- /dev/null +++ b/node_modules/openzeppelin-solidity/test/token/ERC20/behaviors/ERC20Capped.behavior.js @@ -0,0 +1,32 @@ +const shouldFail = require('../../../helpers/shouldFail'); + +require('../../../helpers/setup'); + +function shouldBehaveLikeERC20Capped (minter, [anyone], cap) { + describe('capped token', function () { + const from = minter; + + it('should start with the correct cap', async function () { + (await this.token.cap()).should.be.bignumber.equal(cap); + }); + + it('should mint when amount is less than cap', async function () { + await this.token.mint(anyone, cap.sub(1), { from }); + (await this.token.totalSupply()).should.be.bignumber.equal(cap.sub(1)); + }); + + it('should fail to mint if the ammount exceeds the cap', async function () { + await this.token.mint(anyone, cap.sub(1), { from }); + await shouldFail.reverting(this.token.mint(anyone, 100, { from })); + }); + + it('should fail to mint after cap is reached', async function () { + await this.token.mint(anyone, cap, { from }); + await shouldFail.reverting(this.token.mint(anyone, 1, { from })); + }); + }); +} + +module.exports = { + shouldBehaveLikeERC20Capped, +}; diff --git a/node_modules/openzeppelin-solidity/test/token/ERC20/behaviors/ERC20Mintable.behavior.js b/node_modules/openzeppelin-solidity/test/token/ERC20/behaviors/ERC20Mintable.behavior.js new file mode 100644 index 0000000..987b677 --- /dev/null +++ b/node_modules/openzeppelin-solidity/test/token/ERC20/behaviors/ERC20Mintable.behavior.js @@ -0,0 +1,55 @@ +const shouldFail = require('../../../helpers/shouldFail'); +const expectEvent = require('../../../helpers/expectEvent'); +const { ZERO_ADDRESS } = require('../../../helpers/constants'); + +require('../../../helpers/setup'); + +function shouldBehaveLikeERC20Mintable (minter, [anyone]) { + describe('as a mintable token', function () { + describe('mint', function () { + const amount = 100; + + context('when the sender has minting permission', function () { + const from = minter; + + context('for a zero amount', function () { + shouldMint(0); + }); + + context('for a non-zero amount', function () { + shouldMint(amount); + }); + + function shouldMint (amount) { + beforeEach(async function () { + ({ logs: this.logs } = await this.token.mint(anyone, amount, { from })); + }); + + it('mints the requested amount', async function () { + (await this.token.balanceOf(anyone)).should.be.bignumber.equal(amount); + }); + + it('emits a mint and a transfer event', async function () { + expectEvent.inLogs(this.logs, 'Transfer', { + from: ZERO_ADDRESS, + to: anyone, + value: amount, + }); + }); + } + }); + + context('when the sender doesn\'t have minting permission', function () { + const from = anyone; + + it('reverts', async function () { + await shouldFail.reverting(this.token.mint(anyone, amount, { from })); + }); + }); + }); + }); +} + +module.exports = { + shouldBehaveLikeERC20Mintable, +}; diff --git a/node_modules/openzeppelin-solidity/test/token/ERC721/ERC721.behavior.js b/node_modules/openzeppelin-solidity/test/token/ERC721/ERC721.behavior.js new file mode 100644 index 0000000..b760087 --- /dev/null +++ b/node_modules/openzeppelin-solidity/test/token/ERC721/ERC721.behavior.js @@ -0,0 +1,521 @@ +const expectEvent = require('../../helpers/expectEvent'); +const { shouldSupportInterfaces } = require('../../introspection/SupportsInterface.behavior'); +const shouldFail = require('../../helpers/shouldFail'); +const { ZERO_ADDRESS } = require('../../helpers/constants'); +const send = require('../../helpers/send'); + +const ERC721ReceiverMock = artifacts.require('ERC721ReceiverMock.sol'); +require('../../helpers/setup'); + +function shouldBehaveLikeERC721 ( + creator, + minter, + [owner, approved, anotherApproved, operator, anyone] +) { + const firstTokenId = 1; + const secondTokenId = 2; + const unknownTokenId = 3; + const RECEIVER_MAGIC_VALUE = '0x150b7a02'; + + describe('like an ERC721', function () { + beforeEach(async function () { + await this.token.mint(owner, firstTokenId, { from: minter }); + await this.token.mint(owner, secondTokenId, { from: minter }); + this.toWhom = anyone; // default to anyone for toWhom in context-dependent tests + }); + + describe('balanceOf', function () { + context('when the given address owns some tokens', function () { + it('returns the amount of tokens owned by the given address', async function () { + (await this.token.balanceOf(owner)).should.be.bignumber.equal(2); + }); + }); + + context('when the given address does not own any tokens', function () { + it('returns 0', async function () { + (await this.token.balanceOf(anyone)).should.be.bignumber.equal(0); + }); + }); + + context('when querying the zero address', function () { + it('throws', async function () { + await shouldFail.reverting(this.token.balanceOf(0)); + }); + }); + }); + + describe('ownerOf', function () { + context('when the given token ID was tracked by this token', function () { + const tokenId = firstTokenId; + + it('returns the owner of the given token ID', async function () { + (await this.token.ownerOf(tokenId)).should.be.equal(owner); + }); + }); + + context('when the given token ID was not tracked by this token', function () { + const tokenId = unknownTokenId; + + it('reverts', async function () { + await shouldFail.reverting(this.token.ownerOf(tokenId)); + }); + }); + }); + + describe('transfers', function () { + const tokenId = firstTokenId; + const data = '0x42'; + + let logs = null; + + beforeEach(async function () { + await this.token.approve(approved, tokenId, { from: owner }); + await this.token.setApprovalForAll(operator, true, { from: owner }); + }); + + const transferWasSuccessful = function ({ owner, tokenId, approved }) { + it('transfers the ownership of the given token ID to the given address', async function () { + (await this.token.ownerOf(tokenId)).should.be.equal(this.toWhom); + }); + + it('clears the approval for the token ID', async function () { + (await this.token.getApproved(tokenId)).should.be.equal(ZERO_ADDRESS); + }); + + if (approved) { + it('emit only a transfer event', async function () { + expectEvent.inLogs(logs, 'Transfer', { + from: owner, + to: this.toWhom, + tokenId: tokenId, + }); + }); + } else { + it('emits only a transfer event', async function () { + expectEvent.inLogs(logs, 'Transfer', { + from: owner, + to: this.toWhom, + tokenId: tokenId, + }); + }); + } + + it('adjusts owners balances', async function () { + (await this.token.balanceOf(owner)).should.be.bignumber.equal(1); + }); + + it('adjusts owners tokens by index', async function () { + if (!this.token.tokenOfOwnerByIndex) return; + + (await this.token.tokenOfOwnerByIndex(this.toWhom, 0)).toNumber().should.be.equal(tokenId); + + (await this.token.tokenOfOwnerByIndex(owner, 0)).toNumber().should.not.be.equal(tokenId); + }); + }; + + const shouldTransferTokensByUsers = function (transferFunction) { + context('when called by the owner', function () { + beforeEach(async function () { + ({ logs } = await transferFunction.call(this, owner, this.toWhom, tokenId, { from: owner })); + }); + transferWasSuccessful({ owner, tokenId, approved }); + }); + + context('when called by the approved individual', function () { + beforeEach(async function () { + ({ logs } = await transferFunction.call(this, owner, this.toWhom, tokenId, { from: approved })); + }); + transferWasSuccessful({ owner, tokenId, approved }); + }); + + context('when called by the operator', function () { + beforeEach(async function () { + ({ logs } = await transferFunction.call(this, owner, this.toWhom, tokenId, { from: operator })); + }); + transferWasSuccessful({ owner, tokenId, approved }); + }); + + context('when called by the owner without an approved user', function () { + beforeEach(async function () { + await this.token.approve(ZERO_ADDRESS, tokenId, { from: owner }); + ({ logs } = await transferFunction.call(this, owner, this.toWhom, tokenId, { from: operator })); + }); + transferWasSuccessful({ owner, tokenId, approved: null }); + }); + + context('when sent to the owner', function () { + beforeEach(async function () { + ({ logs } = await transferFunction.call(this, owner, owner, tokenId, { from: owner })); + }); + + it('keeps ownership of the token', async function () { + (await this.token.ownerOf(tokenId)).should.be.equal(owner); + }); + + it('clears the approval for the token ID', async function () { + (await this.token.getApproved(tokenId)).should.be.equal(ZERO_ADDRESS); + }); + + it('emits only a transfer event', async function () { + expectEvent.inLogs(logs, 'Transfer', { + from: owner, + to: owner, + tokenId: tokenId, + }); + }); + + it('keeps the owner balance', async function () { + (await this.token.balanceOf(owner)).should.be.bignumber.equal(2); + }); + + it('keeps same tokens by index', async function () { + if (!this.token.tokenOfOwnerByIndex) return; + const tokensListed = await Promise.all( + [0, 1].map(i => this.token.tokenOfOwnerByIndex(owner, i)) + ); + tokensListed.map(t => t.toNumber()).should.have.members([firstTokenId, secondTokenId]); + }); + }); + + context('when the address of the previous owner is incorrect', function () { + it('reverts', async function () { + await shouldFail.reverting(transferFunction.call(this, anyone, anyone, tokenId, { from: owner }) + ); + }); + }); + + context('when the sender is not authorized for the token id', function () { + it('reverts', async function () { + await shouldFail.reverting(transferFunction.call(this, owner, anyone, tokenId, { from: anyone }) + ); + }); + }); + + context('when the given token ID does not exist', function () { + it('reverts', async function () { + await shouldFail.reverting(transferFunction.call(this, owner, anyone, unknownTokenId, { from: owner }) + ); + }); + }); + + context('when the address to transfer the token to is the zero address', function () { + it('reverts', async function () { + await shouldFail.reverting(transferFunction.call(this, owner, ZERO_ADDRESS, tokenId, { from: owner })); + }); + }); + }; + + describe('via transferFrom', function () { + shouldTransferTokensByUsers(function (from, to, tokenId, opts) { + return this.token.transferFrom(from, to, tokenId, opts); + }); + }); + + describe('via safeTransferFrom', function () { + const safeTransferFromWithData = function (from, to, tokenId, opts) { + return send.transaction( + this.token, + 'safeTransferFrom', + 'address,address,uint256,bytes', + [from, to, tokenId, data], + opts + ); + }; + + const safeTransferFromWithoutData = function (from, to, tokenId, opts) { + return this.token.safeTransferFrom(from, to, tokenId, opts); + }; + + const shouldTransferSafely = function (transferFun, data) { + describe('to a user account', function () { + shouldTransferTokensByUsers(transferFun); + }); + + describe('to a valid receiver contract', function () { + beforeEach(async function () { + this.receiver = await ERC721ReceiverMock.new(RECEIVER_MAGIC_VALUE, false); + this.toWhom = this.receiver.address; + }); + + shouldTransferTokensByUsers(transferFun); + + it('should call onERC721Received', async function () { + const receipt = await transferFun.call(this, owner, this.receiver.address, tokenId, { from: owner }); + + await expectEvent.inTransaction(receipt.tx, ERC721ReceiverMock, 'Received', { + operator: owner, + from: owner, + tokenId: tokenId, + data: data, + }); + }); + + it('should call onERC721Received from approved', async function () { + const receipt = await transferFun.call(this, owner, this.receiver.address, tokenId, { from: approved }); + + await expectEvent.inTransaction(receipt.tx, ERC721ReceiverMock, 'Received', { + operator: approved, + from: owner, + tokenId: tokenId, + data: data, + }); + }); + + describe('with an invalid token id', function () { + it('reverts', async function () { + await shouldFail.reverting( + transferFun.call( + this, + owner, + this.receiver.address, + unknownTokenId, + { from: owner }, + ) + ); + }); + }); + }); + }; + + describe('with data', function () { + shouldTransferSafely(safeTransferFromWithData, data); + }); + + describe('without data', function () { + shouldTransferSafely(safeTransferFromWithoutData, '0x'); + }); + + describe('to a receiver contract returning unexpected value', function () { + it('reverts', async function () { + const invalidReceiver = await ERC721ReceiverMock.new('0x42', false); + await shouldFail.reverting( + this.token.safeTransferFrom(owner, invalidReceiver.address, tokenId, { from: owner }) + ); + }); + }); + + describe('to a receiver contract that throws', function () { + it('reverts', async function () { + const invalidReceiver = await ERC721ReceiverMock.new(RECEIVER_MAGIC_VALUE, true); + await shouldFail.reverting( + this.token.safeTransferFrom(owner, invalidReceiver.address, tokenId, { from: owner }) + ); + }); + }); + + describe('to a contract that does not implement the required function', function () { + it('reverts', async function () { + const invalidReceiver = this.token; + await shouldFail.reverting( + this.token.safeTransferFrom(owner, invalidReceiver.address, tokenId, { from: owner }) + ); + }); + }); + }); + }); + + describe('approve', function () { + const tokenId = firstTokenId; + + let logs = null; + + const itClearsApproval = function () { + it('clears approval for the token', async function () { + (await this.token.getApproved(tokenId)).should.be.equal(ZERO_ADDRESS); + }); + }; + + const itApproves = function (address) { + it('sets the approval for the target address', async function () { + (await this.token.getApproved(tokenId)).should.be.equal(address); + }); + }; + + const itEmitsApprovalEvent = function (address) { + it('emits an approval event', async function () { + expectEvent.inLogs(logs, 'Approval', { + owner: owner, + approved: address, + tokenId: tokenId, + }); + }); + }; + + context('when clearing approval', function () { + context('when there was no prior approval', function () { + beforeEach(async function () { + ({ logs } = await this.token.approve(ZERO_ADDRESS, tokenId, { from: owner })); + }); + + itClearsApproval(); + itEmitsApprovalEvent(ZERO_ADDRESS); + }); + + context('when there was a prior approval', function () { + beforeEach(async function () { + await this.token.approve(approved, tokenId, { from: owner }); + ({ logs } = await this.token.approve(ZERO_ADDRESS, tokenId, { from: owner })); + }); + + itClearsApproval(); + itEmitsApprovalEvent(ZERO_ADDRESS); + }); + }); + + context('when approving a non-zero address', function () { + context('when there was no prior approval', function () { + beforeEach(async function () { + ({ logs } = await this.token.approve(approved, tokenId, { from: owner })); + }); + + itApproves(approved); + itEmitsApprovalEvent(approved); + }); + + context('when there was a prior approval to the same address', function () { + beforeEach(async function () { + await this.token.approve(approved, tokenId, { from: owner }); + ({ logs } = await this.token.approve(approved, tokenId, { from: owner })); + }); + + itApproves(approved); + itEmitsApprovalEvent(approved); + }); + + context('when there was a prior approval to a different address', function () { + beforeEach(async function () { + await this.token.approve(anotherApproved, tokenId, { from: owner }); + ({ logs } = await this.token.approve(anotherApproved, tokenId, { from: owner })); + }); + + itApproves(anotherApproved); + itEmitsApprovalEvent(anotherApproved); + }); + }); + + context('when the address that receives the approval is the owner', function () { + it('reverts', async function () { + await shouldFail.reverting( + this.token.approve(owner, tokenId, { from: owner }) + ); + }); + }); + + context('when the sender does not own the given token ID', function () { + it('reverts', async function () { + await shouldFail.reverting(this.token.approve(approved, tokenId, { from: anyone })); + }); + }); + + context('when the sender is approved for the given token ID', function () { + it('reverts', async function () { + await this.token.approve(approved, tokenId, { from: owner }); + await shouldFail.reverting(this.token.approve(anotherApproved, tokenId, { from: approved })); + }); + }); + + context('when the sender is an operator', function () { + beforeEach(async function () { + await this.token.setApprovalForAll(operator, true, { from: owner }); + ({ logs } = await this.token.approve(approved, tokenId, { from: operator })); + }); + + itApproves(approved); + itEmitsApprovalEvent(approved); + }); + + context('when the given token ID does not exist', function () { + it('reverts', async function () { + await shouldFail.reverting(this.token.approve(approved, unknownTokenId, { from: operator })); + }); + }); + }); + + describe('setApprovalForAll', function () { + context('when the operator willing to approve is not the owner', function () { + context('when there is no operator approval set by the sender', function () { + it('approves the operator', async function () { + await this.token.setApprovalForAll(operator, true, { from: owner }); + + (await this.token.isApprovedForAll(owner, operator)).should.equal(true); + }); + + it('emits an approval event', async function () { + const { logs } = await this.token.setApprovalForAll(operator, true, { from: owner }); + + expectEvent.inLogs(logs, 'ApprovalForAll', { + owner: owner, + operator: operator, + approved: true, + }); + }); + }); + + context('when the operator was set as not approved', function () { + beforeEach(async function () { + await this.token.setApprovalForAll(operator, false, { from: owner }); + }); + + it('approves the operator', async function () { + await this.token.setApprovalForAll(operator, true, { from: owner }); + + (await this.token.isApprovedForAll(owner, operator)).should.equal(true); + }); + + it('emits an approval event', async function () { + const { logs } = await this.token.setApprovalForAll(operator, true, { from: owner }); + + expectEvent.inLogs(logs, 'ApprovalForAll', { + owner: owner, + operator: operator, + approved: true, + }); + }); + + it('can unset the operator approval', async function () { + await this.token.setApprovalForAll(operator, false, { from: owner }); + + (await this.token.isApprovedForAll(owner, operator)).should.equal(false); + }); + }); + + context('when the operator was already approved', function () { + beforeEach(async function () { + await this.token.setApprovalForAll(operator, true, { from: owner }); + }); + + it('keeps the approval to the given address', async function () { + await this.token.setApprovalForAll(operator, true, { from: owner }); + + (await this.token.isApprovedForAll(owner, operator)).should.equal(true); + }); + + it('emits an approval event', async function () { + const { logs } = await this.token.setApprovalForAll(operator, true, { from: owner }); + + expectEvent.inLogs(logs, 'ApprovalForAll', { + owner: owner, + operator: operator, + approved: true, + }); + }); + }); + }); + + context('when the operator is the owner', function () { + it('reverts', async function () { + await shouldFail.reverting(this.token.setApprovalForAll(owner, true, { from: owner })); + }); + }); + }); + + shouldSupportInterfaces([ + 'ERC165', + 'ERC721', + ]); + }); +} + +module.exports = { + shouldBehaveLikeERC721, +}; diff --git a/node_modules/openzeppelin-solidity/test/token/ERC721/ERC721.test.js b/node_modules/openzeppelin-solidity/test/token/ERC721/ERC721.test.js new file mode 100644 index 0000000..8ae1c05 --- /dev/null +++ b/node_modules/openzeppelin-solidity/test/token/ERC721/ERC721.test.js @@ -0,0 +1,112 @@ +require('../../helpers/setup'); +const { ZERO_ADDRESS } = require('../../helpers/constants'); +const expectEvent = require('../../helpers/expectEvent'); +const send = require('../../helpers/send'); +const shouldFail = require('../../helpers/shouldFail'); + +const { shouldBehaveLikeERC721 } = require('./ERC721.behavior'); +const ERC721Mock = artifacts.require('ERC721Mock.sol'); + +contract('ERC721', function ([_, creator, tokenOwner, anyone, ...accounts]) { + beforeEach(async function () { + this.token = await ERC721Mock.new({ from: creator }); + }); + + shouldBehaveLikeERC721(creator, creator, accounts); + + describe('internal functions', function () { + const tokenId = 5042; + + describe('_mint(address, uint256)', function () { + it('reverts with a null destination address', async function () { + await shouldFail.reverting(this.token.mint(ZERO_ADDRESS, tokenId)); + }); + + context('with minted token', async function () { + beforeEach(async function () { + ({ logs: this.logs } = await this.token.mint(tokenOwner, tokenId)); + }); + + it('emits a Transfer event', function () { + expectEvent.inLogs(this.logs, 'Transfer', { from: ZERO_ADDRESS, to: tokenOwner, tokenId }); + }); + + it('creates the token', async function () { + (await this.token.balanceOf(tokenOwner)).should.be.bignumber.equal(1); + (await this.token.ownerOf(tokenId)).should.equal(tokenOwner); + }); + + it('reverts when adding a token id that already exists', async function () { + await shouldFail.reverting(this.token.mint(tokenOwner, tokenId)); + }); + }); + }); + + describe('_burn(address, uint256)', function () { + it('reverts when burning a non-existent token id', async function () { + await shouldFail.reverting(send.transaction(this.token, 'burn', 'address,uint256', [tokenOwner, tokenId])); + }); + + context('with minted token', function () { + beforeEach(async function () { + await this.token.mint(tokenOwner, tokenId); + }); + + it('reverts when the account is not the owner', async function () { + await shouldFail.reverting(send.transaction(this.token, 'burn', 'address,uint256', [anyone, tokenId])); + }); + + context('with burnt token', function () { + beforeEach(async function () { + ({ logs: this.logs } = + await send.transaction(this.token, 'burn', 'address,uint256', [tokenOwner, tokenId])); + }); + + it('emits a Transfer event', function () { + expectEvent.inLogs(this.logs, 'Transfer', { from: tokenOwner, to: ZERO_ADDRESS, tokenId }); + }); + + it('deletes the token', async function () { + (await this.token.balanceOf(tokenOwner)).should.be.bignumber.equal(0); + await shouldFail.reverting(this.token.ownerOf(tokenId)); + }); + + it('reverts when burning a token id that has been deleted', async function () { + await shouldFail.reverting(send.transaction(this.token, 'burn', 'address,uint256', [tokenOwner, tokenId])); + }); + }); + }); + }); + + describe('_burn(uint256)', function () { + it('reverts when burning a non-existent token id', async function () { + await shouldFail.reverting(send.transaction(this.token, 'burn', 'uint256', [tokenId])); + }); + + context('with minted token', function () { + beforeEach(async function () { + await this.token.mint(tokenOwner, tokenId); + }); + + context('with burnt token', function () { + beforeEach(async function () { + ({ logs: this.logs } = await send.transaction(this.token, 'burn', 'uint256', [tokenId])); + }); + + it('emits a Transfer event', function () { + expectEvent.inLogs(this.logs, 'Transfer', { from: tokenOwner, to: ZERO_ADDRESS, tokenId }); + }); + + it('deletes the token', async function () { + (await this.token.balanceOf(tokenOwner)).should.be.bignumber.equal(0); + await shouldFail.reverting(this.token.ownerOf(tokenId)); + }); + + it('reverts when burning a token id that has been deleted', async function () { + await shouldFail.reverting(send.transaction(this.token, 'burn', 'uint256', [tokenId])); + }); + }); + }); + }); + }); +}); diff --git a/node_modules/openzeppelin-solidity/test/token/ERC721/ERC721Burnable.test.js b/node_modules/openzeppelin-solidity/test/token/ERC721/ERC721Burnable.test.js new file mode 100644 index 0000000..a75e60f --- /dev/null +++ b/node_modules/openzeppelin-solidity/test/token/ERC721/ERC721Burnable.test.js @@ -0,0 +1,19 @@ +const { shouldBehaveLikeERC721 } = require('./ERC721.behavior'); +const { + shouldBehaveLikeMintAndBurnERC721, +} = require('./ERC721MintBurn.behavior'); + +const ERC721BurnableImpl = artifacts.require('ERC721MintableBurnableImpl.sol'); + +require('../../helpers/setup'); + +contract('ERC721Burnable', function ([_, creator, ...accounts]) { + const minter = creator; + + beforeEach(async function () { + this.token = await ERC721BurnableImpl.new({ from: creator }); + }); + + shouldBehaveLikeERC721(creator, minter, accounts); + shouldBehaveLikeMintAndBurnERC721(creator, minter, accounts); +}); diff --git a/node_modules/openzeppelin-solidity/test/token/ERC721/ERC721Full.test.js b/node_modules/openzeppelin-solidity/test/token/ERC721/ERC721Full.test.js new file mode 100644 index 0000000..a764218 --- /dev/null +++ b/node_modules/openzeppelin-solidity/test/token/ERC721/ERC721Full.test.js @@ -0,0 +1,205 @@ +const shouldFail = require('../../helpers/shouldFail'); +const { shouldBehaveLikeERC721 } = require('./ERC721.behavior'); +const { shouldSupportInterfaces } = require('../../introspection/SupportsInterface.behavior'); + +const ERC721FullMock = artifacts.require('ERC721FullMock.sol'); + +require('../../helpers/setup'); + +contract('ERC721Full', function ([ + creator, + ...accounts +]) { + const name = 'Non Fungible Token'; + const symbol = 'NFT'; + const firstTokenId = 100; + const secondTokenId = 200; + const thirdTokenId = 300; + const nonExistentTokenId = 999; + + const minter = creator; + + const [ + owner, + newOwner, + another, + ] = accounts; + + beforeEach(async function () { + this.token = await ERC721FullMock.new(name, symbol, { from: creator }); + }); + + describe('like a full ERC721', function () { + beforeEach(async function () { + await this.token.mint(owner, firstTokenId, { from: minter }); + await this.token.mint(owner, secondTokenId, { from: minter }); + }); + + describe('mint', function () { + beforeEach(async function () { + await this.token.mint(newOwner, thirdTokenId, { from: minter }); + }); + + it('adjusts owner tokens by index', async function () { + (await this.token.tokenOfOwnerByIndex(newOwner, 0)).toNumber().should.be.equal(thirdTokenId); + }); + + it('adjusts all tokens list', async function () { + (await this.token.tokenByIndex(2)).toNumber().should.be.equal(thirdTokenId); + }); + }); + + describe('burn', function () { + beforeEach(async function () { + await this.token.burn(firstTokenId, { from: owner }); + }); + + it('removes that token from the token list of the owner', async function () { + (await this.token.tokenOfOwnerByIndex(owner, 0)).toNumber().should.be.equal(secondTokenId); + }); + + it('adjusts all tokens list', async function () { + (await this.token.tokenByIndex(0)).toNumber().should.be.equal(secondTokenId); + }); + + it('burns all tokens', async function () { + await this.token.burn(secondTokenId, { from: owner }); + (await this.token.totalSupply()).toNumber().should.be.equal(0); + await shouldFail.reverting(this.token.tokenByIndex(0)); + }); + }); + + describe('metadata', function () { + const sampleUri = 'mock://mytoken'; + + it('has a name', async function () { + (await this.token.name()).should.be.equal(name); + }); + + it('has a symbol', async function () { + (await this.token.symbol()).should.be.equal(symbol); + }); + + it('sets and returns metadata for a token id', async function () { + await this.token.setTokenURI(firstTokenId, sampleUri); + (await this.token.tokenURI(firstTokenId)).should.be.equal(sampleUri); + }); + + it('reverts when setting metadata for non existent token id', async function () { + await shouldFail.reverting(this.token.setTokenURI(nonExistentTokenId, sampleUri)); + }); + + it('can burn token with metadata', async function () { + await this.token.setTokenURI(firstTokenId, sampleUri); + await this.token.burn(firstTokenId, { from: owner }); + (await this.token.exists(firstTokenId)).should.equal(false); + }); + + it('returns empty metadata for token', async function () { + (await this.token.tokenURI(firstTokenId)).should.be.equal(''); + }); + + it('reverts when querying metadata for non existent token id', async function () { + await shouldFail.reverting(this.token.tokenURI(nonExistentTokenId)); + }); + }); + + describe('tokensOfOwner', function () { + it('returns total tokens of owner', async function () { + const tokenIds = await this.token.tokensOfOwner(owner); + tokenIds.length.should.equal(2); + tokenIds[0].should.be.bignumber.equal(firstTokenId); + tokenIds[1].should.be.bignumber.equal(secondTokenId); + }); + }); + + describe('totalSupply', function () { + it('returns total token supply', async function () { + (await this.token.totalSupply()).should.be.bignumber.equal(2); + }); + }); + + describe('tokenOfOwnerByIndex', function () { + describe('when the given index is lower than the amount of tokens owned by the given address', function () { + it('returns the token ID placed at the given index', async function () { + (await this.token.tokenOfOwnerByIndex(owner, 0)).should.be.bignumber.equal(firstTokenId); + }); + }); + + describe('when the index is greater than or equal to the total tokens owned by the given address', function () { + it('reverts', async function () { + await shouldFail.reverting(this.token.tokenOfOwnerByIndex(owner, 2)); + }); + }); + + describe('when the given address does not own any token', function () { + it('reverts', async function () { + await shouldFail.reverting(this.token.tokenOfOwnerByIndex(another, 0)); + }); + }); + + describe('after transferring all tokens to another user', function () { + beforeEach(async function () { + await this.token.transferFrom(owner, another, firstTokenId, { from: owner }); + await this.token.transferFrom(owner, another, secondTokenId, { from: owner }); + }); + + it('returns correct token IDs for target', async function () { + (await this.token.balanceOf(another)).toNumber().should.be.equal(2); + const tokensListed = await Promise.all( + [0, 1].map(i => this.token.tokenOfOwnerByIndex(another, i)) + ); + tokensListed.map(t => t.toNumber()).should.have.members([firstTokenId, secondTokenId]); + }); + + it('returns empty collection for original owner', async function () { + (await this.token.balanceOf(owner)).toNumber().should.be.equal(0); + await shouldFail.reverting(this.token.tokenOfOwnerByIndex(owner, 0)); + }); + }); + }); + + describe('tokenByIndex', function () { + it('should return all tokens', async function () { + const tokensListed = await Promise.all( + [0, 1].map(i => this.token.tokenByIndex(i)) + ); + tokensListed.map(t => t.toNumber()).should.have.members([firstTokenId, secondTokenId]); + }); + + it('should revert if index is greater than supply', async function () { + await shouldFail.reverting(this.token.tokenByIndex(2)); + }); + + [firstTokenId, secondTokenId].forEach(function (tokenId) { + it(`should return all tokens after burning token ${tokenId} and minting new tokens`, async function () { + const newTokenId = 300; + const anotherNewTokenId = 400; + + await this.token.burn(tokenId, { from: owner }); + await this.token.mint(newOwner, newTokenId, { from: minter }); + await this.token.mint(newOwner, anotherNewTokenId, { from: minter }); + + (await this.token.totalSupply()).toNumber().should.be.equal(3); + + const tokensListed = await Promise.all( + [0, 1, 2].map(i => this.token.tokenByIndex(i)) + ); + const expectedTokens = [firstTokenId, secondTokenId, newTokenId, anotherNewTokenId].filter( + x => (x !== tokenId) + ); + tokensListed.map(t => t.toNumber()).should.have.members(expectedTokens); + }); + }); + }); + }); + + shouldBehaveLikeERC721(creator, minter, accounts); + + shouldSupportInterfaces([ + 'ERC165', + 'ERC721', + 'ERC721Enumerable', + 'ERC721Metadata', + ]); +}); diff --git a/node_modules/openzeppelin-solidity/test/token/ERC721/ERC721Holder.test.js b/node_modules/openzeppelin-solidity/test/token/ERC721/ERC721Holder.test.js new file mode 100644 index 0000000..1c0b0dc --- /dev/null +++ b/node_modules/openzeppelin-solidity/test/token/ERC721/ERC721Holder.test.js @@ -0,0 +1,18 @@ +const ERC721Holder = artifacts.require('ERC721Holder.sol'); +const ERC721Mintable = artifacts.require('ERC721MintableBurnableImpl.sol'); + +require('../../helpers/setup'); + +contract('ERC721Holder', function ([creator]) { + it('receives an ERC721 token', async function () { + const token = await ERC721Mintable.new({ from: creator }); + const tokenId = 1; + await token.mint(creator, tokenId, { from: creator }); + + const receiver = await ERC721Holder.new(); + await token.approve(receiver.address, tokenId, { from: creator }); + await token.safeTransferFrom(creator, receiver.address, tokenId); + + (await token.ownerOf(tokenId)).should.be.equal(receiver.address); + }); +}); diff --git a/node_modules/openzeppelin-solidity/test/token/ERC721/ERC721MintBurn.behavior.js b/node_modules/openzeppelin-solidity/test/token/ERC721/ERC721MintBurn.behavior.js new file mode 100644 index 0000000..97c33ae --- /dev/null +++ b/node_modules/openzeppelin-solidity/test/token/ERC721/ERC721MintBurn.behavior.js @@ -0,0 +1,121 @@ +const shouldFail = require('../../helpers/shouldFail'); +const expectEvent = require('../../helpers/expectEvent'); +const { ZERO_ADDRESS } = require('../../helpers/constants'); +require('../../helpers/setup'); + +function shouldBehaveLikeMintAndBurnERC721 ( + creator, + minter, + [owner, newOwner, approved, anyone] +) { + const firstTokenId = 1; + const secondTokenId = 2; + const thirdTokenId = 3; + const unknownTokenId = 4; + const MOCK_URI = 'https://example.com'; + + describe('like a mintable and burnable ERC721', function () { + beforeEach(async function () { + await this.token.mint(owner, firstTokenId, { from: minter }); + await this.token.mint(owner, secondTokenId, { from: minter }); + }); + + describe('mint', function () { + let logs = null; + + describe('when successful', function () { + beforeEach(async function () { + const result = await this.token.mint(newOwner, thirdTokenId, { from: minter }); + logs = result.logs; + }); + + it('assigns the token to the new owner', async function () { + (await this.token.ownerOf(thirdTokenId)).should.be.equal(newOwner); + }); + + it('increases the balance of its owner', async function () { + (await this.token.balanceOf(newOwner)).should.be.bignumber.equal(1); + }); + + it('emits a transfer and minted event', async function () { + expectEvent.inLogs(logs, 'Transfer', { + from: ZERO_ADDRESS, + to: newOwner, + tokenId: thirdTokenId, + }); + }); + }); + + describe('when the given owner address is the zero address', function () { + it('reverts', async function () { + await shouldFail.reverting(this.token.mint(ZERO_ADDRESS, thirdTokenId, { from: minter })); + }); + }); + + describe('when the given token ID was already tracked by this contract', function () { + it('reverts', async function () { + await shouldFail.reverting(this.token.mint(owner, firstTokenId, { from: minter })); + }); + }); + }); + + describe('mintWithTokenURI', function () { + it('can mint with a tokenUri', async function () { + await this.token.mintWithTokenURI(newOwner, thirdTokenId, MOCK_URI, { + from: minter, + }); + }); + }); + + describe('burn', function () { + const tokenId = firstTokenId; + let logs = null; + + describe('when successful', function () { + beforeEach(async function () { + const result = await this.token.burn(tokenId, { from: owner }); + logs = result.logs; + }); + + it('burns the given token ID and adjusts the balance of the owner', async function () { + await shouldFail.reverting(this.token.ownerOf(tokenId)); + (await this.token.balanceOf(owner)).should.be.bignumber.equal(1); + }); + + it('emits a burn event', async function () { + expectEvent.inLogs(logs, 'Transfer', { + from: owner, + to: ZERO_ADDRESS, + tokenId: tokenId, + }); + }); + }); + + describe('when there is a previous approval burned', function () { + beforeEach(async function () { + await this.token.approve(approved, tokenId, { from: owner }); + const result = await this.token.burn(tokenId, { from: owner }); + logs = result.logs; + }); + + context('getApproved', function () { + it('reverts', async function () { + await shouldFail.reverting(this.token.getApproved(tokenId)); + }); + }); + }); + + describe('when the given token ID was not tracked by this contract', function () { + it('reverts', async function () { + await shouldFail.reverting( + this.token.burn(unknownTokenId, { from: creator }) + ); + }); + }); + }); + }); +} + +module.exports = { + shouldBehaveLikeMintAndBurnERC721, +}; diff --git a/node_modules/openzeppelin-solidity/test/token/ERC721/ERC721Mintable.test.js b/node_modules/openzeppelin-solidity/test/token/ERC721/ERC721Mintable.test.js new file mode 100644 index 0000000..97a129e --- /dev/null +++ b/node_modules/openzeppelin-solidity/test/token/ERC721/ERC721Mintable.test.js @@ -0,0 +1,21 @@ +const { shouldBehaveLikeERC721 } = require('./ERC721.behavior'); +const { + shouldBehaveLikeMintAndBurnERC721, +} = require('./ERC721MintBurn.behavior'); + +const ERC721MintableImpl = artifacts.require('ERC721MintableBurnableImpl.sol'); + +require('../../helpers/setup'); + +contract('ERC721Mintable', function ([_, creator, ...accounts]) { + const minter = creator; + + beforeEach(async function () { + this.token = await ERC721MintableImpl.new({ + from: creator, + }); + }); + + shouldBehaveLikeERC721(creator, minter, accounts); + shouldBehaveLikeMintAndBurnERC721(creator, minter, accounts); +}); diff --git a/node_modules/openzeppelin-solidity/test/token/ERC721/ERC721Pausable.test.js b/node_modules/openzeppelin-solidity/test/token/ERC721/ERC721Pausable.test.js new file mode 100644 index 0000000..ca72800 --- /dev/null +++ b/node_modules/openzeppelin-solidity/test/token/ERC721/ERC721Pausable.test.js @@ -0,0 +1,50 @@ +const { shouldBehaveLikeERC721PausedToken } = require('./ERC721PausedToken.behavior'); +const { shouldBehaveLikeERC721 } = require('./ERC721.behavior'); +const { shouldBehaveLikePublicRole } = require('../../access/roles/PublicRole.behavior'); + +const ERC721PausableMock = artifacts.require('ERC721PausableMock.sol'); + +require('../../helpers/setup'); + +contract('ERC721Pausable', function ([ + _, + creator, + owner, + operator, + otherPauser, + ...accounts +]) { + beforeEach(async function () { + this.token = await ERC721PausableMock.new({ from: creator }); + }); + + describe('pauser role', function () { + beforeEach(async function () { + this.contract = this.token; + await this.contract.addPauser(otherPauser, { from: creator }); + }); + + shouldBehaveLikePublicRole(creator, otherPauser, accounts, 'pauser'); + }); + + context('when token is paused', function () { + beforeEach(async function () { + await this.token.pause({ from: creator }); + }); + + shouldBehaveLikeERC721PausedToken(creator, accounts); + }); + + context('when token is not paused yet', function () { + shouldBehaveLikeERC721(creator, creator, accounts); + }); + + context('when token is paused and then unpaused', function () { + beforeEach(async function () { + await this.token.pause({ from: creator }); + await this.token.unpause({ from: creator }); + }); + + shouldBehaveLikeERC721(creator, creator, accounts); + }); +}); diff --git a/node_modules/openzeppelin-solidity/test/token/ERC721/ERC721PausedToken.behavior.js b/node_modules/openzeppelin-solidity/test/token/ERC721/ERC721PausedToken.behavior.js new file mode 100644 index 0000000..6df4b0c --- /dev/null +++ b/node_modules/openzeppelin-solidity/test/token/ERC721/ERC721PausedToken.behavior.js @@ -0,0 +1,84 @@ +const shouldFail = require('../../helpers/shouldFail'); +const send = require('../../helpers/send'); +const { ZERO_ADDRESS } = require('../../helpers/constants'); + +require('../../helpers/setup'); + +function shouldBehaveLikeERC721PausedToken (owner, [recipient, operator]) { + const firstTokenId = 1; + const mintedTokens = 1; + const mockData = '0x42'; + + describe('like a paused ERC721', function () { + beforeEach(async function () { + await this.token.mint(owner, firstTokenId, { from: owner }); + }); + + it('reverts when trying to approve', async function () { + await shouldFail.reverting(this.token.approve(recipient, firstTokenId, { from: owner })); + }); + + it('reverts when trying to setApprovalForAll', async function () { + await shouldFail.reverting(this.token.setApprovalForAll(operator, true, { from: owner })); + }); + + it('reverts when trying to transferFrom', async function () { + await shouldFail.reverting(this.token.transferFrom(owner, recipient, firstTokenId, { from: owner })); + }); + + it('reverts when trying to safeTransferFrom', async function () { + await shouldFail.reverting(this.token.safeTransferFrom(owner, recipient, firstTokenId, { from: owner })); + }); + + it('reverts when trying to safeTransferFrom with data', async function () { + await shouldFail.reverting( + send.transaction( + this.token, + 'safeTransferFrom', + 'address,address,uint256,bytes', + [owner, recipient, firstTokenId, mockData], + { from: owner } + ) + ); + }); + + describe('getApproved', function () { + it('returns approved address', async function () { + const approvedAccount = await this.token.getApproved(firstTokenId); + approvedAccount.should.be.equal(ZERO_ADDRESS); + }); + }); + + describe('balanceOf', function () { + it('returns the amount of tokens owned by the given address', async function () { + const balance = await this.token.balanceOf(owner); + balance.should.be.bignumber.equal(mintedTokens); + }); + }); + + describe('ownerOf', function () { + it('returns the amount of tokens owned by the given address', async function () { + const ownerOfToken = await this.token.ownerOf(firstTokenId); + ownerOfToken.should.be.equal(owner); + }); + }); + + describe('exists', function () { + it('should return token existance', async function () { + const result = await this.token.exists(firstTokenId); + result.should.eq(true); + }); + }); + + describe('isApprovedForAll', function () { + it('returns the approval of the operator', async function () { + const isApproved = await this.token.isApprovedForAll(owner, operator); + isApproved.should.eq(false); + }); + }); + }); +} + +module.exports = { + shouldBehaveLikeERC721PausedToken, +}; diff --git a/node_modules/openzeppelin-solidity/test/utils/Address.test.js b/node_modules/openzeppelin-solidity/test/utils/Address.test.js new file mode 100644 index 0000000..23c2b1d --- /dev/null +++ b/node_modules/openzeppelin-solidity/test/utils/Address.test.js @@ -0,0 +1,19 @@ +const AddressImpl = artifacts.require('AddressImpl'); +const SimpleToken = artifacts.require('SimpleToken'); + +require('../helpers/setup'); + +contract('Address', function ([_, anyone]) { + beforeEach(async function () { + this.mock = await AddressImpl.new(); + }); + + it('should return false for account address', async function () { + (await this.mock.isContract(anyone)).should.equal(false); + }); + + it('should return true for contract address', async function () { + const contract = await SimpleToken.new(); + (await this.mock.isContract(contract.address)).should.equal(true); + }); +}); diff --git a/node_modules/openzeppelin-solidity/test/utils/Arrays.test.js b/node_modules/openzeppelin-solidity/test/utils/Arrays.test.js new file mode 100644 index 0000000..1c9bfdf --- /dev/null +++ b/node_modules/openzeppelin-solidity/test/utils/Arrays.test.js @@ -0,0 +1,83 @@ +const ArraysImpl = artifacts.require('ArraysImpl'); + +require('../helpers/setup'); + +contract('Arrays', function () { + context('Even number of elements', function () { + const EVEN_ELEMENTS_ARRAY = [11, 12, 13, 14, 15, 16, 17, 18, 19, 20]; + + beforeEach(async function () { + this.arrays = await ArraysImpl.new(EVEN_ELEMENTS_ARRAY); + }); + + it('should return correct index for the basic case', async function () { + (await this.arrays.findUpperBound(16)).should.be.bignumber.equal(5); + }); + + it('should return 0 for the first element', async function () { + (await this.arrays.findUpperBound(11)).should.be.bignumber.equal(0); + }); + + it('should return index of the last element', async function () { + (await this.arrays.findUpperBound(20)).should.be.bignumber.equal(9); + }); + + it('should return first index after last element if searched value is over the upper boundary', async function () { + (await this.arrays.findUpperBound(32)).should.be.bignumber.equal(10); + }); + + it('should return 0 for the element under the lower boundary', async function () { + (await this.arrays.findUpperBound(2)).should.be.bignumber.equal(0); + }); + }); + + context('Odd number of elements', function () { + const ODD_ELEMENTS_ARRAY = [11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21]; + + beforeEach(async function () { + this.arrays = await ArraysImpl.new(ODD_ELEMENTS_ARRAY); + }); + + it('should return correct index for the basic case', async function () { + (await this.arrays.findUpperBound(16)).should.be.bignumber.equal(5); + }); + + it('should return 0 for the first element', async function () { + (await this.arrays.findUpperBound(11)).should.be.bignumber.equal(0); + }); + + it('should return index of the last element', async function () { + (await this.arrays.findUpperBound(21)).should.be.bignumber.equal(10); + }); + + it('should return first index after last element if searched value is over the upper boundary', async function () { + (await this.arrays.findUpperBound(32)).should.be.bignumber.equal(11); + }); + + it('should return 0 for the element under the lower boundary', async function () { + (await this.arrays.findUpperBound(2)).should.be.bignumber.equal(0); + }); + }); + + context('Array with gap', function () { + const WITH_GAP_ARRAY = [11, 12, 13, 14, 15, 20, 21, 22, 23, 24]; + + beforeEach(async function () { + this.arrays = await ArraysImpl.new(WITH_GAP_ARRAY); + }); + + it('should return index of first element in next filled range', async function () { + (await this.arrays.findUpperBound(17)).should.be.bignumber.equal(5); + }); + }); + + context('Empty array', function () { + beforeEach(async function () { + this.arrays = await ArraysImpl.new([]); + }); + + it('should always return 0 for empty array', async function () { + (await this.arrays.findUpperBound(10)).should.be.bignumber.equal(0); + }); + }); +}); diff --git a/node_modules/openzeppelin-solidity/test/utils/ReentrancyGuard.test.js b/node_modules/openzeppelin-solidity/test/utils/ReentrancyGuard.test.js new file mode 100644 index 0000000..c6da57a --- /dev/null +++ b/node_modules/openzeppelin-solidity/test/utils/ReentrancyGuard.test.js @@ -0,0 +1,29 @@ +const shouldFail = require('../helpers/shouldFail'); +const ReentrancyMock = artifacts.require('ReentrancyMock'); +const ReentrancyAttack = artifacts.require('ReentrancyAttack'); + +require('../helpers/setup'); + +contract('ReentrancyGuard', function () { + beforeEach(async function () { + this.reentrancyMock = await ReentrancyMock.new(); + (await this.reentrancyMock.counter()).should.be.bignumber.equal(0); + }); + + it('should not allow remote callback', async function () { + const attacker = await ReentrancyAttack.new(); + await shouldFail.reverting(this.reentrancyMock.countAndCall(attacker.address)); + }); + + // The following are more side-effects than intended behavior: + // I put them here as documentation, and to monitor any changes + // in the side-effects. + + it('should not allow local recursion', async function () { + await shouldFail.reverting(this.reentrancyMock.countLocalRecursive(10)); + }); + + it('should not allow indirect local recursion', async function () { + await shouldFail.reverting(this.reentrancyMock.countThisRecursive(10)); + }); +}); diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..66c4c3a --- /dev/null +++ b/package-lock.json @@ -0,0 +1,13 @@ +{ + "name": "drizzle-box", + "version": "1.0.0", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "openzeppelin-solidity": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/openzeppelin-solidity/-/openzeppelin-solidity-2.1.1.tgz", + "integrity": "sha512-kvVI/2n3oYfVYP53rUw+q6QNPlorwYRFaGu/Zs+TWFw2tKlnrz7UXh0UTWYd3Sfbq6eOo4XXnGv4bgcKguOrWg==" + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..f3a6581 --- /dev/null +++ b/package.json @@ -0,0 +1,26 @@ +{ + "name": "drizzle-box", + "version": "1.0.0", + "description": "", + "main": "truffle-config.js", + "directories": { + "test": "test" + }, + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/truffle-box/drizzle-box.git" + }, + "keywords": [], + "author": "", + "license": "ISC", + "bugs": { + "url": "https://github.com/truffle-box/drizzle-box/issues" + }, + "homepage": "https://github.com/truffle-box/drizzle-box#readme", + "dependencies": { + "openzeppelin-solidity": "^2.1.1" + } +} diff --git a/truffle-config.js b/truffle-config.js new file mode 100644 index 0000000..c4852fb --- /dev/null +++ b/truffle-config.js @@ -0,0 +1,47 @@ +const path = require("path") + +module.exports = { + contracts_build_directory: path.join(__dirname, "app/src/contracts"), + migrations_directory: "./migrations", + networks: { + development: { + host: "localhost", + port: 8545, + gas: 8000000, + gasPrice: 1100000000, + network_id: "*" // Match any network id + }, + ropsten: { + network_id: 3, + host: "localhost", + port: 8545, + gas: 8000000, + gasPrice: 1100000000, + }, + rinkeby: { + network_id: 4, + host: "localhost", + port: 8545, + gas: 8000000, + gasPrice: 1100000000, + }, + goerli: { + network_id: 5, + host: "localhost", + port: 8545, + gas: 8000000, + gasPrice: 1100000000, + } + }, + compilers: { + solc: { + version: "0.5.2", + settings: { + optimizer: { + enabled: true, + runs: 500 + } + } + } + } +}; From dc642b860a3dadd71e0a24a42ec40799379fff02 Mon Sep 17 00:00:00 2001 From: tobyjaguar Date: Tue, 30 Apr 2019 21:11:13 -0400 Subject: [PATCH 2/3] update README and LoadingContainer --- README.md | 3 +++ app/src/components/LoadingContainer/index.js | 8 +++++--- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 64f68ef..6368982 100644 --- a/README.md +++ b/README.md @@ -5,6 +5,9 @@ SmartPiggies An open source standard for a free peer-to-peer global derivatives market. - +### The initial work for this submission was done in this [repo](https://github.com/smartpiggies/amerigo/tree/master/explorer2): please view it for proof of commits to the work process. + + SmartPiggies are non-fungible digital contracts that provide their owners with protection against undesirable changes in the price of any asset, product, or service. They also have a native self-auctioning mechanism that allows them to globally market themselves, eliminating the need for exchanges. Historically, centralized authorities and rent collecting intermediaries have been critical due the trust and guarantees they inject into modern financial commitments. Today, with the guarantees provided by the Ethereum network and recent innovations provided by the global community, it is now possible to create robust programmable digital assets with linked to the real world, yet have no dependencies on centralized authorities or intermediaries. diff --git a/app/src/components/LoadingContainer/index.js b/app/src/components/LoadingContainer/index.js index b2f3a5e..66aa2de 100644 --- a/app/src/components/LoadingContainer/index.js +++ b/app/src/components/LoadingContainer/index.js @@ -2,7 +2,7 @@ import { drizzleConnect } from 'drizzle-react' import React, { Children, Component } from 'react' import PropTypes from 'prop-types' -import logo from '../../Assets/Logo/logo.png' +import logo from '../../Assets/Logo/piggieface_02.png' /* * Create component. */ @@ -56,8 +56,10 @@ class LoadingContainer extends Component {
SmartPiggies-logo
-

Loading SmartPiggies

-

Loading dapp...

+

Loading Amerigo...on Goerli

+

Amerigo, the SmartPiggies explorer is currently running on the Goerli network.

+

If this page hangs, make sure the browser has access to the Goerli testnet.

+

[switch to the Goerli network in MetaMask.]

) From 4804c6379be31a3544b71d7144c0194bcb57da6d Mon Sep 17 00:00:00 2001 From: tobyjaguar Date: Tue, 30 Apr 2019 21:15:29 -0400 Subject: [PATCH 3/3] add build version link --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 6368982..af1b936 100644 --- a/README.md +++ b/README.md @@ -7,6 +7,7 @@ An open source standard for a free peer-to-peer global derivatives market. ### The initial work for this submission was done in this [repo](https://github.com/smartpiggies/amerigo/tree/master/explorer2): please view it for proof of commits to the work process. +A hosted version of this dapp can be viewed at [explorer.smartpiggies.com](https://explorer.smartpiggies.com). SmartPiggies are non-fungible digital contracts that provide their owners with protection against undesirable changes in the price of any asset, product, or service. They also have a native self-auctioning mechanism that allows them to globally market themselves, eliminating the need for exchanges.